Coverage for src/wiktextract/extractor/pl/note.py: 93%
34 statements
« prev ^ index » next coverage.py v7.9.0, created at 2025-06-13 07:43 +0000
« prev ^ index » next coverage.py v7.9.0, created at 2025-06-13 07:43 +0000
1import re
2from typing import Optional
4from wikitextprocessor import NodeKind, WikiNode
6from ...page import clean_node
7from ...wxr_context import WiktextractContext
8from .models import Note, WordEntry
11def extract_note_section(
12 wxr: WiktextractContext,
13 page_data: list[WordEntry],
14 base_data: WordEntry,
15 level_node: WikiNode,
16) -> None:
17 from .page import match_sense_index
19 notes = []
20 for list_item in level_node.find_child_recursively(NodeKind.LIST_ITEM):
21 note = process_note_list_item(wxr, list_item)
22 if note is not None: 22 ↛ 20line 22 didn't jump to line 20 because the condition on line 22 was always true
23 notes.append(note)
24 for data in page_data:
25 if data.lang_code == base_data.lang_code: 25 ↛ 24line 25 didn't jump to line 24 because the condition on line 25 was always true
26 for sense in data.senses:
27 for note in notes:
28 if note.sense_index == "" or match_sense_index(
29 note.sense_index, sense
30 ):
31 sense.notes.append(note.text)
34def process_note_list_item(
35 wxr: WiktextractContext, list_item: WikiNode
36) -> Optional[Note]:
37 sense_index = ""
38 note_nodes = []
39 for node in list_item.children:
40 if isinstance(node, str):
41 m = re.search(r"\([\d\s,-.]+\)", node)
42 if m is not None:
43 sense_index = m.group(0).strip("()")
44 note_nodes.append(node[m.end() :])
45 else:
46 note_nodes.append(node)
47 else:
48 note_nodes.append(node)
49 note_text = clean_node(wxr, None, note_nodes)
50 if len(note_text) > 0: 50 ↛ 52line 50 didn't jump to line 52 because the condition on line 50 was always true
51 return Note(sense_index=sense_index, text=note_text)
52 return None