diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2016-08-22 15:53:20 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2016-09-01 23:31:45 +0900 |
commit | e1e5ae4b651cb7ad391fb537459155b4a10bade1 (patch) | |
tree | 613797f0a3f71a2c403f1c688e144fd3d7edb14e /sphinx/directives/patches.py | |
parent | 97c6cc4e1057dfa91dc1caf1f14d49f5320d7680 (diff) | |
download | sphinx-git-e1e5ae4b651cb7ad391fb537459155b4a10bade1.tar.gz |
Preserve filename and line number for meta nodes
Diffstat (limited to 'sphinx/directives/patches.py')
-rw-r--r-- | sphinx/directives/patches.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/sphinx/directives/patches.py b/sphinx/directives/patches.py index a4a046917..6a88db09a 100644 --- a/sphinx/directives/patches.py +++ b/sphinx/directives/patches.py @@ -9,7 +9,9 @@ from docutils import nodes from docutils.parsers.rst import directives -from docutils.parsers.rst.directives import images +from docutils.parsers.rst.directives import images, html + +from sphinx import addnodes class Figure(images.Figure): @@ -35,5 +37,23 @@ class Figure(images.Figure): return [figure_node] +class Meta(html.Meta): + def run(self): + env = self.state.document.settings.env + result = html.Meta.run(self) + for node in result: + if (isinstance(node, nodes.pending) and + isinstance(node.details['nodes'][0], html.MetaBody.meta)): + meta = node.details['nodes'][0] + meta.source = env.doc2path(env.docname) + meta.line = self.lineno + + # docutils' meta nodes aren't picklable because the class is nested + meta.__class__ = addnodes.meta + + return result + + def setup(app): directives.register_directive('figure', Figure) + directives.register_directive('meta', Meta) |