mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Refactor publishment
This commit is contained in:
parent
07220140ac
commit
d23f29f301
@ -33,7 +33,9 @@ from docutils.parsers.rst.languages import en as english
|
|||||||
from docutils.frontend import OptionParser
|
from docutils.frontend import OptionParser
|
||||||
|
|
||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
from sphinx.io import SphinxStandaloneReader, SphinxDummyWriter, SphinxFileInput
|
from sphinx.io import (
|
||||||
|
SphinxStandaloneReader, SphinxDummySourceClass, SphinxDummyWriter, SphinxFileInput
|
||||||
|
)
|
||||||
from sphinx.util import logging
|
from sphinx.util import logging
|
||||||
from sphinx.util import get_matching_docs, FilenameUniqDict, status_iterator
|
from sphinx.util import get_matching_docs, FilenameUniqDict, status_iterator
|
||||||
from sphinx.util.nodes import is_translatable
|
from sphinx.util.nodes import is_translatable
|
||||||
@ -713,17 +715,16 @@ class BuildEnvironment(object):
|
|||||||
# publish manually
|
# publish manually
|
||||||
reader = SphinxStandaloneReader(self.app,
|
reader = SphinxStandaloneReader(self.app,
|
||||||
parsers=self.app.registry.get_source_parsers())
|
parsers=self.app.registry.get_source_parsers())
|
||||||
pub = Publisher(reader=reader,
|
|
||||||
writer=SphinxDummyWriter(),
|
|
||||||
destination_class=NullOutput)
|
|
||||||
pub.set_components(None, 'restructuredtext', None)
|
|
||||||
pub.process_programmatic_settings(None, self.settings, None)
|
|
||||||
src_path = self.doc2path(docname)
|
src_path = self.doc2path(docname)
|
||||||
source = SphinxFileInput(app, self, source=None, source_path=src_path,
|
source = SphinxFileInput(app, self, source=None, source_path=src_path,
|
||||||
encoding=self.config.source_encoding)
|
encoding=self.config.source_encoding)
|
||||||
pub.source = source
|
pub = Publisher(reader=reader,
|
||||||
pub.settings._source = src_path
|
writer=SphinxDummyWriter(),
|
||||||
pub.set_destination(None, None)
|
source_class=SphinxDummySourceClass,
|
||||||
|
destination=NullOutput())
|
||||||
|
pub.set_components(None, 'restructuredtext', None)
|
||||||
|
pub.process_programmatic_settings(None, self.settings, None)
|
||||||
|
pub.set_source(source, src_path)
|
||||||
pub.publish()
|
pub.publish()
|
||||||
doctree = pub.document
|
doctree = pub.document
|
||||||
|
|
||||||
|
@ -143,6 +143,11 @@ class SphinxDummyWriter(UnfilteredWriter):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def SphinxDummySourceClass(source, *args, **kwargs):
|
||||||
|
"""Bypass source object as is to cheat Publisher."""
|
||||||
|
return source
|
||||||
|
|
||||||
|
|
||||||
class SphinxFileInput(FileInput):
|
class SphinxFileInput(FileInput):
|
||||||
def __init__(self, app, env, *args, **kwds):
|
def __init__(self, app, env, *args, **kwds):
|
||||||
# type: (Sphinx, BuildEnvironment, Any, Any) -> None
|
# type: (Sphinx, BuildEnvironment, Any, Any) -> None
|
||||||
|
Loading…
Reference in New Issue
Block a user