summaryrefslogtreecommitdiff
path: root/sphinx/util/nodes.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/util/nodes.py')
-rw-r--r--sphinx/util/nodes.py26
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