|
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