[tor-commits] [bridgedb/develop] Add Sphinx extension for referencing Tor Trac tickets.
isis at torproject.org
isis at torproject.org
Thu Jun 25 03:13:29 UTC 2015
commit 8df13d2b5f2bcc4a19c32017bcdf81efe0f6401d
Author: Isis Lovecruft <isis at torproject.org>
Date: Thu Jun 18 04:38:19 2015 +0000
Add Sphinx extension for referencing Tor Trac tickets.
---
doc/sphinx/ext/traclinks.py | 37 +++++++++++++++++++++++++++++++++++++
doc/sphinx/source/conf.py | 3 ++-
lib/bridgedb/parse/descriptors.py | 8 ++++----
3 files changed, 43 insertions(+), 5 deletions(-)
diff --git a/doc/sphinx/ext/traclinks.py b/doc/sphinx/ext/traclinks.py
new file mode 100644
index 0000000..fd2d9b3
--- /dev/null
+++ b/doc/sphinx/ext/traclinks.py
@@ -0,0 +1,37 @@
+"""Sphinx/docutils extension to create links to a Trac site using a
+RestructuredText interpreted text role that looks like this::
+
+ :trac:`trac_link_text`
+
+for example::
+
+ :trac:`#2015`
+
+creates a link to ticket number 2015.
+
+adapted from recipe here_.
+
+.. _here: http://stackoverflow.com/a/2111327/13564
+"""
+
+import urllib
+from docutils import nodes, utils
+
+def make_trac_link(name, rawtext, text, lineno, inliner,
+ options={}, content=[]):
+ env = inliner.document.settings.env
+ trac_url = env.config.traclinks_base_url
+ ref = trac_url + urllib.quote(text, safe='')
+ node = nodes.reference(rawtext,
+ utils.unescape(text),
+ refuri=ref,
+ **options)
+ return [node],[]
+
+
+def setup(app):
+ """setup function to register the extension"""
+ app.add_config_value('traclinks_base_url',
+ 'https://bugs.torproject.org/',
+ 'env')
+ app.add_role('trac', make_trac_link)
diff --git a/doc/sphinx/source/conf.py b/doc/sphinx/source/conf.py
index 5cd485f..e733c42 100644
--- a/doc/sphinx/source/conf.py
+++ b/doc/sphinx/source/conf.py
@@ -116,7 +116,8 @@ extensions = ['sphinx.ext.autodoc',
'sphinxarg.ext',
'sphinxcontrib.fulltoc',
'repoze.sphinx.autointerface',
- 'apilinks_sphinxext']
+ 'apilinks_sphinxext',
+ 'traclinks']
todo_include_todos = True
diff --git a/lib/bridgedb/parse/descriptors.py b/lib/bridgedb/parse/descriptors.py
index 46f959e..81cba7f 100644
--- a/lib/bridgedb/parse/descriptors.py
+++ b/lib/bridgedb/parse/descriptors.py
@@ -69,10 +69,10 @@ def parseNetworkStatusFile(filename, validate=True, skipAnnotations=True,
descriptorClass=RouterStatusEntryV3):
"""Parse a file which contains an ``@type bridge-networkstatus`` document.
- See `ticket #12254 <https://bugs.torproject.org/12254>`__ for why
- networkstatus-bridges documents don't look anything like the networkstatus
- v2 documents that they are purported to look like. They are missing all
- headers, and the entire footer including authority signatures.
+ See :trac:`#12254` for why networkstatus-bridges documents don't look
+ anything like the networkstatus v2 documents that they are purported to
+ look like. They are missing all headers, and the entire footer including
+ authority signatures.
:param str filename: The location of the file containing bridge
networkstatus descriptors.
More information about the tor-commits
mailing list