Repository: BoboTiG/ebook-reader-dict

Issue:
[EL] Support "ετικ" and "γρ" templates
- Wiktionary page: https://el.wiktionary.org/w/index.php?title=%CE%B1%CE%BC%CE%AD%CF%81%CE%B5%CF%85%CF%84%CE%BF%CF%82&action=edit
- Model link: https://el.wiktionary.org/wiki/%CE%A0%CF%81%CF%8C%CF%84%CF%85%CF%80%CE%BF:%CE%B5%CF%84%CE%B9%CE%BA
- https://el.wiktionary.org/wiki/%CE%A0%CF%81%CF%8C%CF%84%CF%85%CF%80%CE%BF:%CE%B3%CF%81

<!-- POLAR PLEDGE BADGE START -->
## Upvote & Fund

- We're using [Polar.sh](https://polar.sh/tiger-222) so you can upvote and help fund this issue.
- We receive the funding once the issue is completed & confirmed by you.
- Thank you in advance for helping prioritize & fund our backlog.

<a href="https://polar.sh/BoboTiG/ebook-reader-dict/issues/2001">
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://polar.sh/api/github/BoboTiG/ebook-reader-dict/issues/2001/pledge.svg?darkmode=1">
  <img alt="Fund with Polar" src="https://polar.sh/api/github/BoboTiG/ebook-reader-dict/issues/2001/pledge.svg">
</picture>
</a>
<!-- POLAR PLEDGE BADGE END -->


Discussion:

Patch:
diff --git a/wikidict/lang/el/__init__.py b/wikidict/lang/el/__init__.py
index 3c910338..39c7d3f6 100644
--- a/wikidict/lang/el/__init__.py
+++ b/wikidict/lang/el/__init__.py
@@ -77,6 +77,8 @@
 templates_multi: dict[str, str] = {
     # {{resize|Βικιλεξικό|140}}
     "resize": "f'<span style=\"font-size:{parts[2]}%;\">{parts[1]}</span>'",
+    # {{ετικ|γαστρονομία|τρόφιμα|γλυκά}}
+    "ετικ": "'(' + ', '.join(italic(p) for p in parts[1:]) + ')'",
 }
 
 
@@ -254,8 +256,23 @@ def last_template_handler(template: tuple[str, ...], locale: str, word: str = ""
 
         >>> last_template_handler(["ετυμ", "ine-pro"], "el")
         'πρωτοϊνδοευρωπαϊκή'
+
+        >>> last_template_handler(["γρ", "τραπεζομάντιλο"], "el")
+        '<i>άλλη γραφή του</i> <b>τραπεζομάντιλο</b>'
+        >>> last_template_handler(["γρ", "ελαιόδενδρο", "μορφή"], "el")
+        '<i>άλλη μορφή του</i> <b>ελαιόδενδρο</b>'
+        >>> last_template_handler(["γρ", "ελαιόδενδρο", "πολυ", "εμφ=ελαιόδενδρο(ν)"], "el")
+        '<i>πολυτονική γραφή του</i> <b>ελαιόδενδρο(ν)</b>'
+        >>> last_template_handler(["γρ", "ποιέω", "ασυν", "grc"], "el")
+        '<i>ασυναίρετη μορφή του</i> <b>ποιέω</b>'
+        >>> last_template_handler(["γρ", "ποιέω", "ασυν", "grc", "εμφ=ποι-έω"], "el")
+        '<i>ασυναίρετη μορφή του</i> <b>ποι-έω</b>'
+        >>> last_template_handler(["γρ", "colour", "", "en"], "el")
+        '<i>άλλη γραφή του</i> <b>colour</b>'
+        >>> last_template_handler(["γρ", "colour", "freestyle text", "en"], "el")
+        '<i>freestyle text</i> <b>colour</b>'
     """
-    from ...user_functions import italic
+    from ...user_functions import italic, strong
     from ..defaults import last_template_handler as default
     from .langs import langs
 
@@ -340,4 +357,22 @@ def last_template_handler(template: tuple[str, ...], locale: str, word: str = ""
         text = italic("ουσιαστικοποιημένο")
         return text if data["0"] else f"({text})"
 
+    if tpl == "γρ":
+        desc = parts[1] if len(parts) > 1 else ""
+        desc = {
+            "": "άλλη γραφή του",
+            "απλοπ": "απλοποιημένη γραφή του",
+            "μη απλοπ": "απλοποιημένη γραφή του",
+            "ασυν": "ασυναίρετη μορφή του",
+            "ετυμ": "ετυμολογική γραφή του",
+            "μονο": "μονοτονική γραφή του",
+            "μορφή": "άλλη μορφή του",
+            "πολυ": "πολυτονική γραφή του",
+            "πολ": "πολυτονική γραφή του",
+            "παρωχ": "παρωχημένη γραφή του",
+            "σνρ": "συνηρημένη μορφή του",
+            "συνων": "συνώνυμο του",
+        }.get(desc, desc)
+        return f"{italic(desc)} {strong(data['εμφ'] or parts[0])}"
+
     return default(template, locale, word)


Test patch:
diff --git a/tests/test_el.py b/tests/test_el.py
index 6dc03c3b..5592c2bf 100644
--- a/tests/test_el.py
+++ b/tests/test_el.py
@@ -47,7 +47,10 @@ def test_parse_word(
 
 @pytest.mark.parametrize(
     "wikicode, expected",
-    [("{{resize|Βικιλεξικό|140}}", '<span style="font-size:140%;">Βικιλεξικό</span>')],
+    [
+        ("{{resize|Βικιλεξικό|140}}", '<span style="font-size:140%;">Βικιλεξικό</span>'),
+        ("{{ετικ|γαστρονομία|τρόφιμα|γλυκά}}", "(<i>γαστρονομία</i>, <i>τρόφιμα</i>, <i>γλυκά</i>)"),
+    ],
 )
 def test_process_templates(wikicode: str, expected: str) -> None:
     """Test templates handling."""