first commit

This commit is contained in:
2019-11-05 22:18:20 +01:00
commit 1699990c02
22 changed files with 633 additions and 0 deletions

1
src/model/__init__.py Normal file
View File

@@ -0,0 +1 @@
from model.model import Model

17
src/model/entry.py Normal file
View 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
View 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
View 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
View 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
View 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