from model.example import Example from model.translation import Translation from model.editable import Editable from model.tags import import_label_list class Sense(Editable): def __init__(self, sense_xml): self.definition = {} for definition in sense_xml.querySelectorAll("definitionList definition"): key = definition.getAttribute("type") self.definition[key] = definition.textContent self.labels = import_label_list("sense > labelList label", sense_xml) 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) def merge_labels(self): return ", ".join(val for _, val in self.labels)