]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
#10334: add a role to refer to Python source files in SVN.
authorGeorg Brandl <georg@python.org>
Sat, 6 Nov 2010 07:19:35 +0000 (07:19 +0000)
committerGeorg Brandl <georg@python.org>
Sat, 6 Nov 2010 07:19:35 +0000 (07:19 +0000)
Doc/tools/sphinxext/pyspecific.py

index 0a5df83db34f44ea1949caae887ec5138233f6d9..2d9b35961dea17c21bd07adf5f9d9629bfed6c28 100644 (file)
 """
 
 ISSUE_URI = 'http://bugs.python.org/issue%s'
+SOURCE_URI = 'http://svn.python.org/view/python/branches/py3k/%s?view=markup'
 
 from docutils import nodes, utils
+from sphinx.util.nodes import split_explicit_title
 
 # monkey-patch reST parser to disable alphabetic and roman enumerated lists
 from docutils.parsers.rst.states import Body
@@ -44,6 +46,16 @@ def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
     return [refnode], []
 
 
+# Support for linking to Python source files easily
+
+def source_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
+    has_t, title, target = split_explicit_title(text)
+    title = utils.unescape(title)
+    target = utils.unescape(target)
+    refnode = nodes.reference(title, title, refuri=SOURCE_URI % target)
+    return [refnode], []
+
+
 # Support for marking up implementation details
 
 from sphinx.util.compat import Directive
@@ -214,6 +226,7 @@ def parse_pdb_command(env, sig, signode):
 
 def setup(app):
     app.add_role('issue', issue_role)
+    app.add_role('source', source_role)
     app.add_directive('impl-detail', ImplementationDetail)
     app.add_builder(PydocTopicsBuilder)
     app.add_builder(suspicious.CheckSuspiciousMarkupBuilder)