Repository: tatuylonen/wiktextract

Issue:
[ru] Adverbs
The tables for participles  (причастие) aren't being included in the JSON. Is it possible to do that? 
Examples: назначенный, приготовляемый, касающийся ...

![Image](https://github.com/user-attachments/assets/6b8d3813-3f3b-43c9-b861-1dbf122e6ee8)

Discussion:

Solution patch:
diff --git a/src/wiktextract/extractor/ru/inflection.py b/src/wiktextract/extractor/ru/inflection.py
index f3eddaee..dc2b6c2c 100644
--- a/src/wiktextract/extractor/ru/inflection.py
+++ b/src/wiktextract/extractor/ru/inflection.py
@@ -16,6 +16,9 @@ class TableHeader:
     span: int
 
 
+# Викисловарь:Шаблоны словоизменений
+
+
 def parse_html_forms_table(
     wxr: WiktextractContext, word_entry: WordEntry, table_tag: HTMLNode
 ):
@@ -42,6 +45,13 @@ def parse_html_forms_table(
         else:
             col_index = 0
             has_rowspan = False
+            for th_element in tr_element.find_html("th"):
+                header_text = ""
+                for header_link in th_element.find_child(NodeKind.LINK):
+                    header_text = clean_node(wxr, None, header_link)
+                header_span = int(th_element.attrs.get("rowspan", "1"))
+                row_headers.append(TableHeader(header_text, 0, header_span))
+
             for td_element in tr_element.find_html("td"):
                 if td_element.attrs.get("bgcolor") == "#EEF9FF":
                     # this is a td tag but contains header text
@@ -137,6 +147,10 @@ def parse_wikitext_forms_table(
         # tr tag could be after or inside table cell node: Шаблон:сущ cu (-а)
         for tr_tag in table_row.find_html_recursively("tr"):
             row_headers = []
+            has_th_tag = False
+            for th_tag in tr_tag.find_html("th"):
+                row_headers.append(clean_node(wxr, None, th_tag))
+                has_th_tag = True
             for td_index, td_tag in enumerate(tr_tag.find_html("td")):
                 if td_tag.contain_node(NodeKind.LINK):
                     for link_node in td_tag.find_child(NodeKind.LINK):
@@ -158,7 +172,7 @@ def parse_wikitext_forms_table(
                         clean_node(wxr, None, td_tag),
                         row_headers,
                         [] if "colspan" in td_tag.attrs else column_headers,
-                        td_index,
+                        td_index + 1 if has_th_tag else td_index,
                     )
 
 
diff --git a/src/wiktextract/extractor/ru/models.py b/src/wiktextract/extractor/ru/models.py
index b16eaffd..fa21a2f9 100644
--- a/src/wiktextract/extractor/ru/models.py
+++ b/src/wiktextract/extractor/ru/models.py
@@ -159,3 +159,4 @@ class WordEntry(BaseModelWrap):
     metagrams: list[Linkage] = []
     proverbs: list[Linkage] = []
     literal_meaning: str = ""
+    hyphenation: str = ""
diff --git a/src/wiktextract/extractor/ru/page.py b/src/wiktextract/extractor/ru/page.py
index 93dd8696..bd46df49 100644
--- a/src/wiktextract/extractor/ru/page.py
+++ b/src/wiktextract/extractor/ru/page.py
@@ -162,12 +162,18 @@ def extract_morphological_section(
                 "мест ru ",
                 "числ ru ",
                 "числ-",
+                "прич ru ",
+                "Фам ru ",
+                "падежи ",
             )
         ):
             for table_node in expanded_template.find_child(NodeKind.TABLE):
                 parse_wikitext_forms_table(wxr, page_data[-1], table_node)
             for table_tag in expanded_template.find_html("table"):
                 parse_html_forms_table(wxr, page_data[-1], table_tag)
+            page_data[-1].hyphenation = clean_node(
+                wxr, None, child_node.template_parameters.get("слоги", "")
+            )
 
         for node in expanded_template.children:
             node_text = clean_node(wxr, page_data[-1], node)


Test patch:
diff --git a/tests/test_ru_gloss.py b/tests/test_ru_gloss.py
index 46b071a9..3d9d08c9 100644
--- a/tests/test_ru_gloss.py
+++ b/tests/test_ru_gloss.py
@@ -133,6 +133,7 @@ class TestRUGloss(unittest.TestCase):
     def test_gloss_under_sounds_section(self):
         self.wxr.wtp.start_page("туп")
         self.wxr.wtp.add_page("Шаблон:-tt-", 10, "Татарский")
+        self.wxr.wtp.add_page("Шаблон:по слогам", 10, "туп")
         self.assertEqual(
             parse_page(
                 self.wxr,
@@ -148,6 +149,7 @@ class TestRUGloss(unittest.TestCase):
             ),
             [
                 {
+                    "hyphenation": "туп",
                     "lang": "Татарский",
                     "lang_code": "tt",
                     "word": "туп",
@@ -169,6 +171,11 @@ class TestRUGloss(unittest.TestCase):
             10,
             "[[глагол|Глагол]], [[несовершенный вид]], [[Категория:Русские лексемы]][[Категория:Русские глаголы]][[Категория:Русские глаголы несовершенного вида]] [[непереходный]][[Категория:Русские непереходные глаголы]],    тип спряжения по [[Викисловарь:Использование словаря Зализняка|классификации А.&#160;Зализняка]]&#160;—&#32;1a.      Соответствующий глагол совершенного вида&#160;—&#32;[[прыгнуть]].[[Категория:Глаголы в видовых парах]][[Категория:Глаголы, спряжение 1a]]",
         )
+        self.wxr.wtp.add_page(
+            "Шаблон:по-слогам",
+            10,
+            'пры́<span class="hyph" style="color:lightgreen;">-</span>гать',
+        )
         self.wxr.wtp.add_page("Шаблон:авиац.", 10, "авиац.")
         self.assertEqual(
             parse_page(
@@ -208,6 +215,7 @@ class TestRUGloss(unittest.TestCase):
                         }
                     ],
                     "tags": ["imperfective", "intransitive"],
+                    "hyphenation": "пры́-гать",
                 },
             ],
         )