diff options
Diffstat (limited to 'sphinx/util/nodes.py')
-rw-r--r-- | sphinx/util/nodes.py | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/sphinx/util/nodes.py b/sphinx/util/nodes.py index 0c43ec20c..13fa3c10a 100644 --- a/sphinx/util/nodes.py +++ b/sphinx/util/nodes.py @@ -12,6 +12,8 @@ import re import types +from docutils import nodes + from sphinx import addnodes @@ -35,7 +37,7 @@ def nested_parse_with_titles(state, content, node): def clean_astext(node): """Like node.astext(), but ignore images.""" node = node.deepcopy() - for img in node.traverse(docutils.nodes.image): + for img in node.traverse(nodes.image): img['alt'] = '' return node.astext() @@ -75,6 +77,19 @@ def inline_all_toctrees(builder, docnameset, docname, tree, colorfunc): return tree +def make_refnode(builder, fromdocname, todocname, targetid, child, title=None): + """Shortcut to create a reference node.""" + node = nodes.reference('', '') + if fromdocname == todocname: + node['refid'] = targetid + else: + node['refuri'] = (builder.get_relative_uri(fromdocname, todocname) + + '#' + targetid) + if title: + node['reftitle'] = title + node.append(child) + return node + # monkey-patch Node.traverse to get more speed # traverse() is called so many times during a build that it saves # on average 20-25% overall build time! @@ -104,8 +119,7 @@ def _new_traverse(self, condition=None, return self._old_traverse(condition, include_self, descend, siblings, ascend) -import docutils.nodes -docutils.nodes.Node._old_traverse = docutils.nodes.Node.traverse -docutils.nodes.Node._all_traverse = _all_traverse -docutils.nodes.Node._fast_traverse = _fast_traverse -docutils.nodes.Node.traverse = _new_traverse +nodes.Node._old_traverse = nodes.Node.traverse +nodes.Node._all_traverse = _all_traverse +nodes.Node._fast_traverse = _fast_traverse +nodes.Node.traverse = _new_traverse |