summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2017-10-31 23:04:24 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2017-10-31 23:05:07 +0900
commitd23f29f301648ba9f84641fb44ebab43b07deb48 (patch)
treeb98d7f501c5f5dd953a9ba99f04da68487847140
parent07220140ac18894d6102042ba3633df985df4942 (diff)
downloadsphinx-git-d23f29f301648ba9f84641fb44ebab43b07deb48.tar.gz
Refactor publishment
-rw-r--r--sphinx/environment/__init__.py17
-rw-r--r--sphinx/io.py5
2 files changed, 14 insertions, 8 deletions
diff --git a/sphinx/environment/__init__.py b/sphinx/environment/__init__.py
index 666d29129..8897f1d33 100644
--- a/sphinx/environment/__init__.py
+++ b/sphinx/environment/__init__.py
@@ -33,7 +33,9 @@ from docutils.parsers.rst.languages import en as english
from docutils.frontend import OptionParser
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 get_matching_docs, FilenameUniqDict, status_iterator
from sphinx.util.nodes import is_translatable
@@ -713,17 +715,16 @@ class BuildEnvironment(object):
# publish manually
reader = SphinxStandaloneReader(self.app,
parsers=self.app.registry.get_source_parsers())
+ src_path = self.doc2path(docname)
+ source = SphinxFileInput(app, self, source=None, source_path=src_path,
+ encoding=self.config.source_encoding)
pub = Publisher(reader=reader,
writer=SphinxDummyWriter(),
- destination_class=NullOutput)
+ source_class=SphinxDummySourceClass,
+ destination=NullOutput())
pub.set_components(None, 'restructuredtext', None)
pub.process_programmatic_settings(None, self.settings, None)
- src_path = self.doc2path(docname)
- source = SphinxFileInput(app, self, source=None, source_path=src_path,
- encoding=self.config.source_encoding)
- pub.source = source
- pub.settings._source = src_path
- pub.set_destination(None, None)
+ pub.set_source(source, src_path)
pub.publish()
doctree = pub.document
diff --git a/sphinx/io.py b/sphinx/io.py
index 8813cb3b6..9b27e04fd 100644
--- a/sphinx/io.py
+++ b/sphinx/io.py
@@ -143,6 +143,11 @@ class SphinxDummyWriter(UnfilteredWriter):
pass
+def SphinxDummySourceClass(source, *args, **kwargs):
+ """Bypass source object as is to cheat Publisher."""
+ return source
+
+
class SphinxFileInput(FileInput):
def __init__(self, app, env, *args, **kwds):
# type: (Sphinx, BuildEnvironment, Any, Any) -> None