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)
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)
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)