1919from sphinx .builders import Builder
2020from sphinx .builders .html import StandaloneHTMLBuilder
2121from sphinx .builders .latex import LaTeXBuilder
22+ from sphinx .util import logging
23+ from sphinx .environment import BuildEnvironment
2224
2325from . import meta
2426
27+ logger = logging .getLogger (__name__ )
2528
26- # List of all builders that support render :class:`strike_node` .
29+ # NOTE: DEPRECATED since 1.3, DO NOT it .
2730SUPPORTED_BUILDERS : list [type [Builder ]] = [StandaloneHTMLBuilder , LaTeXBuilder ]
2831
32+
2933class strike_node (nodes .Inline , nodes .TextElement ):
3034 pass
3135
@@ -39,10 +43,16 @@ def strike_role(
3943 options : Dict = {},
4044 content : List [str ] = [],
4145) -> Tuple [List [Node ], List [system_message ]]:
42- env = inliner .document .settings .env # type: ignore
43-
44- if not isinstance (env .app .builder , tuple (SUPPORTED_BUILDERS )):
45- # Builder is not supported, fallback to text.
46+ env : BuildEnvironment = inliner .document .settings .env # type: ignore
47+ builder = env .app .builder
48+
49+ if not _is_supported_builder (builder ):
50+ logger .warning (
51+ f'role { typ } is not supported for builder { builder .name } , fallback to text' ,
52+ location = (env .docname , lineno ),
53+ type = 'strike' ,
54+ subtype = 'unspported_builder' ,
55+ )
4656 return [Text (unescape (text ))], []
4757
4858 node = strike_node (rawtext , unescape (text ))
@@ -74,6 +84,15 @@ def latext_depart_strike_node(self, node: strike_node) -> None:
7484 self .body .append ('}' )
7585
7686
87+ def _is_supported_builder (builder : Builder ) -> bool :
88+ if isinstance (builder , tuple (SUPPORTED_BUILDERS )):
89+ return True # NOTE: Compatible with version 1.2.
90+
91+ # a dict of builder name -> dict of node name -> visitor and departure functions
92+ handlers = builder .app .registry .translation_handlers [builder .name ]
93+ return handlers .get (strike_node .__name__ ) is not None
94+
95+
7796def setup (app : Sphinx ):
7897 """Sphinx extension entrypoint."""
7998 meta .pre_setup (app )
0 commit comments