67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
|
from model.data import Data as Editable
|
||
|
from model.translation import from_container_list
|
||
|
from lib.snabbdom import h
|
||
|
|
||
|
from model.example.component_lexeme import ComponentLexeme
|
||
|
from model.example.corpus_example import CorpusExample
|
||
|
from model.example.multiword_example import MultiwordExample
|
||
|
|
||
|
|
||
|
class Example(Editable):
|
||
|
def __init__(self, example_xml):
|
||
|
self.translations = from_container_list(example_xml.querySelectorAll("translationContainer"))
|
||
|
|
||
|
inner_xml = example_xml.querySelector("corpusExample")
|
||
|
if inner_xml is not None:
|
||
|
self.inner = CorpusExample(inner_xml)
|
||
|
else:
|
||
|
inner_xml = example_xml.querySelector("multiwordExample")
|
||
|
self.inner = MultiwordExample(inner_xml)
|
||
|
|
||
|
all_components = [ComponentLexeme(el) for el in inner_xml.childNodes]
|
||
|
self.components = [comp for comp in all_components if comp.isValid()]
|
||
|
|
||
|
|
||
|
def export(self, doc):
|
||
|
result = doc.createElement("exampleContainer")
|
||
|
|
||
|
inner = self.inner.export(doc)
|
||
|
# TODO: bad quick fix
|
||
|
for comp in self.components:
|
||
|
inner.appendChild(comp.export(doc))
|
||
|
|
||
|
result.appendChild(inner)
|
||
|
return result
|
||
|
|
||
|
def view(self):
|
||
|
return self.inner.view(self.components)
|
||
|
|
||
|
def get_cluster(self):
|
||
|
return self.inner.get_cluster()
|
||
|
|
||
|
def set_cluster(self, cluster):
|
||
|
self.inner.cluster = cluster
|
||
|
|
||
|
def get_structure(self):
|
||
|
return self.inner.get_structure()
|
||
|
|
||
|
def is_collocation(self):
|
||
|
return self.get_view_type() == 2
|
||
|
|
||
|
def is_multiword(self):
|
||
|
return self.get_view_type() != 1
|
||
|
|
||
|
def get_view_type(self):
|
||
|
# as per the bosses, these are the rules for different colors
|
||
|
if type(self.inner) is CorpusExample:
|
||
|
return 1
|
||
|
elif self.inner.type == "collocation":
|
||
|
return 2
|
||
|
else:
|
||
|
return 3
|
||
|
|
||
|
def get_other_attributes(self):
|
||
|
return self.inner.other_attributes
|
||
|
|
||
|
|