def start_list(ltype): """Create a new list element. """ if ltype == 'ol': node = Element('enumerate') else: node = Element('itemize') node.append_child(Element('li')) return node
def make_node(self): parser = self.parser index = self.is_auto_link(parser, parser.caret, parser.end) if index is None: return None url = parser.text[parser.caret + 1:index] node = Element('a') node['href'] = url node.append_child(Text(url)) parser.update(index + 1) parser['ElementNP'].get_attribute_list(parser, node) return [node]
def make_node(self): parser = self.parser index = self.is_auto_link(parser, parser.caret, parser.end) if index is None: return None url = parser.text[parser.caret + 1 : index] node = Element("a") node["href"] = url node.append_child(Text(url)) parser.update(index + 1) parser["ElementNP"].get_attribute_list(parser, node) return [node]
def make_node(self): parser = self.parser index = self.is_auto_mail(parser, parser.caret, parser.end) if index is None: return None email = parser.text[parser.caret + 1 : index] mailto = "mailto:" + email node = Element("a") node["href"] = mailto node.append_child(Text(email)) parser.update(index + 1) parser["ElementNP"].get_attribute_list(parser, node) return [node]
def make_node(self): parser = self.parser caret = parser.caret if caret != 0: return None entry = self.get_entry(parser) if entry is None: return None node = Element('lexor-meta') while entry is not None: node.append_child(entry) entry = self.get_entry(parser) return [node]
def make_node(self): parser = self.parser index = self.is_auto_mail(parser, parser.caret, parser.end) if index is None: return None email = parser.text[parser.caret + 1:index] mailto = "mailto:" + email node = Element('a') node['href'] = mailto node.append_child(Text(email)) parser.update(index + 1) parser['ElementNP'].get_attribute_list(parser, node) return [node]
def _create_node(self, parser, end_index, misaligned, doc_string): """Parse the doc_string and return the node. """ node = Element('doc-comment') if self.lexor_parser and not misaligned: self.lexor_parser.parse(doc_string) node['parsed'] = 'true' node.extend_children(self.lexor_parser.document) if self.lexor_parser.log: parser.update_log( self.lexor_parser.log, delta=[self.line_start - 1, self.indentation + 2] ) else: if not misaligned: self.msg('E404', parser.pos, [self.parser_name]) node['parsed'] = 'false' node.append_child(Text(doc_string)) parser.update(end_index) return [node]
def make_node(self): parser = self.parser match = FENCED.match(parser.text, parser.caret-1) if match: return self.get_fenced_block(match) text = self.parser.text[parser.caret:parser.caret+4] if text != 4*' ' and text[0:1] != '\t': return None node = Element('codeblock') index = parser.text.find('\n', parser.caret, parser.end) if index == -1: index = parser.end left_b = parser.text.find('{', parser.caret, index) if left_b != -1: line = parser.text[parser.caret:left_b] else: line = parser.text[parser.caret:index] line_one = line[1:] if line[0:1] == '\t' else line[4:] block = code_hilite(line_one, node) if left_b != -1: parser.update(left_b) self.parser['ElementNP'].get_attribute_list(parser, node) while index < parser.end: old_index = index + 1 index = parser.text.find('\n', old_index, parser.end) if index == -1: index = parser.end line = parser.text[old_index:index] if line[0:4] == 4*' ': block.append(line[4:]) elif line[0:1] == '\t': block.append(line[1:]) else: index = index + 1 break node.append_child(Text('\n'.join(block))) parser.update(index) return [node]
def get_fenced_block(self, match): """Parse a fenced block code. """ parser = self.parser text = parser.text total = text[match.start()+1:match.end()].count('~') parser.update(match.end()) node = Element('codeblock') index = parser.text.find('\n', parser.caret) if index == -1: index = parser.end left_b = parser.text.find('{', parser.caret, index) if left_b != -1: line = parser.text[parser.caret:left_b] else: line = parser.text[parser.caret:index] block = code_hilite(line, node) if block: append = block[0] + '\n' else: append = '' if left_b != -1: parser.update(left_b) self.parser['ElementNP'].get_attribute_list(parser, node) if text[parser.caret] == '\n': parser.update(parser.caret+1) else: parser.update(index+1) rfenced = re.compile(r'\n~{'+str(total-1)+',}[~]+[ ]*(\n|$)') match = rfenced.search(text, parser.caret) if not match: self.msg('E200', parser.pos, [total]) node.append_child(append+text[parser.caret:]) parser.update(parser.end) return [node] node.append_child(append+text[parser.caret:match.start()]) parser.update(match.end()) return [node]
def start_list(ltype): """Create a new list element. """ node = Element(ltype) node.append_child(Element('li')) return node
def build_node(parser, content): """Build the actual node with the given content. """ node = Element('code') node.append_child(Text(content)) parser['ElementNP'].get_attribute_list(parser, node) return [node]