def getalttrans(self, origin=None): """Returns <alt-trans> for the given origin as a list of units. No origin means all alternatives. """ translist = [] for node in self.xmlelement.iterdescendants(self.namespaced("alt-trans")): if self.correctorigin(node, origin): # We build some mini units that keep the xmlelement. This # makes it easier to delete it if it is passed back to us. newunit = base.TranslationUnit(self.source) # the source tag is optional sourcenode = node.iterdescendants(self.namespaced("source")) try: newunit.source = lisa.getText(next(sourcenode), getXMLspace(node, self._default_xml_space)) except StopIteration: pass # must have one or more targets targetnode = node.iterdescendants(self.namespaced("target")) newunit.target = lisa.getText(next(targetnode), getXMLspace(node, self._default_xml_space)) # TODO: support multiple targets better # TODO: support notes in alt-trans newunit.xmlelement = node translist.append(newunit) return translist
def _getnotelist(self, origin=None): """Returns the text from notes matching ``origin`` or all notes. :param origin: The origin of the note (or note type) :type origin: String :return: The text from notes matching ``origin`` :rtype: List """ note_nodes = [] if origin == 'pos': note_nodes = self.xmlelement.iterdescendants(self.namespaced("termNote")) elif origin == 'definition': note_nodes = self.xmlelement.iterdescendants(self.namespaced("descrip")) else: note_nodes = self.xmlelement.iterdescendants(self.namespaced("note")) # TODO: consider using xpath to construct initial_list directly # or to simply get the correct text from the outset (just remember to # check for duplication. initial_list = [lisa.getText(note, getXMLspace(self.xmlelement, self._default_xml_space)) for note in note_nodes] # Remove duplicate entries from list: dictset = {} note_list = [dictset.setdefault(note, note) for note in initial_list if note not in dictset] return note_list
def _getnotelist(self, origin=None): """Returns the text from notes matching ``origin`` or all notes. :param origin: The origin of the note (or note type) :type origin: String :return: The text from notes matching ``origin`` :rtype: List """ note_nodes = self.xmlelement.iterdescendants(self.namespaced("note")) # TODO: consider using xpath to construct initial_list directly # or to simply get the correct text from the outset (just remember to # check for duplication. initial_list = [ lisa.getText(note, getXMLspace(self.xmlelement, self._default_xml_space)) for note in note_nodes if self.correctorigin(note, origin) ] # Remove duplicate entries from list: dictset = {} note_list = [ dictset.setdefault(note, note) for note in initial_list if note not in dictset ] return note_list
def getnotelist(self, origin=None): """Private method that returns the text from notes. The origin parameter is ignored..""" note_nodes = self.xmlelement.iterdescendants(self.namespaced("note")) note_list = [lisa.getText(note) for note in note_nodes] return note_list
def _getnotelist(self, origin=None): """Returns the text from notes. :param origin: Ignored :return: The text from notes :rtype: List """ note_nodes = self.xmlelement.iterdescendants(self.namespaced("note")) return [lisa.getText(note) for note in note_nodes]
def _getnotelist(self, origin=None): """Returns the text from notes. :param origin: Ignored :return: The text from notes :rtype: List """ note_nodes = self.xmlelement.iterdescendants(self.namespaced("note")) note_list = [lisa.getText(note) for note in note_nodes] return note_list
def getcontextgroups(self, name): """Returns the contexts in the context groups with the specified name""" groups = [] grouptags = self.xmlelement.iterdescendants(self.namespaced("context-group")) # TODO: conbine name in query for group in grouptags: if group.get("name") == name: contexts = group.iterdescendants(self.namespaced("context")) pairs = [] for context in contexts: pairs.append((context.get("context-type"), lisa.getText(context, getXMLspace(self.xmlelement, self._default_xml_space)))) groups.append(pairs) # not extend return groups
def getnotelist(self, origin=None): """Private method that returns the text from notes matching 'origin' or all notes.""" notenodes = self.xmlelement.iterdescendants(self.namespaced("note")) # TODO: consider using xpath to construct initial_list directly # or to simply get the correct text from the outset (just remember to # check for duplication. initial_list = [lisa.getText(note, getXMLspace(self.xmlelement, self._default_xml_space)) for note in notenodes if self.correctorigin(note, origin)] # Remove duplicate entries from list: dictset = {} notelist = [dictset.setdefault(note, note) for note in initial_list if note not in dictset] return notelist
def getnotelist(self, origin=None): """Private method that returns the text from notes matching 'origin' or all notes.""" notenodes = self.xmlelement.iterdescendants(self.namespaced("note")) # TODO: consider using xpath to construct initial_list directly # or to simply get the correct text from the outset (just remember to # check for duplication. initial_list = [ lisa.getText(note, getXMLspace(self.xmlelement, self._default_xml_space)) for note in notenodes if self.correctorigin(note, origin) ] # Remove duplicate entries from list: dictset = {} notelist = [ dictset.setdefault(note, note) for note in initial_list if note not in dictset ] return notelist
def getcontexttuples(self, node, namespace): """Returns all the information in the context nodes as a list of tuples of (type, text)""" contexts = node.findall(".//{%s}context" % namespace) return [(context.get("context-type"), lisa.getText(context)) for context in contexts]