first commit
This commit is contained in:
1
src/model/__init__.py
Normal file
1
src/model/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from model.model import Model
|
||||
17
src/model/entry.py
Normal file
17
src/model/entry.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from model.sense import Sense
|
||||
|
||||
class Entry:
|
||||
def __init__(self, entry_xml):
|
||||
status = entry_xml.querySelector("head status")
|
||||
headword = entry_xml.querySelector("head headword lemma")
|
||||
grammar = entry_xml.querySelector("head grammar category")
|
||||
comment = entry_xml.querySelector("head comment")
|
||||
|
||||
self.status = status.textContent if status else ""
|
||||
self.headword = headword.textContent if headword else ""
|
||||
self.grammar = grammar.textContent if grammar else ""
|
||||
self.comment = comment.textContent if comment else ""
|
||||
|
||||
self.senses = [Sense(sense_xml) for sense_xml in
|
||||
entry_xml.querySelectorAll("body senseList sense")]
|
||||
|
||||
8
src/model/example.py
Normal file
8
src/model/example.py
Normal file
@@ -0,0 +1,8 @@
|
||||
class Example:
|
||||
def __init__(self, example_xml):
|
||||
example = example_xml.querySelector("example")
|
||||
translation = example_xml.querySelector("translationContainer translation")
|
||||
|
||||
self.example = example.textContent if example else ""
|
||||
self.translation = translation.textContent if translation else ""
|
||||
|
||||
25
src/model/model.py
Normal file
25
src/model/model.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from model.entry import Entry
|
||||
|
||||
|
||||
class Model:
|
||||
def __init__(self, names):
|
||||
self.entry = None
|
||||
self.log = []
|
||||
self.names = ["Ozbolt", "Katarina"]
|
||||
|
||||
|
||||
def import_xml(self, xml_text):
|
||||
parser = __new__(DOMParser())
|
||||
xmlDoc = parser.parseFromString(xml_text, "text/xml")
|
||||
self.entry = Entry(xmlDoc.querySelector("entry"))
|
||||
|
||||
|
||||
# type alias Model =
|
||||
# { shown: Bool
|
||||
# , editable: Bool
|
||||
# , entry: Maybe Entry
|
||||
# , newXml: Bool
|
||||
# , xml: Maybe String
|
||||
# , xmlObject: Maybe Xml2.Value
|
||||
# , log: List LogEntry
|
||||
# }
|
||||
27
src/model/sense.py
Normal file
27
src/model/sense.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from model.example import Example
|
||||
from model.translation import Translation
|
||||
|
||||
class Sense:
|
||||
def __init__(self, sense_xml):
|
||||
label = sense_xml.querySelector("labelList label")
|
||||
definition = sense_xml.querySelector("definitionList definition")
|
||||
|
||||
self.label = label.textContent if label else ""
|
||||
self.definition = definition.textContent if definition else ""
|
||||
|
||||
self.examples = [Example(example_xml) for example_xml in
|
||||
sense_xml.querySelectorAll("exampleContainerList exampleContainer")]
|
||||
|
||||
translations = []
|
||||
max_num_cluster = 0
|
||||
|
||||
for translation_xml in sense_xml.querySelectorAll("translationContainerList translationContainer"):
|
||||
num_cluster = int(translation_xml.getAttribute("cluster"))
|
||||
max_num_cluster = max(max_num_cluster, num_cluster)
|
||||
translations.append((num_cluster, Translation(translation_xml)))
|
||||
|
||||
self.translations = [[] for _ in range(max_num_cluster)]
|
||||
for clusterNum, translation in translations:
|
||||
self.translations[clusterNum - 1].append(translation)
|
||||
|
||||
|
||||
10
src/model/translation.py
Normal file
10
src/model/translation.py
Normal file
@@ -0,0 +1,10 @@
|
||||
class Translation:
|
||||
def __init__(self, translation_xml):
|
||||
translation = translation_xml.querySelector("translation")
|
||||
self.translation = translation.textContent if translation else ""
|
||||
|
||||
self.tags = {}
|
||||
for tag_xml in translation_xml.querySelectorAll("tagsContainer tag"):
|
||||
t_type = tag_xml.querySelector("type").textContent
|
||||
t_value = tag_xml.querySelector("value").textContent
|
||||
self.tags[t_type] = t_value
|
||||
Reference in New Issue
Block a user