def make_node(self): parser = self.parser caret = parser.caret endindex = self.is_element(parser) if endindex is None: return None pos = parser.copy_pos() match = RE.search(parser.text, caret+1) tagname = parser.text[parser.caret+1:match.end(0)-1].lower() if tagname in VOID_ELEMENT: node = Void(tagname) elif tagname in RAWTEXT_ELEMENT: node = RawText(tagname) else: node = Element(tagname) parser.update(match.end(0)-1) if parser.text[parser.caret] is '>': parser.update(parser.caret+1) elif parser.text[parser.caret] is '/': parser.update(endindex+1) else: self.read_attributes(parser, node, endindex, tagname) if isinstance(node, Void): return [node] if isinstance(node, RawText): node.data = self.get_raw_text(parser, tagname, pos) return [node] node.pos = pos return node
def make_node(self): parser = self.parser if parser.text[parser.caret] not in "![": return None if parser.text[parser.caret] == "!": tagtype = "img" if parser.text[parser.caret + 1 : parser.caret + 2] != "[": return None ref_begin = parser.caret + 2 else: tagtype = "a" ref_begin = parser.caret + 1 parity, ref_end = check_parity(parser, ref_begin) if parity != 0: return None if tagtype == "img": node = Void("reference") node["alt"] = parser.text[ref_begin:ref_end] node["_pos"] = parser.copy_pos() parser.update(ref_end + 1) char = parser.text[ref_end + 1 : ref_end + 2] if char == "(": node.name = "img" self.get_inline_info(parser, node) elif char in "[ ": get_inline_id(parser, node) else: parser.update(ref_end + 1) parser["ElementNP"].get_attribute_list(parser, node) return node node = Element("reference") node.pos = parser.copy_pos() node["_pos"] = parser.copy_pos() node.ref_end = ref_end parser.update(parser.caret + 1) return node
def make_node(self): parser = self.parser if parser.text[parser.caret] not in '![': return None if parser.text[parser.caret] == '!': tagtype = 'img' if parser.text[parser.caret+1:parser.caret+2] != '[': return None ref_begin = parser.caret+2 else: tagtype = 'a' ref_begin = parser.caret+1 parity, ref_end = check_parity(parser, ref_begin) if parity != 0: return None if tagtype == 'img': node = Void('reference') node['alt'] = parser.text[ref_begin:ref_end] node['_pos'] = parser.copy_pos() parser.update(ref_end+1) char = parser.text[ref_end+1:ref_end+2] if char == '(': node.name = 'img' self.get_inline_info(parser, node) elif char in '[ ': get_inline_id(parser, node) else: parser.update(ref_end+1) parser['ElementNP'].get_attribute_list(parser, node) return node node = Element('reference') node.pos = parser.copy_pos() node['_pos'] = parser.copy_pos() node.ref_end = ref_end parser.update(parser.caret+1) return node
def make_node(self): """Returns an `Element` node. """ parser = self.parser caret = parser.caret tmp = self.is_element(parser) if tmp is None: return None endindex = tmp[0] shift = tmp[1] pos = parser.copy_pos() match = RE.search(parser.text, caret+shift) tagname = parser.text[parser.caret+shift:match.end(0)-1].lower() if tagname == '' or tagname[0] in '.#!@': tagname = 'span' parser.update(caret+3) else: parser.update(match.end(0)-1) if tagname in VOID_ELEMENT: node = Void(tagname) elif tagname in RAWTEXT_ELEMENT: node = RawText(tagname) else: node = Element(tagname) if parser.text[parser.caret] == END_CHAR[shift]: parser.update(parser.caret+1) elif parser.text[parser.caret] == '/': parser.update(endindex+1) else: self.read_attributes(parser, node, endindex) if isinstance(node, Void): return [node] if isinstance(node, RawText): node.data = self.get_raw_text(parser, tagname, pos, shift) return [node] node.pos = pos node.type__ = shift return node