Refactoring example into multiple files
This commit is contained in:
		
							parent
							
								
									8c2197e78b
								
							
						
					
					
						commit
						b6cb2dbce5
					
				@ -1,178 +0,0 @@
 | 
				
			|||||||
from model.data import Data as Editable
 | 
					 | 
				
			||||||
from model.translation import from_container_list
 | 
					 | 
				
			||||||
from model.example_clusters import ExampleClusters
 | 
					 | 
				
			||||||
from lib.snabbdom import h
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
class CorpusExample:
 | 
					 | 
				
			||||||
    def __init__(self, example_xml):
 | 
					 | 
				
			||||||
        self.other_attributes = {}
 | 
					 | 
				
			||||||
        for oth_attr in ["example_id", "modified", "lexical_unit_id", "audio"]:
 | 
					 | 
				
			||||||
            if example_xml.hasAttribute(oth_attr):
 | 
					 | 
				
			||||||
                self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr)
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
    def export(self, doc):
 | 
					 | 
				
			||||||
        result = doc.createElement("corpusExample")
 | 
					 | 
				
			||||||
        for key, value in self.other_attributes.items():
 | 
					 | 
				
			||||||
            result.setAttribute(key, value)
 | 
					 | 
				
			||||||
        return result
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def get_cluster(self):
 | 
					 | 
				
			||||||
        return None
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def get_structure(self):
 | 
					 | 
				
			||||||
        return None
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def view(self, components):
 | 
					 | 
				
			||||||
        return [h("span" + comp.view_style(), {}, comp.text) for comp in components]
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class MultiwordExample:
 | 
					 | 
				
			||||||
    def __init__(self, example_xml):
 | 
					 | 
				
			||||||
        self.other_attributes = {}
 | 
					 | 
				
			||||||
        for oth_attr in ["lexical_unit_id", "structure_id", "structureName", "audio", "frequency", "logDice"]:
 | 
					 | 
				
			||||||
            if example_xml.hasAttribute(oth_attr):
 | 
					 | 
				
			||||||
                self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        self.cluster = MultiwordExample._determine_cluster_number(example_xml)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        if example_xml.hasAttribute("type"):
 | 
					 | 
				
			||||||
            self.type = example_xml.getAttribute("type")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            self.type = None
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
    @staticmethod
 | 
					 | 
				
			||||||
    def _determine_cluster_number(example_xml):
 | 
					 | 
				
			||||||
        if not example_xml.hasAttribute("cluster"):
 | 
					 | 
				
			||||||
            return ExampleClusters.first_empty_cluster()
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            cluster = int(example_xml.getAttribute("cluster"))
 | 
					 | 
				
			||||||
            ExampleClusters.register_cluster(cluster)
 | 
					 | 
				
			||||||
            return cluster
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
    def export(self, doc):
 | 
					 | 
				
			||||||
        result = doc.createElement("multiwordExample")
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
        for key, value in self.other_attributes.items():
 | 
					 | 
				
			||||||
            result.setAttribute(key, value)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        result.setAttribute("cluster", str(self.cluster))
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        if self.type is not None:
 | 
					 | 
				
			||||||
            result.setAttribute("type", self.type)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        return result
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
    def get_cluster(self):
 | 
					 | 
				
			||||||
        return self.cluster
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def get_structure(self):
 | 
					 | 
				
			||||||
        if "structureName" in self.other_attributes:
 | 
					 | 
				
			||||||
            return self.other_attributes["structureName"]
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return None
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def view(self, components):
 | 
					 | 
				
			||||||
        return " ".join([comp.text for comp in components])
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class ComponentLexeme(Editable):
 | 
					 | 
				
			||||||
    def __init__(self, xml):
 | 
					 | 
				
			||||||
        self.other_attributes = {}
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        if xml.nodeName == "#text":
 | 
					 | 
				
			||||||
            self.text = xml.data
 | 
					 | 
				
			||||||
            self.role = None
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            self.text = xml.textContent
 | 
					 | 
				
			||||||
            self.role = xml.getAttribute("role")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            for oth_attr in ["lexical_unit_lexeme_id", "slolex", "kol"]:
 | 
					 | 
				
			||||||
                if xml.hasAttribute(oth_attr):
 | 
					 | 
				
			||||||
                    self.other_attributes[oth_attr] = xml.getAttribute(oth_attr)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        self.text = self.text.strip()
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def isValid(self):
 | 
					 | 
				
			||||||
        return len(self.text) > 0
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def export(self, doc):
 | 
					 | 
				
			||||||
        if self.role is None:
 | 
					 | 
				
			||||||
            return doc.createTextNode(self.text)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        result = doc.createElement("comp")
 | 
					 | 
				
			||||||
        result.setAttribute("role", self.role)
 | 
					 | 
				
			||||||
        result.textContent = self.text
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        for key, value in self.other_attributes.items():
 | 
					 | 
				
			||||||
            result.setAttribute(key, value)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        return result
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    def view_style(self):
 | 
					 | 
				
			||||||
        result = ".comp-text"
 | 
					 | 
				
			||||||
        if self.role is not None:
 | 
					 | 
				
			||||||
            result += ".comp-role"
 | 
					 | 
				
			||||||
            if self.role == "headword":
 | 
					 | 
				
			||||||
                result += ".comp-role-headword"
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
        return result
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								src/model/example/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/model/example/__init__.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					from model.example.example import Example
 | 
				
			||||||
							
								
								
									
										46
									
								
								src/model/example/component_lexeme.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/model/example/component_lexeme.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					from model.data import Data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ComponentLexeme(Data):
 | 
				
			||||||
 | 
					    def __init__(self, xml):
 | 
				
			||||||
 | 
					        self.other_attributes = {}
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if xml.nodeName == "#text":
 | 
				
			||||||
 | 
					            self.text = xml.data
 | 
				
			||||||
 | 
					            self.role = None
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self.text = xml.textContent
 | 
				
			||||||
 | 
					            self.role = xml.getAttribute("role")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for oth_attr in ["lexical_unit_lexeme_id", "slolex", "kol"]:
 | 
				
			||||||
 | 
					                if xml.hasAttribute(oth_attr):
 | 
				
			||||||
 | 
					                    self.other_attributes[oth_attr] = xml.getAttribute(oth_attr)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        self.text = self.text.strip()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def isValid(self):
 | 
				
			||||||
 | 
					        return len(self.text) > 0
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def export(self, doc):
 | 
				
			||||||
 | 
					        if self.role is None:
 | 
				
			||||||
 | 
					            return doc.createTextNode(self.text)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        result = doc.createElement("comp")
 | 
				
			||||||
 | 
					        result.setAttribute("role", self.role)
 | 
				
			||||||
 | 
					        result.textContent = self.text
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        for key, value in self.other_attributes.items():
 | 
				
			||||||
 | 
					            result.setAttribute(key, value)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return result
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def view_style(self):
 | 
				
			||||||
 | 
					        result = ".comp-text"
 | 
				
			||||||
 | 
					        if self.role is not None:
 | 
				
			||||||
 | 
					            result += ".comp-role"
 | 
				
			||||||
 | 
					            if self.role == "headword":
 | 
				
			||||||
 | 
					                result += ".comp-role-headword"
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					        return result
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										24
									
								
								src/model/example/corpus_example.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/model/example/corpus_example.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					from lib.snabbdom import h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CorpusExample:
 | 
				
			||||||
 | 
					    def __init__(self, example_xml):
 | 
				
			||||||
 | 
					        self.other_attributes = {}
 | 
				
			||||||
 | 
					        for oth_attr in ["example_id", "modified", "lexical_unit_id", "audio"]:
 | 
				
			||||||
 | 
					            if example_xml.hasAttribute(oth_attr):
 | 
				
			||||||
 | 
					                self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr)
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					    def export(self, doc):
 | 
				
			||||||
 | 
					        result = doc.createElement("corpusExample")
 | 
				
			||||||
 | 
					        for key, value in self.other_attributes.items():
 | 
				
			||||||
 | 
					            result.setAttribute(key, value)
 | 
				
			||||||
 | 
					        return result
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def get_cluster(self):
 | 
				
			||||||
 | 
					        return None
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def get_structure(self):
 | 
				
			||||||
 | 
					        return None
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def view(self, components):
 | 
				
			||||||
 | 
					        return [h("span" + comp.view_style(), {}, comp.text) for comp in components]
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
							
								
								
									
										66
									
								
								src/model/example/example.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/model/example/example.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					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
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
							
								
								
									
										51
									
								
								src/model/example/multiword_example.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/model/example/multiword_example.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					from model.example_clusters import ExampleClusters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MultiwordExample:
 | 
				
			||||||
 | 
					    def __init__(self, example_xml):
 | 
				
			||||||
 | 
					        self.other_attributes = {}
 | 
				
			||||||
 | 
					        for oth_attr in ["lexical_unit_id", "structure_id", "structureName", "audio", "frequency", "logDice"]:
 | 
				
			||||||
 | 
					            if example_xml.hasAttribute(oth_attr):
 | 
				
			||||||
 | 
					                self.other_attributes[oth_attr] = example_xml.getAttribute(oth_attr)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        self.cluster = MultiwordExample._determine_cluster_number(example_xml)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if example_xml.hasAttribute("type"):
 | 
				
			||||||
 | 
					            self.type = example_xml.getAttribute("type")
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            self.type = None
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					    @staticmethod
 | 
				
			||||||
 | 
					    def _determine_cluster_number(example_xml):
 | 
				
			||||||
 | 
					        if not example_xml.hasAttribute("cluster"):
 | 
				
			||||||
 | 
					            return ExampleClusters.first_empty_cluster()
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            cluster = int(example_xml.getAttribute("cluster"))
 | 
				
			||||||
 | 
					            ExampleClusters.register_cluster(cluster)
 | 
				
			||||||
 | 
					            return cluster
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					    def export(self, doc):
 | 
				
			||||||
 | 
					        result = doc.createElement("multiwordExample")
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        for key, value in self.other_attributes.items():
 | 
				
			||||||
 | 
					            result.setAttribute(key, value)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        result.setAttribute("cluster", str(self.cluster))
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        if self.type is not None:
 | 
				
			||||||
 | 
					            result.setAttribute("type", self.type)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return result
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    def get_cluster(self):
 | 
				
			||||||
 | 
					        return self.cluster
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def get_structure(self):
 | 
				
			||||||
 | 
					        if "structureName" in self.other_attributes:
 | 
				
			||||||
 | 
					            return self.other_attributes["structureName"]
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            return None
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    def view(self, components):
 | 
				
			||||||
 | 
					        return " ".join([comp.text for comp in components])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user