Пример #1
0
 def test_add_toc_if_not_exists(self):
     with NamedTemporaryFile(mode="w+") as temp_f:
         temp_f.write(
             "\n".join(
                 [
                     "# header",
                     "",
                     "- [TOC](#toc)",
                     "- [TOC2](#toc2)",
                     "",
                     "## header2",
                     "",
                     "### header3",
                     "",
                 ]
             )
         )
         temp_f.flush()
         md_doc = MDDocument(Path(temp_f.name))
         md_doc.read()
     # md_doc.append_title('header', level=1)
     # md_doc.append_title('header2', level=2)
     self.assertEqual(md_doc.toc_section, "- [TOC](#toc)\n- [TOC2](#toc2)")
     md_doc.add_toc_if_not_exists()
     self.assertEqual(md_doc.toc_section, "- [TOC](#toc)\n- [TOC2](#toc2)")
     md_doc.toc_section = ""
     md_doc.add_toc_if_not_exists()
     self.assertEqual(
         md_doc.toc_section,
         "- [header](#header)\n    - [header2](#header2)\n        - [header3](#header3)",
     )
Пример #2
0
    def _generate_doc(self, module_record: ModuleRecord,
                      md_document: MDDocument) -> None:
        self._logger.debug("Generating doc {} for {}".format(
            self._root_path_finder.relative(md_document.path),
            self._root_path_finder.relative(module_record.source_path),
        ))
        try:
            self._loader.parse_module_record(module_record)
        except LoaderError as e:
            if self._raise_errors:
                raise

            self._logger.warning("Skipping: {}".format(e))
            return

        source_link = md_document.render_doc_link(
            title=module_record.import_string.value,
            target_path=module_record.source_path,
        )
        if self._source_code_url:
            relative_path_str = self._root_path_finder.relative(
                module_record.source_path).as_posix()
            source_link = md_document.render_link(
                title=module_record.import_string.value,
                link="{}{}".format(self._source_code_url, relative_path_str),
            )

        md_document.title = module_record.title

        self._render_docstring(module_record=module_record,
                               record=module_record,
                               md_document=md_document)

        autogenerated_marker = "> Auto-generated documentation for {} module.".format(
            source_link)
        if md_document.subtitle:
            md_document.subtitle = "{}\n\n{}".format(autogenerated_marker,
                                                     md_document.subtitle)
        else:
            md_document.subtitle = autogenerated_marker

        self._generate_module_doc_lines(module_record, md_document)
        md_document.add_toc_if_not_exists()

        modules_toc_lines = self._build_modules_toc_lines(
            module_record.import_string,
            max_depth=self._toc_depth,
            md_document=md_document,
            start_level=2,
        )

        toc_lines = md_document.toc_section.split("\n")
        breadscrumbs = self._build_breadcrumbs_string(
            module_record=module_record, md_document=md_document)
        toc_lines[0] = md_document.get_toc_line(breadscrumbs, level=0)
        if modules_toc_lines:
            toc_line = md_document.get_toc_line(self.MODULES_TITLE, level=1)
            toc_lines.append(toc_line)
            for line in modules_toc_lines:
                toc_lines.append(line)

        md_document.toc_section = "\n".join(toc_lines)