Coverage for src/wiktextract/extractor/fr/descendant.py: 87%
38 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-17 05:52 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-17 05:52 +0000
1from wikitextprocessor import LevelNode, NodeKind, TemplateNode, WikiNode
3from ...page import clean_node
4from ...wxr_context import WiktextractContext
5from .models import Descendant, Linkage, WordEntry
8def extract_desc_section(
9 wxr: WiktextractContext, word_entry: WordEntry, level_node: LevelNode
10):
11 desc_list = []
12 for list_node in level_node.find_child(NodeKind.LIST):
13 for list_item in list_node.find_child(NodeKind.LIST_ITEM):
14 desc_list.extend(extract_desc_list_item(wxr, list_item, []))
15 word_entry.descendants.extend(desc_list)
18def extract_desc_list_item(
19 wxr: WiktextractContext, list_item: WikiNode, parent_data: list[Descendant]
20) -> list[Descendant]:
21 lang_code = "unknown"
22 lang_name = "unknown"
23 desc_list = []
24 for node in list_item.children:
25 if isinstance(node, TemplateNode) and node.template_name == "L":
26 lang_code = node.template_parameters.get(1)
27 lang_name = clean_node(wxr, None, node)
28 elif isinstance(node, WikiNode) and node.kind == NodeKind.LINK:
29 word = clean_node(wxr, None, node)
30 if word != "": 30 ↛ 24line 30 didn't jump to line 24 because the condition on line 30 was always true
31 desc_list.append(
32 Descendant(lang_code=lang_code, lang=lang_name, word=word)
33 )
34 elif isinstance(node, TemplateNode) and node.template_name in [
35 "l",
36 "lien",
37 "zh-lien",
38 "zh-lien-t",
39 ]:
40 from .linkage import process_linkage_template
42 l_data = Linkage(word="")
43 process_linkage_template(wxr, node, l_data)
44 desc_list.append(
45 Descendant(
46 lang=lang_name,
47 lang_code=lang_code,
48 word=l_data.word,
49 roman=l_data.roman,
50 ruby=l_data.ruby,
51 tags=l_data.tags,
52 raw_tags=l_data.raw_tags,
53 )
54 )
55 elif isinstance(node, TemplateNode) and node.template_name == "zh-l": 55 ↛ 56line 55 didn't jump to line 56 because the condition on line 55 was never true
56 from .linkage import extract_zh_l_template
58 l_list = extract_zh_l_template(wxr, node)
59 for l_data in l_list:
60 desc_list.append(
61 Descendant(
62 lang=lang_name,
63 lang_code=lang_code,
64 word=l_data.word,
65 roman=l_data.roman,
66 tags=l_data.tags,
67 raw_tags=l_data.raw_tags,
68 )
69 )
70 elif isinstance(node, WikiNode) and node.kind == NodeKind.LIST:
71 for child_list_item in node.find_child(NodeKind.LIST_ITEM):
72 extract_desc_list_item(wxr, child_list_item, desc_list)
74 for p_desc in parent_data:
75 p_desc.descendants.extend(desc_list)
76 return desc_list