diff --git a/src/wiktextract/extractor/fr/linkage.py b/src/wiktextract/extractor/fr/linkage.py index 2494da81..77eb516b 100644 --- a/src/wiktextract/extractor/fr/linkage.py +++ b/src/wiktextract/extractor/fr/linkage.py @@ -1,3 +1,5 @@ +import re + from wikitextprocessor import NodeKind, WikiNode from wikitextprocessor.parser import TemplateNode from wiktextract.page import clean_node @@ -71,6 +73,18 @@ def process_linkage_list( if sense_index_text.isdigit(): sense_index = int(sense_index_text) continue + # sense could also be in ";" description list + if ( + template_or_list_node.kind == NodeKind.LIST_ITEM + and template_or_list_node.sarg == ";" + ): + sense_text = clean_node(wxr, None, template_or_list_node.children) + index_pattern = r"\s*\((?:sens\s*)?(\d+)\)$" + m = re.search(index_pattern, sense_text) + if m is not None: + sense_text = re.sub(index_pattern, "", sense_text) + sense_index = int(m.group(1)) + continue linkage_data = Linkage() if len(sense_text) > 0: diff --git a/tests/test_fr_linkage.py b/tests/test_fr_linkage.py index bb2f57c3..d7efa94f 100644 --- a/tests/test_fr_linkage.py +++ b/tests/test_fr_linkage.py @@ -117,13 +117,18 @@ def test_sub_list(self): ) def test_sense(self): + # https://fr.wiktionary.org/wiki/autrice + # https://fr.wiktionary.org/wiki/embouteillage page_data = [ - WordEntry(word="test", lang_code="fr", lang_name="Français") + WordEntry(word="autrice", lang_code="fr", lang_name="Français") ] self.wxr.wtp.start_page("autrice") root = self.wxr.wtp.parse( """{{(|Celle qui est à l’origine de quelque chose|1}} * [[artisane]] + +; Mise en bouteille (sens 1) +* [[bouchonnerie]] """ ) extract_linkage(self.wxr, page_data, root, "synonymes") @@ -138,6 +143,11 @@ def test_sense(self): "sense": "Celle qui est à l’origine de quelque chose", "sense_index": 1, }, + { + "word": "bouchonnerie", + "sense": "Mise en bouteille", + "sense_index": 1, + }, ], )