|
15 | 15 | from typing import Any |
16 | 16 |
|
17 | 17 | from sphinx.application import Sphinx |
| 18 | + from sphinx.builders import Builder |
18 | 19 | from sphinx.config import Config |
19 | 20 | from sphinx.environment import BuildEnvironment |
20 | 21 | from sphinx.util.typing import ExtensionMetadata |
@@ -58,10 +59,14 @@ def make_tag(property: str, content: str, type_: str = "property") -> str: |
58 | 59 |
|
59 | 60 |
|
60 | 61 | def get_tags( |
61 | | - app: Sphinx, |
62 | 62 | context: dict[str, Any], |
63 | 63 | doctree: nodes.document, |
| 64 | + *, |
| 65 | + srcdir: str | Path, |
| 66 | + outdir: str | Path, |
64 | 67 | config: Config, |
| 68 | + builder: Builder, |
| 69 | + env: BuildEnvironment, |
65 | 70 | ) -> str: |
66 | 71 | # Get field lists for per-page overrides |
67 | 72 | fields = context["meta"] |
@@ -119,9 +124,7 @@ def get_tags( |
119 | 124 |
|
120 | 125 | # url tag |
121 | 126 | # Get the URL of the specific page |
122 | | - page_url = urljoin( |
123 | | - config.ogp_site_url, app.builder.get_target_uri(context["pagename"]) |
124 | | - ) |
| 127 | + page_url = urljoin(config.ogp_site_url, builder.get_target_uri(context["pagename"])) |
125 | 128 | tags["og:url"] = page_url |
126 | 129 |
|
127 | 130 | # site name tag, False disables, default to project if ogp_site_name not |
@@ -173,10 +176,10 @@ def get_tags( |
173 | 176 | title=title, |
174 | 177 | description=description, |
175 | 178 | pagename=context["pagename"], |
176 | | - srcdir=app.srcdir, |
177 | | - outdir=app.outdir, |
| 179 | + srcdir=srcdir, |
| 180 | + outdir=outdir, |
178 | 181 | config=config, |
179 | | - env=app.env, |
| 182 | + env=env, |
180 | 183 | ) |
181 | 184 | ogp_use_first_image = False |
182 | 185 |
|
@@ -306,7 +309,15 @@ def html_page_context( |
306 | 309 | doctree: nodes.document, |
307 | 310 | ) -> None: |
308 | 311 | if doctree: |
309 | | - context["metatags"] += get_tags(app, context, doctree, app.config) |
| 312 | + context["metatags"] += get_tags( |
| 313 | + context, |
| 314 | + doctree, |
| 315 | + srcdir=app.srcdir, |
| 316 | + outdir=app.outdir, |
| 317 | + config=app.config, |
| 318 | + builder=app.builder, |
| 319 | + env=app.env, |
| 320 | + ) |
310 | 321 |
|
311 | 322 |
|
312 | 323 | def setup(app: Sphinx) -> ExtensionMetadata: |
|
0 commit comments