def convert(self): new = {} new_default = {} for key, value in self.element.attrib.iteritems(): if key.uri == moin_page: # We never have _ in attribute names, so ignore them instead of # create ambigues matches. if not '_' in key.name: n = 'visit_' + key.name.replace('-', '_') f = getattr(self, n, None) if f is not None: f(value, new) elif key.uri in self.namespaces_valid_output: new[key] = value # We convert xml:id elif key.uri == xml.namespace: if key.name == 'id' or key.name == 'lang': new[ET.QName(key.name, html.namespace)] = value elif key.uri is None: if self.default_uri_input and not '_' in key.name: n = 'visit_' + key.name.replace('-', '_') f = getattr(self, n, None) if f is not None: f(value, new_default) elif self.default_uri_output: new_default[ET.QName(key.name, self.default_uri_output)] = value # Attributes with namespace overrides attributes with empty namespace. new_default.update(new) return new_default
def new_copy_symmetric(self, element, attrib): """ Create a new QName, with the same tag of the element, but with a different namespace. Then, we handle the copy normally. """ tag = ET.QName(element.tag.name, moin_page) return self.new_copy(tag, element, attrib)
def visit_moinpage_h(self, elem): level = elem.get(moin_page.outline_level, 1) try: level = int(level) except ValueError: raise ElementException('page:outline-level needs to be an integer') if level < 1: level = 1 elif level > 6: level = 6 return self.new_copy(ET.QName('h%d' % level, html), elem)
def visit_moinpage_h(self, elem): level = elem.get(moin_page.outline_level, 1) try: level = int(level) except ValueError: raise ElementException('page:outline-level needs to be an integer') if level < 1: level = 1 elif level > 6: level = 6 elem = self.new_copy(ET.QName('h%d' % level, html), elem) id = elem.get(html.id) if not id: id = self._id.gen_text(''.join(elem.itertext())) elem.set(html.id, id) self._special_stack[-1].add_heading(elem, level, id) return elem