Пример #1
0
    def make_node(self):
        """Returns a header element."""
        parser = self.parser
        match = SETEXT_RE.match(parser.text, parser.caret, parser.end)
        if match is None:
            return None
        index = parser.text.find("\n", parser.caret, parser.end)

        level = 1
        if parser.text[index + 1] == "-":
            level = 2
        node = Element("h%d" % level)
        node.pos = parser.copy_pos()

        content_start = parser["EmptyNP"].skip_space(parser)
        final_pos = match.end(0)
        att = False
        left_b = None
        right_b = parser.text.rfind("}", content_start, index)
        if right_b != -1:
            if parser.text[right_b + 1 : index].strip() == "":
                left_b = parser.text.rfind("{", parser.caret, right_b)
                if left_b != -1 and parser.text[left_b - 1] in " \t":
                    att = True
        # Get the index where the content ends
        if att is True:
            content_end = left_b
        else:
            content_end = index

        node.content_end = content_end
        node.att = att
        node.left_b = left_b
        node.final_pos = final_pos
        return node
Пример #2
0
    def make_node(self):
        """Returns a header element."""
        parser = self.parser
        match = SETEXT_RE.match(parser.text, parser.caret, parser.end)
        if match is None:
            return None
        index = parser.text.find('\n', parser.caret, parser.end)

        level = 1
        if parser.text[index+1] == '-':
            level = 2
        node = Element('h%d' % level)
        node.pos = parser.copy_pos()

        content_start = parser['EmptyNP'].skip_space(parser)
        final_pos = match.end(0)
        att = False
        left_b = None
        right_b = parser.text.rfind('}', content_start, index)
        if right_b != -1:
            if parser.text[right_b+1:index].strip() == '':
                left_b = parser.text.rfind('{', parser.caret, right_b)
                if left_b != -1 and parser.text[left_b-1] in ' \t':
                    att = True
        # Get the index where the content ends
        if att is True:
            content_end = left_b
        else:
            content_end = index

        node.content_end = content_end
        node.att = att
        node.left_b = left_b
        node.final_pos = final_pos
        return node
Пример #3
0
 def make_node(self):
     parser = self.parser
     caret = parser.caret
     if parser.text[caret] != "#":
         return None
     index = parser.caret + 1
     level = 1
     while parser.text[index : index + 1] == "#":
         index += 1
         level += 1
         if level == 6:
             break
     tagname = "h%d" % level
     node = Element(tagname)
     node.pos = parser.copy_pos()
     # Get attributes if they follow right after the hash
     parser.update(index)
     parser["ElementNP"].get_attribute_list(parser, node)
     # Get index where content starts
     content_start = parser["EmptyNP"].skip_space(parser)
     # Get indices of the left and right bracket
     index = parser.text.find("\n", content_start, parser.end)
     if index == -1:
         index = parser.end
     final_pos = index + 1
     att = False
     left_b = None
     right_b = parser.text.rfind("}", content_start, index)
     if right_b != -1:
         if parser.text[right_b + 1 : index].strip() == "":
             left_b = parser.text.rfind("{", parser.caret, right_b)
             char = parser.text[left_b - 1]
             if left_b != -1 and char in " \t#":
                 att = True
     # Get the index where the content ends
     if att is True:
         content_end = left_b
     else:
         content_end = index
     index = content_end - 1
     # Check if there are extra hashes so that we can ignore them
     while parser.text[index] in " \t\r\f\v":
         index -= 1
     while parser.text[index] == "#":
         index -= 1
     if parser.text[index + 1 : index + 2] == "#":
         content_end = index + 1
     node.content_end = content_end
     node.att = att
     node.left_b = left_b
     node.final_pos = final_pos
     return node
Пример #4
0
 def make_node(self):
     parser = self.parser
     caret = parser.caret
     if parser.text[caret] != '#':
         return None
     index = parser.caret + 1
     level = 1
     while parser.text[index:index+1] == '#':
         index += 1
         level += 1
         if level == 6:
             break
     tagname = 'h%d' % level
     node = Element(tagname)
     node.pos = parser.copy_pos()
     # Get attributes if they follow right after the hash
     parser.update(index)
     parser['ElementNP'].get_attribute_list(parser, node)
     # Get index where content starts
     content_start = parser['EmptyNP'].skip_space(parser)
     # Get indices of the left and right bracket
     index = parser.text.find('\n', content_start, parser.end)
     if index == -1:
         index = parser.end
     final_pos = index + 1
     att = False
     left_b = None
     right_b = parser.text.rfind('}', content_start, index)
     if right_b != -1:
         if parser.text[right_b+1:index].strip() == '':
             left_b = parser.text.rfind('{', parser.caret, right_b)
             char = parser.text[left_b-1]
             if left_b != -1 and char in ' \t#':
                 att = True
     # Get the index where the content ends
     if att is True:
         content_end = left_b
     else:
         content_end = index
     index = content_end - 1
     # Check if there are extra hashes so that we can ignore them
     while parser.text[index] in ' \t\r\f\v':
         index -= 1
     while parser.text[index] == '#':
         index -= 1
     if parser.text[index+1:index+2] == '#':
         content_end = index+1
     node.content_end = content_end
     node.att = att
     node.left_b = left_b
     node.final_pos = final_pos
     return node