Exemplo n.º 1
0
    def _merge_directives(directives: List[StringList]) -> StringList:
        """
        The last directive heading will be used to represent the heading for the entire
        group of directives.

        Args:
            directives (list(StringList)): The list of directives to merge.

        Returns:
            StringList: One directive
        """
        merged_heading = StringList()
        merged_directive = StringList()
        merged_options = StringList()
        for directive in directives:
            options, _, _ = directive.get_indented(1,
                                                   until_blank=True,
                                                   strip_indent=False)
            if options:
                merged_options.extend(options)
                del directive[1:1 + len(options)]

            directive_heading = directive[0]
            del directive[0]

            merged_directive.extend(directive)

            merged_heading = directive_heading

        merged_directive.insert(0, merged_options)
        merged_directive.insert(0,
                                merged_heading,
                                source=merged_directive.source(0))
        return merged_directive
 def decorate(self, content: StringList) -> None:
     """Preprocess reST content before parsing."""
     super().decorate(content)
     for line in content[:20]:
         if line.startswith(TITLE_MARKER):
             title = line[len(TITLE_MARKER):].strip()
             fence = "=" * len(title)
             content.insert(0, "", "<generated>", 0)
             content.insert(0, fence, "<generated>", 0)
             content.insert(0, title, "<generated>", 0)
             content.insert(0, fence, "<generated>", 0)
Exemplo n.º 3
0
    def prepend_prolog(self, text: StringList, prolog: str) -> None:
        docinfo = self.count_docinfo_lines(text)
        if docinfo:
            # insert a blank line after docinfo
            text.insert(docinfo, '', '<generated>', 0)
            docinfo += 1

        # insert prolog (after docinfo if exists)
        for lineno, line in enumerate(prolog.splitlines()):
            text.insert(docinfo + lineno, line, '<rst_prolog>', lineno)

        text.insert(docinfo + lineno + 1, '', '<generated>', 0)
Exemplo n.º 4
0
def prepend_prolog(content: StringList, prolog: str) -> None:
    """Prepend a string to content body as prolog."""
    if prolog:
        pos = 0
        for line in content:
            if docinfo_re.match(line):
                pos += 1
            else:
                break

        if pos > 0:
            # insert a blank line after docinfo
            content.insert(pos, '', '<generated>', 0)
            pos += 1

        # insert prolog (after docinfo if exists)
        for lineno, line in enumerate(prolog.splitlines()):
            content.insert(pos + lineno, line, '<rst_prolog>', lineno)

        content.insert(pos + lineno + 1, '', '<generated>', 0)