diff --git a/wikstraktor.py b/wikstraktor.py index 639ecd82b2c05deb8cda1121a5f6a27673a00762..9d1918d7f7d1bd00b094eae88c999a10598c7a9b 100755 --- a/wikstraktor.py +++ b/wikstraktor.py @@ -209,12 +209,12 @@ class Sense(SubInfo): #On réinitialise les identifiants des sous-éléments if not isinstance(self, SubSense): Sense.reset_sub_counters() - + self.merged = False self.definitions = [] #liste des définitions (elles auront une langue et un texte) self.subsenses = [] #liste des sous-définitions (récursif…) self.examples = [] #liste des exemples (un texte obligatoire, source et url sont optionnels) self.translations = [] #liste des traductions dans d'autres langues - self.domain = None #domaine d'usage du mot dans ce sens + self.domain = None #domaine d'usage du mot dans ce sens (à supprimer, cf. metadata ?) self.metadata = {} self.regions = set() if definition != None: @@ -314,9 +314,27 @@ class Sense(SubInfo): i+=1 return res + def merge(self, other): + if self != other: + self.label += other.label + for d in other.definitions: + self.add_def(d) + for s in other.subsenses: + self.add_subsense(s) + for e in other.examples: + self.add_example(e) + for t in other.translations: + self.add_translation(t) + if self.domain == None and other.domain != None: + self.set_domain(other.domain) ##Pas clair, à virer (cf. metadata ?) + for k,v in other.metadata: + self.add_to_metadata(k,v) + for r in other.regions: + self.add_region(r) + def serializable(self, id = True): res = {} - if id: + if id and not self.merged: prefix = self.get_id() Sense.reset_sub_counters()