aboutsummaryrefslogtreecommitdiff
path: root/docs/src/sphinx-plugins/manpage.py
diff options
context:
space:
mode:
authorSaúl Ibarra Corretgé <saghul@gmail.com>2015-03-02 10:56:51 +0100
committerSaúl Ibarra Corretgé <saghul@gmail.com>2015-03-02 14:20:02 +0100
commit5ba687f4224f5fe08ed17eb0162f564f0291484e (patch)
tree4ef0c07c25e86f333eb7d2d960fa7b532d6281c3 /docs/src/sphinx-plugins/manpage.py
parentfd3cf20a37b95fe8a3cb4be045b5a1bad9e53cde (diff)
downloadlibuv-5ba687f4224f5fe08ed17eb0162f564f0291484e.tar.gz
libuv-5ba687f4224f5fe08ed17eb0162f564f0291484e.zip
doc: add Sphinx plugin for generating links to man pages
PR-URL: https://github.com/libuv/libuv/pull/236 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'docs/src/sphinx-plugins/manpage.py')
-rw-r--r--docs/src/sphinx-plugins/manpage.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/docs/src/sphinx-plugins/manpage.py b/docs/src/sphinx-plugins/manpage.py
new file mode 100644
index 00000000..1d1dc379
--- /dev/null
+++ b/docs/src/sphinx-plugins/manpage.py
@@ -0,0 +1,46 @@
+# encoding: utf-8
+
+#
+# Copyright (c) 2013 Dariusz Dwornikowski. All rights reserved.
+#
+# Adapted from https://github.com/tdi/sphinxcontrib-manpage
+# License: Apache 2
+#
+
+
+import re
+
+from docutils import nodes, utils
+from docutils.parsers.rst.roles import set_classes
+from string import Template
+
+
+def make_link_node(rawtext, app, name, manpage_num, options):
+ ref = app.config.man_url_regex
+ if not ref:
+ ref = "http://linux.die.net/man/%s/%s" % (manpage_num, name)
+ else:
+ s = Template(ref)
+ ref = s.substitute(num=manpage_num, topic=name)
+ set_classes(options)
+ node = nodes.reference(rawtext, "%s(%s)" % (name, manpage_num), refuri=ref, **options)
+ return node
+
+
+def man_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
+ app = inliner.document.settings.env.app
+ p = re.compile("([a-zA-Z0-9_\.-_]+)\((\d)\)")
+ m = p.match(text)
+
+ manpage_num = m.group(2)
+ name = m.group(1)
+ node = make_link_node(rawtext, app, name, manpage_num, options)
+ return [node], []
+
+
+def setup(app):
+ app.info('Initializing manpage plugin')
+ app.add_role('man', man_role)
+ app.add_config_value('man_url_regex', None, 'env')
+ return
+