Skip to content

mkdocsbuilder

Class info

Classes

Name Children Inherits
MkDocsBuilder
mkdocs_mknodes.plugin.mkdocsbuilder
    MkDocsPage
    mkdocs_mknodes.plugin.mkdocsbuilder
    MkPage-based Mkocs-Page subclass.
      MkNodesConfig
      mkdocs_mknodes.plugin.mknodesconfig

        🛈 DocStrings

        MkDocsBuilder

        Source code in mkdocs_mknodes/plugin/mkdocsbuilder.py
         33
         34
         35
         36
         37
         38
         39
         40
         41
         42
         43
         44
         45
         46
         47
         48
         49
         50
         51
         52
         53
         54
         55
         56
         57
         58
         59
         60
         61
         62
         63
         64
         65
         66
         67
         68
         69
         70
         71
         72
         73
         74
         75
         76
         77
         78
         79
         80
         81
         82
         83
         84
         85
         86
         87
         88
         89
         90
         91
         92
         93
         94
         95
         96
         97
         98
         99
        100
        101
        102
        103
        104
        105
        106
        107
        108
        109
        110
        111
        112
        113
        114
        115
        116
        117
        118
        119
        120
        121
        122
        123
        124
        125
        126
        127
        128
        129
        130
        131
        132
        133
        134
        135
        136
        137
        class MkDocsBuilder:
            def __init__(
                self,
                config: mkdocsconfig.Config
                | MkNodesConfig
                | str
                | os.PathLike[str]
                | None = None,
            ):
                """Constructor.
        
                Args:
                    config: MkDocs Config
                """
                match config:
                    case mkdocsconfig.Config():
                        self._config = config._config
                    case MkNodesConfig():
                        self._config = config
                    case _:
                        self._config = mkdocsconfig.Config(config)._config
                self.mk_files = files_.Files([])
        
            def get_file(
                self,
                path: str | os.PathLike[str],
                src_dir: str | os.PathLike[str] | None = None,
                dest_dir: str | os.PathLike[str] | None = None,
                inclusion_level: files_.InclusionLevel = files_.InclusionLevel.UNDEFINED,
            ) -> files_.File:
                """Return a MkDocs File for given path.
        
                Args:
                    path: path to get a File object for (relative to src_dir)
                    src_dir: Source directory. If None, docs_dir is used.
                    dest_dir: Target directory. If None, site_dir is used.
                    inclusion_level: Inclusion level of new file
                """
                new_f = files_.File(
                    os.fspath(path),
                    src_dir=str(src_dir) if src_dir else self._config.docs_dir,
                    dest_dir=str(dest_dir) if dest_dir else self._config.site_dir,
                    use_directory_urls=self._config.use_directory_urls,
                    inclusion=inclusion_level,
                )
                self.mk_files.append(new_f)
                new_f.generated_by = "mknodes"  # type: ignore
                return new_f
        
            def get_section_page(
                self,
                title: str,
                path: str | os.PathLike[str],
                children: list[pages.Page | nav.Section | nav.Link],
                inclusion_level: files_.InclusionLevel = files_.InclusionLevel.UNDEFINED,
            ) -> pages.Page:
                import mkdocs_section_index
        
                file = self.get_file(path, inclusion_level=inclusion_level)
                return mkdocs_section_index.SectionPage(
                    title=title,
                    file=file,
                    config=self._config,
                    children=children,
                )
        
            def get_page(
                self,
                mkpage,
                run_event_hooks: bool = False,
            ) -> pages.Page:
                file = self.get_file(
                    mkpage.resolved_file_path,
                    inclusion_level=files_.InclusionLevel.UNDEFINED,
                )
                page = MkDocsPage(mkpage, file, self._config)
        
                if run_event_hooks:
                    self._config._current_page = page
                    page = self._config.plugins.on_pre_page(
                        page,
                        config=self._config,
                        files=self.mk_files,
                    )
                    page.read_source(self._config)
                    page.markdown = self._config.plugins.on_page_markdown(
                        page.markdown or "",
                        page=page,
                        config=self._config,
                        files=self.mk_files,
                    )
                    page.render(self._config, self.mk_files)
                    page.content = self._config.plugins.on_page_content(
                        page.content or "",
                        page=page,
                        config=self._config,
                        files=self.mk_files,
                    )
        
                    self._config._current_page = None
        
                return page
        
            def get_nav(self) -> nav.Navigation:
                return nav.get_navigation(self.mk_files, self._config)
        

        __init__

        __init__(config: Config | MkNodesConfig | str | PathLike[str] | None = None)
        

        Constructor.

        Parameters:

        Name Type Description Default
        config Config | MkNodesConfig | str | PathLike[str] | None

        MkDocs Config

        None
        Source code in mkdocs_mknodes/plugin/mkdocsbuilder.py
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        def __init__(
            self,
            config: mkdocsconfig.Config
            | MkNodesConfig
            | str
            | os.PathLike[str]
            | None = None,
        ):
            """Constructor.
        
            Args:
                config: MkDocs Config
            """
            match config:
                case mkdocsconfig.Config():
                    self._config = config._config
                case MkNodesConfig():
                    self._config = config
                case _:
                    self._config = mkdocsconfig.Config(config)._config
            self.mk_files = files_.Files([])
        

        get_file

        get_file(
            path: str | PathLike[str],
            src_dir: str | PathLike[str] | None = None,
            dest_dir: str | PathLike[str] | None = None,
            inclusion_level: InclusionLevel = UNDEFINED,
        ) -> File
        

        Return a MkDocs File for given path.

        Parameters:

        Name Type Description Default
        path str | PathLike[str]

        path to get a File object for (relative to src_dir)

        required
        src_dir str | PathLike[str] | None

        Source directory. If None, docs_dir is used.

        None
        dest_dir str | PathLike[str] | None

        Target directory. If None, site_dir is used.

        None
        inclusion_level InclusionLevel

        Inclusion level of new file

        UNDEFINED
        Source code in mkdocs_mknodes/plugin/mkdocsbuilder.py
        56
        57
        58
        59
        60
        61
        62
        63
        64
        65
        66
        67
        68
        69
        70
        71
        72
        73
        74
        75
        76
        77
        78
        79
        80
        def get_file(
            self,
            path: str | os.PathLike[str],
            src_dir: str | os.PathLike[str] | None = None,
            dest_dir: str | os.PathLike[str] | None = None,
            inclusion_level: files_.InclusionLevel = files_.InclusionLevel.UNDEFINED,
        ) -> files_.File:
            """Return a MkDocs File for given path.
        
            Args:
                path: path to get a File object for (relative to src_dir)
                src_dir: Source directory. If None, docs_dir is used.
                dest_dir: Target directory. If None, site_dir is used.
                inclusion_level: Inclusion level of new file
            """
            new_f = files_.File(
                os.fspath(path),
                src_dir=str(src_dir) if src_dir else self._config.docs_dir,
                dest_dir=str(dest_dir) if dest_dir else self._config.site_dir,
                use_directory_urls=self._config.use_directory_urls,
                inclusion=inclusion_level,
            )
            self.mk_files.append(new_f)
            new_f.generated_by = "mknodes"  # type: ignore
            return new_f
        

        MkDocsPage

        Bases: Page

        MkPage-based Mkocs-Page subclass.

        Source code in mkdocs_mknodes/plugin/mkdocsbuilder.py
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        class MkDocsPage(pages.Page):
            """MkPage-based Mkocs-Page subclass."""
        
            def __init__(self, mkpage: mk.MkPage, file: files_.File, config: MkNodesConfig):
                self.mkpage = mkpage
                super().__init__(title=self.mkpage.title, file=file, config=config)
        
            def read_source(self, config: MkDocsConfig):
                self.meta = self.mkpage.metadata
                self.mkpage.metadata = {}
                self.markdown = str(self.mkpage)
                self.mkpage.metadata = self.meta