mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Preserve filename and line number for meta nodes
This commit is contained in:
parent
97c6cc4e10
commit
e1e5ae4b65
@ -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)
|
||||
|
@ -31,7 +31,6 @@ from docutils.core import Publisher
|
||||
from docutils.utils import Reporter, relative_path, get_source_line
|
||||
from docutils.parsers.rst import roles, directives
|
||||
from docutils.parsers.rst.languages import en as english
|
||||
from docutils.parsers.rst.directives.html import MetaBody
|
||||
from docutils.frontend import OptionParser
|
||||
|
||||
from sphinx import addnodes
|
||||
@ -776,9 +775,6 @@ class BuildEnvironment:
|
||||
doctree.settings.warning_stream = None
|
||||
doctree.settings.env = None
|
||||
doctree.settings.record_dependencies = None
|
||||
for metanode in doctree.traverse(MetaBody.meta):
|
||||
# docutils' meta nodes aren't picklable because the class is nested
|
||||
metanode.__class__ = addnodes.meta
|
||||
|
||||
# cleanup
|
||||
self.temp_data.clear()
|
||||
|
Loading…
Reference in New Issue
Block a user