ENH: add a linkcode extension

This commit is contained in:
Pauli Virtanen
2012-03-11 17:48:51 +01:00
parent 0c01c6e9a7
commit 135bb6f6c8
5 changed files with 170 additions and 0 deletions

47
doc/ext/linkcode.rst Normal file
View File

@@ -0,0 +1,47 @@
:mod:`sphinx.ext.linkcode` -- Add external links to source code
===============================================================
.. module:: sphinx.ext.linkcode
:synopsis: Add external links to source code.
.. moduleauthor:: Pauli Virtanen
.. versionadded:: 1.1
This extension looks at your Python object descriptions
(``.. class::``, ``.. function::`` etc.) and adds external links to
code hosted somewhere on the web. The intent is similar to the
``sphinx.ext.viewcode`` extension, but assumes the source code can be
found somewhere on the Internet.
In your configuration, you need to specify a :confval:`linkcode_resolve`
function that returns an URL based on the name of a module and
the full name of the object.
.. confval:: linkcode_resolve
This is a function ``linkcode_resolve(domain, info)``,
which should return the URL to source code corresponding to
the object in given domain with given information.
The function should return ``None`` if no link is to be added.
The argument ``domain`` specifies the language domain the object is
in. ``info`` is a dictionary with the following keys guaranteed to
be present (dependent on the domain):
- ``c``: ``names`` (list of names for the object)
- ``cpp``: ``names`` (list of names for the object)
- ``py``: ``module`` (name of the module), ``fullname`` (name of the object)
- ``javascript``: ``object`` (name of the object), ``fullname`` (name of the item)
Example:
.. code-block:: python
def linkcode_resolve(domain, info):
if domain != 'py':
return None
if not info['module']:
return None
filename = info['module'].replace('.', '/')
return "http://somesite/sourcerepo/%s.py" % filename

View File

@@ -53,6 +53,7 @@ These extensions are built in and can be activated by respective entries in the
ext/todo
ext/extlinks
ext/viewcode
ext/linkcode
ext/oldcmarkup