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