88from pathlib import Path
99from 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]
1213from beartype import beartype
1314from docutils import nodes
1415from docutils .nodes import NodeVisitor
16+ from docutils .parsers .rst .states import Inliner
17+ from docutils .utils import unescape
1518from sphinx .application import Sphinx
1619from sphinx .builders .text import TextBuilder
1720from sphinx .util .typing import ExtensionMetadata
1821from sphinx_toolbox .collapse import CollapseNode
1922from 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 (
28+ strike_node , # pyright: ignore[reportMissingTypeStubs]
29+ )
2330from ultimate_notion import Emoji
2431from ultimate_notion .blocks import Block , ChildrenMixin
2532from ultimate_notion .blocks import BulletedItem as UnoBulletedItem
@@ -1128,6 +1135,24 @@ def _depart_video_node_notion(
11281135 del node
11291136
11301137
1138+ def _override_strike_role ( # pylint: disable=dangerous-default-value
1139+ typ : str ,
1140+ rawtext : str ,
1141+ text : str , # pylint: disable=redefined-outer-name
1142+ lineno : int ,
1143+ inliner : Inliner ,
1144+ options : dict [Any , Any ] = {},
1145+ content : list [str ] = [],
1146+ ) -> tuple [list [nodes .Node ], list [nodes .system_message ]]:
1147+ del typ
1148+ del lineno
1149+ del options
1150+ del content
1151+ env = inliner .document .settings .env
1152+ node = strike_node (rawtext , unescape (text = text ))
1153+ node ["docname" ] = env .docname
1154+ return [node ], []
1155+
11311156@beartype
11321157def setup (app : Sphinx ) -> ExtensionMetadata :
11331158 """
@@ -1141,5 +1166,10 @@ def setup(app: Sphinx) -> ExtensionMetadata:
11411166 notion = (_visit_video_node_notion , _depart_video_node_notion ),
11421167 override = True ,
11431168 )
1144- sphinxnotes .strike .SUPPORTED_BUILDERS .append (NotionBuilder )
1169+
1170+ # After ``sphinxnotes-strike`` is updated to have a ``SUPPORTED_BUILDERS``
1171+ # attribute, we can remove this and use the default ``strike_role``,
1172+ # and append ``NotionBuilder`` to ``SUPPORTED_BUILDERS``.
1173+ sphinxnotes .strike .strike_role = _override_strike_role
1174+ assert sphinxnotes .strike .strike_role is not None
11451175 return {"parallel_read_safe" : True }
0 commit comments