From 4c3b4caa20aba3a6ceecac4bd1af90240976990b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20Schoentgen?= Date: Mon, 23 Sep 2024 23:27:18 +0200 Subject: [PATCH] [NO] More templates support --- tests/data/no/aberrasjon.wiki | 49 +++++++++++++++++++++++++++ tests/test_no.py | 18 +++++++++- wikidict/lang/no/__init__.py | 26 ++++++++++++-- wikidict/lang/no/template_handlers.py | 15 ++++++-- wikidict/render.py | 4 ++- 5 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 tests/data/no/aberrasjon.wiki diff --git a/tests/data/no/aberrasjon.wiki b/tests/data/no/aberrasjon.wiki new file mode 100644 index 00000000..2bd98589 --- /dev/null +++ b/tests/data/no/aberrasjon.wiki @@ -0,0 +1,49 @@ +==Norsk== +{{wikipediaartikkel}} +===Substantiv=== +{{no-sub|m}} + +#avvik, avvikelse +#{{astronomi|no}} avvik i en stjernes avbildede posisjon relativ til dens sanne posisjon. +#{{optikk|no}} avbildningsfeil i [[linse]]r og [[speil]]. +#{{biologi|no}} endring i et kromosom mens celledeling pågår. + +====Etymologi==== +* Fra {{etyl|la|no}} {{term|aberratio|aberrātiō|lindring, avvikelse|lang=la}} [http://dictionary.reference.com/browse/aberration Aberration hos Dictionary.com], fra {{term|aberro|aberrō|gå unna/bort, gå vill|lang=la}}, fra {{term|ab||bort|lang=la}} + {{term|erro|errō|vandre/gå|lang=la}}{{reference-book | last = Dobbie | first = Elliott K. | coauthors = Dunmore, C. William, et al. | editor = Barnhart, Robert K.| title = Chambers Dictionary of Etymology | origyear = 1998 | year = 2004 | publisher = Chambers Harrap Publishers Ltd | location = Edinburgh, Scotland | isbn =0550142304 | pages = 2}}. +* Se [[aberrate]]. + +====Uttale==== +{{lyd|LL-Q9043 (nor)-Teodor605-aberrasjon.wav|språk=no|Lyd (Oslouttale)}} +{{uttale mangler|språk=no}} + +====Grammatikk==== +{{no-sub-m1|aberrasjon}} +{{ordbank|OK}} + +====Oversettelser==== +{{overs-topp|avvik}} +* {{overs|da|aberration|c}} +* {{overs|en|aberration|c}} +* {{overs-mangler|fi}} +* {{overs|fr|aberration|f}} +* {{overs|it|aberrazione|f}} +{{overs-midt}} +* {{overs-mangler|ru}} +* {{overs-mangler|es}} +* {{overs|sv|aberration|c}} +* {{overs|de|Aberration|f}} +{{overs-bunn}} +{{overs-topp|astronomi}} +* {{overs|fr|aberration|f}} +{{overs-midt}} +{{overs-bunn}} +{{overs-topp|optikk}} +* {{overs|fr|aberration|f}} +{{overs-midt}} +* {{overs|sv|aberration|c}} +{{overs-bunn}} + +===Referanser=== + +* {{R:Bokmålsordboka-Nynorskordboka}} +* {{R:NAOB}} diff --git a/tests/test_no.py b/tests/test_no.py index 8949fc0e..73434bba 100644 --- a/tests/test_no.py +++ b/tests/test_no.py @@ -10,6 +10,22 @@ @pytest.mark.parametrize( "word, pronunciations, genders, etymology, definitions, variants", [ + ( + "aberrasjon", + [], + ["m"], + [ + "Fra latin aberrātiō («lindring, avvikelse») , fra aberrō («gå unna/bort, gå vill»), fra ab («bort») + errō («vandre/gå»).", + "Se aberrate.", + ], + [ + "avvik, avvikelse", + "(astronomi) avvik i en stjernes avbildede posisjon relativ til dens sanne posisjon.", + "(optikk) avbildningsfeil i linser og speil.", + "(biologi) endring i et kromosom mens celledeling pågår.", + ], + [], + ), ( "bare", [], @@ -108,7 +124,7 @@ def test_parse_word( ), ( "{{tidligere skrivemåte|no|naturlig tall}}", - "tidligere skrivemåte av naturlig tall", + "tidligere skriveform av naturlig tall", ), ("{{urspråk|germansk|daigjōn}}", "urgermansk *daigjōn"), ("{{vokabular|overført}}", "(overført)"), diff --git a/wikidict/lang/no/__init__.py b/wikidict/lang/no/__init__.py index e21cf916..a4c2c031 100644 --- a/wikidict/lang/no/__init__.py +++ b/wikidict/lang/no/__init__.py @@ -55,6 +55,9 @@ "mangler definisjon", "mangler etymologi", "norm", + "o-begge/båe", + "o-nå/nu/no", + "o-hvem/kven", "suffiks/oversikt", "trenger referanse", ) @@ -62,9 +65,12 @@ # Templates that will be completed/replaced using italic style. templates_italic = { **labels, + "ikkekomp": "ingen komparativ eller superlativ", "internett": "Internett", "Internett": "Internett", + "klær": "klesplagg", "målenhet": "måleenhet", + "militær": "militært", } @@ -78,6 +84,10 @@ "feilstaving av": 'f"Feilstaving av {parts[1]}."', # {{l|lt|duktė}} "l": "parts[-1]", + # {{m}} + "m": "italic(parts[0])", + # {{n}} + "n": "italic(parts[0])", # {{opphav|norrønt|språk=no} "opphav": "parts[1]", # {{prefiks|a|biotisk|språk=no}} @@ -91,7 +101,7 @@ # {{tidligere skriveform|no|kunstnarleg}} "tidligere skriveform": "f\"{italic('tidligere skriveform av')} {strong(parts[-1])}\"", # {{tidligere skrivemåte|no|naturlig tall}} - "tidligere skrivemåte": "f\"{italic('tidligere skrivemåte av')} {strong(parts[-1])}\"", + "tidligere skrivemåte": "f\"{italic('tidligere skriveform av')} {strong(parts[-1])}\"", # {{vokabular|overført}} "vokabular": "term(parts[1])", # @@ -108,7 +118,15 @@ } # Templates that will be completed/replaced using custom text. -templates_other = {"l.": "latin"} +templates_other = { + "it": "italiensk", + "l.": "latin", + "L.": "latin", + "la": "latin", + "lty.": "nedertysk/lavtysk", + "nn": "nynorsk", + "tr": "tyrkisk", +} # Release content on GitHub # https://github.com/BoboTiG/ebook-reader-dict/releases/tag/no @@ -191,6 +209,8 @@ def last_template_handler(template: tuple[str, ...], locale: str, word: str = "" >>> last_template_handler(["kontekst", "fobi", "utellelig", "kat=no:Fobier", "kat2=no:Masseord"], "no") '(fobi, utellelig)' + >>> last_template_handler(["kontekst", "jus", "utellelig", "kat=no:Jus", "kat2=no:Masseord", "nesten alltid i ubestemt form", "foreldet, nå kun i uttrykket «tort og svie»", "språk=no"], "no") + '(jus, utellelig, nesten alltid i ubestemt form)' >>> last_template_handler(["tema", "matematikk", "fysikk", "språk=no"], "no") '(matematikk, fysikk)' @@ -216,7 +236,7 @@ def last_template_handler(template: tuple[str, ...], locale: str, word: str = "" case "etyl": return langs.get(parts[0], parts[0]) case "kontekst" | "tema": - return term(concat(parts, sep=", ")) + return term(concat(parts[:3], sep=", ")) if italic_tpl := lookup_italic(tpl, locale, empty_default=True): return term(italic_tpl) diff --git a/wikidict/lang/no/template_handlers.py b/wikidict/lang/no/template_handlers.py index 71c01aa7..4582256f 100644 --- a/wikidict/lang/no/template_handlers.py +++ b/wikidict/lang/no/template_handlers.py @@ -18,11 +18,20 @@ def render_avledet(tpl: str, parts: list[str], data: defaultdict[str, str], word 'latin approbatio («godkjennelse»)' >>> render_avledet("avledet", ["la", "no", "Februarius", "Februārius"], defaultdict(str)) 'latin Februārius' + >>> render_avledet("avledet", ["grc", "no", "σχηματικός", "", "som hører til månefaser"], defaultdict(str, {"tr":"skhematikos"})) + 'gammelgresk σχηματικός (skhematikos, «som hører til månefaser»)' """ - trad = parts[3] if len(parts) > 3 and parts[3] else parts[2] - phrase = f"{langs.get(parts[0], parts[0])} {italic(trad)}" + in_parenthesis = [] + if tr := data["tr"]: + in_parenthesis.append(italic(tr)) if len(parts) > 4: - phrase += f" («{parts[4]}»)" + in_parenthesis.append(f"«{parts[4]}»") + + phrase = f"{langs.get(parts[0], parts[0])} " + trad = parts[3] if len(parts) > 3 and parts[3] else parts[2] + phrase += trad if tr else italic(trad) + if in_parenthesis: + phrase += f" ({', '.join(in_parenthesis)})" return phrase diff --git a/wikidict/render.py b/wikidict/render.py index 812a0d4a..06fa5ede 100644 --- a/wikidict/render.py +++ b/wikidict/render.py @@ -159,7 +159,7 @@ def get_items(patterns: tuple[str, ...], *, skip: tuple[str, ...] | None = None) items = [parsed_section.contents] match locale: - case "da" | "no": + case "da": items = get_items(("#", ":")) case "de": items = get_items((":",)) @@ -191,6 +191,8 @@ def get_items(patterns: tuple[str, ...], *, skip: tuple[str, ...] | None = None) return definitions case "it": items = get_items(("",), skip=("=== {{etim",)) + case "no": + items = get_items(("#", ":", r"\*")) case "pt": items = get_items((r"[:]", r"\*")) case "ro":