Skip to content

Commit

Permalink
[NO] More templates support
Browse files Browse the repository at this point in the history
  • Loading branch information
BoboTiG committed Sep 23, 2024
1 parent 25bbd70 commit 4c3b4ca
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 8 deletions.
49 changes: 49 additions & 0 deletions tests/data/no/aberrasjon.wiki
Original file line number Diff line number Diff line change
@@ -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}} <ref>[http://dictionary.reference.com/browse/aberration Aberration hos Dictionary.com]</ref>, fra {{term|aberro|aberrō|gå unna/bort, gå vill|lang=la}}, fra {{term|ab||bort|lang=la}} + {{term|erro|errō|vandre/gå|lang=la}}<ref>{{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}}</ref>.
* 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===
<references/>
* {{R:Bokmålsordboka-Nynorskordboka}}
* {{R:NAOB}}
18 changes: 17 additions & 1 deletion tests/test_no.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,22 @@
@pytest.mark.parametrize(
"word, pronunciations, genders, etymology, definitions, variants",
[
(
"aberrasjon",
[],
["m"],
[
"Fra latin <i>aberrātiō</i> («lindring, avvikelse») , fra <i>aberrō</i> («gå unna/bort, gå vill»), fra <i>ab</i> («bort») + <i>errō</i> («vandre/gå»).",
"Se aberrate.",
],
[
"avvik, avvikelse",
"<i>(astronomi)</i> avvik i en stjernes avbildede posisjon relativ til dens sanne posisjon.",
"<i>(optikk)</i> avbildningsfeil i linser og speil.",
"<i>(biologi)</i> endring i et kromosom mens celledeling pågår.",
],
[],
),
(
"bare",
[],
Expand Down Expand Up @@ -108,7 +124,7 @@ def test_parse_word(
),
(
"{{tidligere skrivemåte|no|naturlig tall}}",
"<i>tidligere skrivemåte av</i> <b>naturlig tall</b>",
"<i>tidligere skriveform av</i> <b>naturlig tall</b>",
),
("{{urspråk|germansk|daigjōn}}", "urgermansk *daigjōn"),
("{{vokabular|overført}}", "<i>(overført)</i>"),
Expand Down
26 changes: 23 additions & 3 deletions wikidict/lang/no/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,22 @@
"mangler definisjon",
"mangler etymologi",
"norm",
"o-begge/båe",
"o-nå/nu/no",
"o-hvem/kven",
"suffiks/oversikt",
"trenger referanse",
)

# 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",
}


Expand All @@ -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}}
Expand All @@ -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])",
#
Expand All @@ -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
Expand Down Expand Up @@ -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")
'<i>(fobi, utellelig)</i>'
>>> 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")
'<i>(jus, utellelig, nesten alltid i ubestemt form)</i>'
>>> last_template_handler(["tema", "matematikk", "fysikk", "språk=no"], "no")
'<i>(matematikk, fysikk)</i>'
Expand All @@ -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)
Expand Down
15 changes: 12 additions & 3 deletions wikidict/lang/no/template_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,20 @@ def render_avledet(tpl: str, parts: list[str], data: defaultdict[str, str], word
'latin <i>approbatio</i> («godkjennelse»)'
>>> render_avledet("avledet", ["la", "no", "Februarius", "Februārius"], defaultdict(str))
'latin <i>Februārius</i>'
>>> render_avledet("avledet", ["grc", "no", "σχηματικός", "", "som hører til månefaser"], defaultdict(str, {"tr":"skhematikos"}))
'gammelgresk σχηματικός (<i>skhematikos</i>, «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


Expand Down
4 changes: 3 additions & 1 deletion wikidict/render.py
Original file line number Diff line number Diff line change
Expand Up @@ -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((":",))
Expand Down Expand Up @@ -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":
Expand Down

0 comments on commit 4c3b4ca

Please sign in to comment.