redid constructors and some other stuff in examples

this is preparation for ske implementation.
This commit is contained in:
Ozbolt Menegatti 2020-03-30 20:31:59 +02:00
parent fc35a3079b
commit 49875416b2
5 changed files with 19 additions and 13 deletions

View File

@ -1,7 +1,7 @@
from model.data import Data from model.data import Data
class ComponentLexeme(Data): class ComponentLexeme(Data):
def __init__(self, xml): def __init__(self):
self.other_attributes = {} self.other_attributes = {}
self.text = "" self.text = ""
self.role = "" self.role = ""

View File

@ -1,8 +1,10 @@
from lib.snabbdom import h from lib.snabbdom import h
class CorpusExample: class CorpusExample:
def __init__(self, example_xml): def __init__(self):
self.other_attributes = {} self.other_attributes = {}
def import_xml(self, example_xml):
for oth_attr in ["example_id", "modified", "lexical_unit_id", "audio"]: for oth_attr in ["example_id", "modified", "lexical_unit_id", "audio"]:
if example_xml.hasAttribute(oth_attr): if example_xml.hasAttribute(oth_attr):
self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr) self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr)

View File

@ -25,7 +25,8 @@ class Example(Data):
self.inner = CorpusExample(inner_xml) self.inner = CorpusExample(inner_xml)
else: else:
inner_xml = example_xml.querySelector("multiwordExample") inner_xml = example_xml.querySelector("multiwordExample")
self.inner = MultiwordExample(inner_xml) self.inner = MultiwordExample()
self.inner.import_xml(inner_xml)
for comp_xml in inner_xml.childNodes: for comp_xml in inner_xml.childNodes:
comp = ComponentLexeme() comp = ComponentLexeme()

View File

@ -4,6 +4,10 @@ from model.example_clusters import ExampleClusters
class MultiwordExample: class MultiwordExample:
def __init__(self, example_xml): def __init__(self, example_xml):
self.other_attributes = {} self.other_attributes = {}
self.cluster = -1
self.type = None
def import_xml(self, example_xml):
for oth_attr in ["lexical_unit_id", "structure_id", "structureName", "audio", "frequency", "logDice"]: for oth_attr in ["lexical_unit_id", "structure_id", "structureName", "audio", "frequency", "logDice"]:
if example_xml.hasAttribute(oth_attr): if example_xml.hasAttribute(oth_attr):
self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr) self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr)
@ -12,8 +16,6 @@ class MultiwordExample:
if example_xml.hasAttribute("type"): if example_xml.hasAttribute("type"):
self.type = example_xml.getAttribute("type") self.type = example_xml.getAttribute("type")
else:
self.type = None
@staticmethod @staticmethod
def _determine_cluster_number(example_xml): def _determine_cluster_number(example_xml):
@ -21,7 +23,7 @@ class MultiwordExample:
return ExampleClusters.first_empty_cluster() return ExampleClusters.first_empty_cluster()
else: else:
cluster = int(example_xml.getAttribute("cluster")) cluster = int(example_xml.getAttribute("cluster"))
ExampleClusters.register_cluster(cluster) ExampleClusters.register_index(cluster)
return cluster return cluster
def export(self, doc): def export(self, doc):

View File

@ -13,17 +13,17 @@ class ExampleClusters:
def _first_empty_cluster(self): def _first_empty_cluster(self):
idx = 0 idx = 0
while True: while True:
if idx not in self.clusters: if idx not in self.idxs:
self.idxs.add(idx) self._register_index(idx)
return idx return idx
idx += 1 idx += 1
def _register_cluster(self, idx): def _register_index(self, idx):
if idx not in self.idxs:
self.idxs.add(idx) self.idxs.add(idx)
def _rebuild_lists(self, model): def _rebuild_lists(self, model):
self.lists = {} self.lists = {}
self.idxs = set()
for sense in model.entry.senses: for sense in model.entry.senses:
for example in sense.examples: for example in sense.examples:
@ -38,6 +38,7 @@ class ExampleClusters:
self.lists[key] = set() self.lists[key] = set()
self.lists[key].add(cluster) self.lists[key].add(cluster)
self.idxs.add(cluster)
for key in self.lists.keys(): for key in self.lists.keys():
self.lists[key] = sorted(self.lists[key], key=lambda x: int(x)) self.lists[key] = sorted(self.lists[key], key=lambda x: int(x))
@ -54,8 +55,8 @@ class ExampleClusters:
return ec._first_empty_cluster() return ec._first_empty_cluster()
@staticmethod @staticmethod
def register_cluster(idx): def register_index(idx):
return ec._register_cluster(idx) return ec._register_index(idx)
@staticmethod @staticmethod
def rebuild_lists(model): def rebuild_lists(model):