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

1from wikitextprocessor import LevelNode, NodeKind, TemplateNode 

2 

3from ...page import clean_node 

4from ...wxr_context import WiktextractContext 

5from ..share import set_sound_file_url_fields 

6from .models import Sound, WordEntry 

7 

8 

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) 

21 

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) 

24 

25 

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) 

36 

37 

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) 

48 

49 

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)) 

60 

61 

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