Skip to content

Commit 4fed321

Browse files
Merge pull request #223 from adamtheturtle/strike-no-prerelease
Remove requirement to have a pre-release dependency
2 parents 3457ff8 + 9c59e45 commit 4fed321

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ dependencies = [
3737
"sphinx>=8.2.3",
3838
"sphinx-toolbox>=4.0.0",
3939
"sphinxcontrib-video>=0.4.0",
40-
"sphinxnotes-strike>=1.3a1",
40+
"sphinxnotes-strike>=1.2.1",
4141
"ultimate-notion>=0.9.2",
4242
]
4343
optional-dependencies.dev = [

src/sphinx_notion/__init__.py

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,25 @@
88
from pathlib import Path
99
from typing import Any
1010

11-
import sphinxnotes.strike
11+
# Wait for ``sphinxnotes-strike`` to release a version with type stubs.
12+
import sphinxnotes.strike # pyright: ignore[reportMissingTypeStubs]
1213
from beartype import beartype
1314
from docutils import nodes
1415
from docutils.nodes import NodeVisitor
16+
from docutils.parsers.rst.states import Inliner
17+
from docutils.utils import unescape
1518
from sphinx.application import Sphinx
1619
from sphinx.builders.text import TextBuilder
1720
from sphinx.util.typing import ExtensionMetadata
1821
from sphinx_toolbox.collapse import CollapseNode
1922
from sphinxcontrib.video import ( # pyright: ignore[reportMissingTypeStubs]
2023
video_node,
2124
)
22-
from sphinxnotes.strike import strike_node
25+
26+
# Wait for ``sphinxnotes-strike`` to release a version with type stubs.
27+
from sphinxnotes.strike import ( # pyright: ignore[reportMissingTypeStubs]
28+
strike_node,
29+
)
2330
from ultimate_notion import Emoji
2431
from ultimate_notion.blocks import Block, ChildrenMixin
2532
from ultimate_notion.blocks import BulletedItem as UnoBulletedItem
@@ -1128,6 +1135,31 @@ def _depart_video_node_notion(
11281135
del node
11291136

11301137

1138+
@beartype
1139+
def _override_strike_role( # pylint: disable=too-many-positional-arguments
1140+
typ: str,
1141+
rawtext: str,
1142+
text: str, # pylint: disable=redefined-outer-name
1143+
lineno: int,
1144+
inliner: Inliner,
1145+
options: dict[Any, Any] | None = None,
1146+
content: list[str] | None = None,
1147+
) -> tuple[list[nodes.Node], list[nodes.system_message]]:
1148+
"""The ``sphinxnotes-strike`` extension's ``strike_role`` is overridden to
1149+
process strike nodes into Notion blocks.
1150+
1151+
This will not be needed after ``sphinxnotes-strike`` 1.3 is released.
1152+
"""
1153+
del typ
1154+
del lineno
1155+
del options
1156+
del content
1157+
env = inliner.document.settings.env
1158+
node = strike_node(rawtext, unescape(text=text))
1159+
node["docname"] = env.docname
1160+
return [node], []
1161+
1162+
11311163
@beartype
11321164
def setup(app: Sphinx) -> ExtensionMetadata:
11331165
"""
@@ -1141,5 +1173,10 @@ def setup(app: Sphinx) -> ExtensionMetadata:
11411173
notion=(_visit_video_node_notion, _depart_video_node_notion),
11421174
override=True,
11431175
)
1144-
sphinxnotes.strike.SUPPORTED_BUILDERS.append(NotionBuilder)
1176+
1177+
# After ``sphinxnotes-strike`` is updated to have a ``SUPPORTED_BUILDERS``
1178+
# attribute, we can remove this and use the default ``strike_role``,
1179+
# and append ``NotionBuilder`` to ``SUPPORTED_BUILDERS``.
1180+
sphinxnotes.strike.strike_role = _override_strike_role
1181+
assert sphinxnotes.strike.strike_role is not None
11451182
return {"parallel_read_safe": True}

0 commit comments

Comments
 (0)