diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2017-05-28 22:08:52 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2017-05-28 22:34:53 +0900 |
commit | 69cf328b8bdc0b2e9b6243bd0e6de2905d03637e (patch) | |
tree | ebe25f43fdf29e2be5f0d3cf5c75d9a6874c36f2 /sphinx/parsers.py | |
parent | 19e4462fd73e01dd6dd0c695cf9353153e8c54c8 (diff) | |
download | sphinx-git-69cf328b8bdc0b2e9b6243bd0e6de2905d03637e.tar.gz |
Add Sphinx own parser (refs: #3816)
Diffstat (limited to 'sphinx/parsers.py')
-rw-r--r-- | sphinx/parsers.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sphinx/parsers.py b/sphinx/parsers.py index 9aba947d3..d4123880c 100644 --- a/sphinx/parsers.py +++ b/sphinx/parsers.py @@ -10,9 +10,15 @@ """ import docutils.parsers +import docutils.parsers.rst +from docutils.transforms.universal import SmartQuotes + +from sphinx.transforms import SphinxSmartQuotes if False: # For type annotation + from typing import Any, Dict, Type # NOQA + from docutils.transforms import Transform # NOQA from sphinx.application import Sphinx # NOQA @@ -47,3 +53,26 @@ class Parser(docutils.parsers.Parser): self.env = app.env self.warn = app.warn self.info = app.info + + +class RSTParser(docutils.parsers.rst.Parser): + """A reST parser customized for Sphinx.""" + + def get_transforms(self): + # type: () -> List[Type[Transform]] + """Sphinx's reST parser replaces a transform class for smart-quotes by own's""" + transforms = docutils.parsers.rst.Parser.get_transforms(self) + transforms.remove(SmartQuotes) + transforms.append(SphinxSmartQuotes) + return transforms + + +def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] + app.add_source_parser('*', RSTParser) # register as a special parser + + return { + 'version': 'builtin', + 'parallel_read_safe': True, + 'parallel_write_safe': True, + } |