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

no duplicate ids

parent 3db664df
No related branches found
No related tags found
No related merge requests found
{
"Headword":"sleep",
"Items":[
{
"PartOfSpeech":"verb",
"Pronunciation":[
{
"api":"\\ˈsliːp\\ ",
"hiragana":"",
"katakana":"",
"bopomofo":"",
"pinyin":"",
"romaji":"",
"accent1":"RP",
"url1":"https://upload.wikimedia.org/wikipedia/commons/1/19/LL-Q1860_%28eng%29-Back_ache-water.wav"
}
],
"Senses":{
"v1":{
"Translations":[
"translation1",
"...",
"translationn"
],
"Image":[
"Stilles Mineralwasser.jpg",
"..."
],
"Definition":{"lang":"fr", "definition" : "blabla"},
"Examples":[
"blabla",
"blabli",
"blablou"
],
"SubSenses":[
{
"Definition":{"lang":"en", "definition" : "whatnot"},
"Examples":[
"subexa",
"subexb",
"subexz"
]
}
]
}
}
}
]
}
/*adapter à la généricité des données ?
\"User-defined fields 1\"
\"User-defined fields 2\"
\"User-defined fields 3\"
\"User-defined fields 4\"
\"User-defined fields 5\"
\"Supplementary field for devs 1\"
\"Supplementary field for devs 2\"
\"Supplementary field for devs 3\"
\"Supplementary field for devs 4\"
\"Supplementary field for devs 5\"
...
\"Supplementary field for devs 10\ */
"lemma"
"partOfSpeech" :
{
"sense" :
{
"definition"
}
}
...@@ -64,6 +64,7 @@ class Sound: ...@@ -64,6 +64,7 @@ class Sound:
class Pronunciation(SubInfo): class Pronunciation(SubInfo):
prfx = "prn" prfx = "prn"
next_id = 1
def __init__(self, prefix = None): def __init__(self, prefix = None):
super().__init__(prefix) super().__init__(prefix)
...@@ -122,6 +123,7 @@ class Pronunciation(SubInfo): ...@@ -122,6 +123,7 @@ class Pronunciation(SubInfo):
class Definition(SubInfo): class Definition(SubInfo):
prfx = "def" prfx = "def"
key = "definition" key = "definition"
next_id = 1
def __init__(self, lang, text, prefix=None): def __init__(self, lang, text, prefix=None):
super().__init__(prefix) super().__init__(prefix)
...@@ -143,9 +145,11 @@ class Definition(SubInfo): ...@@ -143,9 +145,11 @@ class Definition(SubInfo):
class Translation(Definition): class Translation(Definition):
prfx = "trad" prfx = "trad"
key = "translation" key = "translation"
next_id = 1
class Example(SubInfo): class Example(SubInfo):
prfx = "ex" prfx = "ex"
next_id = 1
def __init__(self, transcript, source=None, url=None, prefix=None): def __init__(self, transcript, source=None, url=None, prefix=None):
super().__init__(prefix) super().__init__(prefix)
...@@ -171,18 +175,12 @@ class Example(SubInfo): ...@@ -171,18 +175,12 @@ class Example(SubInfo):
class Sense(SubInfo): class Sense(SubInfo):
prfx = "" prfx = ""
next_id = 1
def __init__(self, lang=None, definition=None, wiki_lang=None, prefix=None): def __init__(self, lang=None, definition=None, wiki_lang=None, prefix=None):
self.lang = lang self.lang = lang
self.label = None self.label = None
self.set_id(prefix) self.set_id(prefix)
#On réinitialise les identifiants des sous-éléments
if not isinstance(self, SubSense):
Definition.reset()
Example.reset()
Translation.reset()
SubSense.reset()
self.definitions = [] #liste des définitions (elles auront une langue et un texte) self.definitions = [] #liste des définitions (elles auront une langue et un texte)
self.subsenses = [] #liste des sous-définitions (récursif…) self.subsenses = [] #liste des sous-définitions (récursif…)
self.examples = [] #liste des exemples (un texte obligatoire, source et url sont optionnels) self.examples = [] #liste des exemples (un texte obligatoire, source et url sont optionnels)
...@@ -196,6 +194,15 @@ class Sense(SubInfo): ...@@ -196,6 +194,15 @@ class Sense(SubInfo):
except ValueError as err: except ValueError as err:
raise ValueError(f"Sense.__init__() with empty definition\n{err}") raise ValueError(f"Sense.__init__() with empty definition\n{err}")
@classmethod
def reset(cls):
#On réinitialise les identifiants des sous-éléments
if cls.__name__ != "SubSense":
Definition.reset()
Example.reset()
Translation.reset()
SubSense.reset()
def add_metadata(self, key, value): def add_metadata(self, key, value):
if self.metadata_exists(key): if self.metadata_exists(key):
print("Definition.add_metadata", f"for {self.text} replaced {key}:“{self.metadata[key]}” by {key}:“{value}") print("Definition.add_metadata", f"for {self.text} replaced {key}:“{self.metadata[key]}” by {key}:“{value}")
...@@ -323,6 +330,7 @@ class Sense(SubInfo): ...@@ -323,6 +330,7 @@ class Sense(SubInfo):
return json.dumps(self.serializable()) return json.dumps(self.serializable())
class SubSense(Sense): class SubSense(Sense):
next_id = 1
def set_id(self, prefix=None): def set_id(self, prefix=None):
if prefix != None and self.label == None: if prefix != None and self.label == None:
self.label = f"{prefix}.{self.__class__.next_id}" #l'identifiant du sens self.label = f"{prefix}.{self.__class__.next_id}" #l'identifiant du sens
......
No preview for this file type
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