23
23
from docutils .parsers import Parser
24
24
from docutils .transforms import Transform
25
25
26
- from sphinx .application import Sphinx
27
26
from sphinx .environment import BuildEnvironment
28
- from sphinx .registry import SphinxComponentRegistry
29
27
30
28
31
29
logger = logging .getLogger (__name__ )
@@ -70,8 +68,8 @@ def new_document(self) -> nodes.document:
70
68
class SphinxStandaloneReader (SphinxBaseReader ):
71
69
"""A basic document reader for Sphinx."""
72
70
73
- def _setup_transforms (self , * , registry : SphinxComponentRegistry ) -> None :
74
- self .transforms = self .transforms + registry . get_transforms ()
71
+ def _setup_transforms (self , transforms : list [ type [ Transform ]], / ) -> None :
72
+ self .transforms = self .transforms + transforms
75
73
76
74
def read (self , source : Input , parser : Parser , settings : Values ) -> nodes .document : # type: ignore[type-arg]
77
75
self .source = source
@@ -114,21 +112,11 @@ def __init__(self, *args: Any, **kwargs: Any) -> None:
114
112
super ().__init__ (* args , ** kwargs )
115
113
116
114
117
- def create_publisher (app : Sphinx , filetype : str ) -> Publisher :
115
+ def _create_publisher (
116
+ * , env : BuildEnvironment , parser : Parser , transforms : list [type [Transform ]]
117
+ ) -> Publisher :
118
118
reader = SphinxStandaloneReader ()
119
- reader ._setup_transforms (registry = app .registry )
120
-
121
- parser = app .registry .create_source_parser (filetype , config = app .config , env = app .env )
122
- if parser .__class__ .__name__ == 'CommonMarkParser' and parser .settings_spec == ():
123
- # a workaround for recommonmark
124
- # If recommonmark.AutoStrictify is enabled, the parser invokes reST parser
125
- # internally. But recommonmark-0.4.0 does not provide settings_spec for reST
126
- # parser. As a workaround, this copies settings_spec for RSTParser to the
127
- # CommonMarkParser.
128
- from docutils .parsers .rst import Parser as RSTParser
129
-
130
- parser .settings_spec = RSTParser .settings_spec # type: ignore[misc]
131
-
119
+ reader ._setup_transforms (transforms )
132
120
pub = Publisher (
133
121
reader = reader ,
134
122
parser = parser ,
@@ -137,7 +125,7 @@ def create_publisher(app: Sphinx, filetype: str) -> Publisher:
137
125
destination = NullOutput (),
138
126
)
139
127
# Propagate exceptions by default when used programmatically:
140
- defaults = {'traceback' : True , ** app . env .settings }
128
+ defaults = {'traceback' : True , ** env .settings }
141
129
# Set default settings
142
130
pub .get_settings (** defaults )
143
131
return pub
0 commit comments