Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2017-12-07 09:45:29 +0300
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2017-12-12 12:24:53 +0300
commit07c5348a56471201b5901881b0d9d83f4823a6fd (patch)
tree85cf5573c3d230512887fd4b1d90216cba78130e /sphinx/parsers.py
parent773173b11f04f08547999c0799911fc7aa96d0d3 (diff)
Add test_io.py
Diffstat (limited to 'sphinx/parsers.py')
-rw-r--r--sphinx/parsers.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/sphinx/parsers.py b/sphinx/parsers.py
index 33556e487..085e45070 100644
--- a/sphinx/parsers.py
+++ b/sphinx/parsers.py
@@ -11,6 +11,8 @@
import docutils.parsers
import docutils.parsers.rst
+from docutils.parsers.rst import states
+from docutils.statemachine import StringList
from docutils.transforms.universal import SmartQuotes
from sphinx.transforms import SphinxSmartQuotes
@@ -66,6 +68,26 @@ class RSTParser(docutils.parsers.rst.Parser):
transforms.append(SphinxSmartQuotes)
return transforms
+ def parse(self, inputstring, document):
+ # type: (Any, nodes.document) -> None
+ """Parse text and generate a document tree.
+
+ This derived method accepts StringList as a inputstring parameter.
+ It enables to handle mixed contents (cf. rst_prolog) correctly.
+ """
+ if isinstance(inputstring, StringList):
+ self.setup_parse(inputstring, document)
+ self.statemachine = states.RSTStateMachine(
+ state_classes=self.state_classes,
+ initial_state=self.initial_state,
+ debug=document.reporter.debug_flag)
+ # Give inputstring directly to statemachine.
+ self.statemachine.run(inputstring, document, inliner=self.inliner)
+ self.finish_parse()
+ else:
+ # otherwise, inputstring might be a string. It will be handled by superclass.
+ docutils.parsers.rst.Parser.parse(self, inputstring, document)
+
def setup(app):
# type: (Sphinx) -> Dict[unicode, Any]