Coverage for src/wiktextract/extractor/nl/sound.py: 96%
32 statements
« prev ^ index » next coverage.py v7.6.4, created at 2024-10-25 10:11 +0000
« prev ^ index » next coverage.py v7.6.4, created at 2024-10-25 10:11 +0000
1from wikitextprocessor import LevelNode, NodeKind, TemplateNode
3from ...page import clean_node
4from ...wxr_context import WiktextractContext
5from ..share import set_sound_file_url_fields
6from .models import Sound, WordEntry
9def extract_sound_section(
10 wxr: WiktextractContext, word_entry: WordEntry, level_node: LevelNode
11) -> None:
12 for list_item in level_node.find_child_recursively(NodeKind.LIST_ITEM):
13 sound = Sound()
14 for t_node in list_item.find_child(NodeKind.TEMPLATE):
15 if t_node.template_name == "audio":
16 extract_audio_template(wxr, word_entry, sound, t_node)
17 elif t_node.template_name.startswith("IPA"):
18 extract_ipa_template(wxr, word_entry, sound, t_node)
19 elif t_node.template_name == "pron-reg":
20 extract_pron_reg_template(wxr, sound, t_node)
22 if sound.ipa != "" or sound.audio != "": 22 ↛ 12line 22 didn't jump to line 12 because the condition on line 22 was always true
23 word_entry.sounds.append(sound)
26def extract_audio_template(
27 wxr: WiktextractContext,
28 word_entry: WordEntry,
29 sound: Sound,
30 t_node: TemplateNode,
31) -> None:
32 # https://nl.wiktionary.org/wiki/Sjabloon:audio
33 audio_file = clean_node(wxr, None, t_node.template_parameters.get(1, ""))
34 set_sound_file_url_fields(wxr, audio_file, sound)
35 clean_node(wxr, word_entry, t_node)
38def extract_ipa_template(
39 wxr: WiktextractContext,
40 word_entry: WordEntry,
41 sound: Sound,
42 t_node: TemplateNode,
43) -> None:
44 # https://nl.wiktionary.org/wiki/Sjabloon:IPA-nl-standaard
45 # https://nl.wiktionary.org/wiki/Sjabloon:IPA
46 sound.ipa = clean_node(wxr, None, t_node.template_parameters.get(1, ""))
47 clean_node(wxr, word_entry, t_node)
50def extract_pron_reg_template(
51 wxr: WiktextractContext, sound: Sound, t_node: TemplateNode
52) -> None:
53 # location tag
54 # https://nl.wiktionary.org/wiki/Sjabloon:pron-reg
55 expanded_node = wxr.wtp.parse(
56 wxr.wtp.node_to_wikitext(t_node), expand_all=True
57 )
58 for link_node in expanded_node.find_child_recursively(NodeKind.LINK):
59 sound.raw_tags.append(clean_node(wxr, None, link_node))
62def extract_hyphenation_section(
63 wxr: WiktextractContext, word_entry: WordEntry, level_node: LevelNode
64) -> None:
65 for list_item in level_node.find_child_recursively(NodeKind.LIST_ITEM): 65 ↛ exitline 65 didn't return from function 'extract_hyphenation_section' because the loop on line 65 didn't complete
66 word_entry.hyphenation = clean_node(wxr, None, list_item.children)
67 break