Skip to content
Snippets Groups Projects
Commit 3d184fb5 authored by Mathieu Loiseau's avatar Mathieu Loiseau
Browse files

Gestion des définitions vides…

parent a0dc7768
No related branches found
No related tags found
No related merge requests found
......@@ -117,9 +117,15 @@ class Definition(SubInfo):
if text != "":
self.lang = lang
self.text = text
self.metadata = {}
else:
raise ValueError(f"Definition.__init__: “{text}” empty definition.")
def add_metadata(self, key, value):
if key in self.metadata.keys():
self.log.add_log("Definition.add_metadata", f"for {self.text} replaced {key}:“{self.metadata['key']}” by {key}:“{value}")
self.metadata["key"]=value
def __eq__(self, other):
return isinstance(other, self.__class__) and self.lang == other.lang and self.text == other.text
......@@ -127,6 +133,8 @@ class Definition(SubInfo):
res = super().serializable(prefix)
res["lang"] = self.lang
res[self.__class__.key] = self.text
if len(self.metadata.keys()) > 0 :
res["metadata"] = self.metadata
return res
class Translation(Definition):
......@@ -587,34 +595,44 @@ class Wikstraktor:
res = self.wtp.parse(example_wiki_text).plain_text().strip()
return res
#can be overloaded
def parse_definition(self, definition):
return self.wtp.parse(definition).plain_text().strip()
#can be overloaded
def process_definition(self, definition, sub_items, def_level = True):
if def_level:
newSense = Sense(self.entry_language, self.wtp.parse(definition).plain_text().strip(), self.wiki_language)
pattern_ex = self.constants['sense_pattern'][0]["ex"]
pattern_subdef = self.constants['sense_pattern'][0]["add_subdef"] + self.constants['sense_pattern'][0]["def"]
else:
newSense = SubSense(self.entry_language, self.wtp.parse(definition).plain_text().strip(), self.wiki_language)
pattern_subdef = None
pattern_ex = self.constants['sense_pattern'][0]["add_subdef"] + self.constants['sense_pattern'][0]["ex"]
#Process examples
a = 0
for item_list in sub_items:
if item_list.pattern == pattern_ex:
for item in item_list.items:
newSense.add_example(self.process_example(item))
#Si on veut traiter les sous items (ex traductions), on peut utiliser
if def_level and item_list.pattern == pattern_subdef:
b = 0
for item in item_list.items:
try:
sub_sub = item_list.sublists(b)
except IndexError as err:
sub_sub = []
print(f"There is an error in the selection of subitems:\n\t{b}th item of\n\t{itm_list.sublists()}\ntriggered {err}")
newSense.add_subsense(self.process_definition(item, sub_sub, False))
b += 1
a += 1
#does not process wk_en quotations
try:
if def_level:
newSense = Sense(self.entry_language, self.parse_definition(definition), self.wiki_language)
pattern_ex = self.constants['sense_pattern'][0]["ex"]
pattern_subdef = self.constants['sense_pattern'][0]["add_subdef"] + self.constants['sense_pattern'][0]["def"]
else:
newSense = SubSense(self.entry_language, self.parse_definition(definition), self.wiki_language)
pattern_subdef = None
pattern_ex = self.constants['sense_pattern'][0]["add_subdef"] + self.constants['sense_pattern'][0]["ex"]
#Process examples
a = 0
for item_list in sub_items:
if item_list.pattern == pattern_ex:
for item in item_list.items:
newSense.add_example(self.process_example(item))
#Si on veut traiter les sous items (ex traductions), on peut utiliser
if def_level and item_list.pattern == pattern_subdef:
b = 0
for item in item_list.items:
try:
sub_sub = item_list.sublists(b)
except IndexError as err:
sub_sub = []
print(f"There is an error in the selection of subitems:\n\t{b}th item of\n\t{itm_list.sublists()}\ntriggered {err}")
newSense.add_subsense(self.process_definition(item, sub_sub, False))
b += 1
a += 1
except ValueError as err:
self.log.add_log("Wikstraktor.process_definition", f"{definition}” processed as empty")
raise ValueError(f"Wikstraktor.process_definition with empty definition\n{err}")
return newSense
def process_senses(self, sensesContent):
......@@ -626,8 +644,11 @@ class Wikstraktor:
if l.pattern == self.constants['sense_pattern'][0]["def"]:
i = 0
for item in l.items:
senses.append(self.process_definition(item, l.sublists(i)))
i += 1
try:
senses.append(self.process_definition(item, l.sublists(i)))
i += 1
except ValueError as err:
print("Skipped empty definition")
return senses
def __str__(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment