plugin ¤
This module contains the "mkdocs-autorefs" plugin.
After each page is processed by the Markdown converter, this plugin stores absolute URLs of every HTML anchors it finds to later be able to fix unresolved references. It stores them during the on_page_content
event hook.
Just before writing the final HTML to the disc, during the on_post_page
event hook, this plugin searches for references of the form [identifier][]
or [title][identifier]
that were not resolved, and fixes them using the previously stored identifier-URL mapping.
AutorefsPlugin ¤
AutorefsPlugin()
Bases: BasePlugin
An mkdocs
plugin.
This plugin defines the following event hooks:
on_config
on_page_content
on_post_page
Check the Developing Plugins page of mkdocs
for more information about its plugin system.
Source code in src/mkdocs_autorefs/plugin.py
55 56 57 58 59 60 |
|
get_item_url ¤
get_item_url(
identifier: str,
from_url: str | None = None,
fallback: Callable[[str], Sequence[str]] | None = None,
) -> str
Return a site-relative URL with anchor to the identifier, if it's present anywhere.
Parameters:
- identifier (
str
) –The anchor (without '#').
- from_url (
str | None
) –The URL of the base page, from which we link towards the targeted pages.
- fallback (
Callable[[str], Sequence[str]] | None
) –An optional function to suggest alternative anchors to try on failure.
Returns:
-
str
–A site-relative URL.
Source code in src/mkdocs_autorefs/plugin.py
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
|
map_urls ¤
map_urls(base_url: str, anchor: AnchorLink) -> None
Recurse on every anchor to map its ID to its absolute URL.
This method populates self.url_map
by side-effect.
Parameters:
- base_url (
str
) –The base URL to use as a prefix for each anchor's relative URL.
- anchor (
AnchorLink
) –The anchor to process and to recurse on.
Source code in src/mkdocs_autorefs/plugin.py
175 176 177 178 179 180 181 182 183 184 185 186 |
|
on_config ¤
on_config(config: MkDocsConfig) -> MkDocsConfig | None
Instantiate our Markdown extension.
Hook for the on_config
event. In this hook, we instantiate our AutorefsExtension
and add it to the list of Markdown extensions used by mkdocs
.
Parameters:
- config (
MkDocsConfig
) –The MkDocs config object.
Returns:
-
MkDocsConfig | None
–The modified config.
Source code in src/mkdocs_autorefs/plugin.py
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
|
on_page_content ¤
Map anchors to URLs.
Hook for the on_page_content
event. In this hook, we map the IDs of every anchor found in the table of contents to the anchors absolute URLs. This mapping will be used later to fix unresolved reference of the form [title][identifier]
or [identifier][]
.
Parameters:
- html (
str
) –HTML converted from Markdown.
- page (
Page
) –The related MkDocs page instance.
- kwargs (
Any
) –Additional arguments passed by MkDocs.
Returns:
-
str
–The same HTML. We only use this hook to map anchors to URLs.
Source code in src/mkdocs_autorefs/plugin.py
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
|
on_page_markdown ¤
Remember which page is the current one.
Parameters:
- markdown (
str
) –Input Markdown.
- page (
Page
) –The related MkDocs page instance.
- kwargs (
Any
) –Additional arguments passed by MkDocs.
Returns:
-
str
–The same Markdown. We only use this hook to map anchors to URLs.
Source code in src/mkdocs_autorefs/plugin.py
139 140 141 142 143 144 145 146 147 148 149 150 151 |
|
on_post_page ¤
Fix cross-references.
Hook for the on_post_page
event. In this hook, we try to fix unresolved references of the form [title][identifier]
or [identifier][]
. Doing that allows the user of autorefs
to cross-reference objects in their documentation strings. It uses the native Markdown syntax so it's easy to remember and use.
We log a warning for each reference that we couldn't map to an URL, but try to be smart and ignore identifiers that do not look legitimate (sometimes documentation can contain strings matching our AUTO_REF_RE
regular expression that did not intend to reference anything). We currently ignore references when their identifier contains a space or a slash.
Parameters:
- output (
str
) –HTML converted from Markdown.
- page (
Page
) –The related MkDocs page instance.
- kwargs (
Any
) –Additional arguments passed by MkDocs.
Returns:
-
str
–Modified HTML.
Source code in src/mkdocs_autorefs/plugin.py
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
|
register_anchor ¤
Register that an anchor corresponding to an identifier was encountered when rendering the page.
Parameters:
- page (
str
) –The relative URL of the current page. Examples:
'foo/bar/'
,'foo/index.html'
- identifier (
str
) –The HTML anchor (without '#') as a string.
Source code in src/mkdocs_autorefs/plugin.py
62 63 64 65 66 67 68 69 |
|
register_url ¤
Register that the identifier should be turned into a link to this URL.
Parameters:
- identifier (
str
) –The new identifier.
- url (
str
) –The absolute URL (including anchor, if needed) where this item can be found.
Source code in src/mkdocs_autorefs/plugin.py
71 72 73 74 75 76 77 78 |
|