summaryrefslogtreecommitdiff
path: root/sphinx/directives/patches.py
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2016-08-22 15:53:20 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2016-09-01 23:31:45 +0900
commite1e5ae4b651cb7ad391fb537459155b4a10bade1 (patch)
tree613797f0a3f71a2c403f1c688e144fd3d7edb14e /sphinx/directives/patches.py
parent97c6cc4e1057dfa91dc1caf1f14d49f5320d7680 (diff)
downloadsphinx-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.py22
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)