Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 1 addition & 30 deletions src/sphinxnotes/strike/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,17 @@

from docutils import nodes
from docutils.utils import unescape
from docutils.nodes import Node, system_message, Text
from docutils.nodes import Node, system_message
from docutils.parsers.rst.states import Inliner

from sphinx.application import Sphinx
from sphinx.builders import Builder
from sphinx.builders.html import StandaloneHTMLBuilder
from sphinx.builders.latex import LaTeXBuilder
from sphinx.util import logging
from sphinx.environment import BuildEnvironment

from . import meta

logger = logging.getLogger(__name__)

# NOTE: DEPRECATED since 1.3, DO NOT use it.
SUPPORTED_BUILDERS: list[type[Builder]] = [StandaloneHTMLBuilder, LaTeXBuilder]


class strike_node(nodes.Inline, nodes.TextElement):
pass

Expand All @@ -44,17 +37,6 @@ def strike_role(
content: List[str] = [],
) -> Tuple[List[Node], List[system_message]]:
env: BuildEnvironment = inliner.document.settings.env # type: ignore
builder = env.app.builder

if not _is_supported_builder(builder):
logger.warning(
f'role {typ} is not supported for builder {builder.name}, fallback to text',
location=(env.docname, lineno),
type='strike',
subtype='unsupported_builder',
)
return [Text(unescape(text))], []

node = strike_node(rawtext, unescape(text))
node['docname'] = env.docname
return [node], []
Expand Down Expand Up @@ -84,17 +66,6 @@ def latext_depart_strike_node(self, node: strike_node) -> None:
self.body.append('}')


def _is_supported_builder(builder: Builder) -> bool:
if isinstance(builder, tuple(SUPPORTED_BUILDERS)):
return True # NOTE: Compatible with version 1.2.

# a dict of builder name -> dict of node name -> visitor and departure functions
handlers = builder.app.registry.translation_handlers.get(builder.name)
if handlers is None:
return False
return handlers.get(strike_node.__name__) is not None


def setup(app: Sphinx):
"""Sphinx extension entrypoint."""
meta.pre_setup(app)
Expand Down