diff options
| author | shimizukawa <shimizukawa@gmail.com> | 2014-01-18 20:41:43 +0900 |
|---|---|---|
| committer | shimizukawa <shimizukawa@gmail.com> | 2014-01-18 20:41:43 +0900 |
| commit | dc62e8d7ea844a4b2ac7bd880d2d3966deebb207 (patch) | |
| tree | 76ea87ca4e9a71f1262724673d1654f03e08c117 /sphinx/domains/python.py | |
| parent | 22bff8279d4d2d0096152337ae2b6b3951f92e29 (diff) | |
| parent | 39287f95535866e2d4d1544f8688ce22fd19a69a (diff) | |
| download | sphinx-dc62e8d7ea844a4b2ac7bd880d2d3966deebb207.tar.gz | |
merge heads
Diffstat (limited to 'sphinx/domains/python.py')
| -rw-r--r-- | sphinx/domains/python.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py index 0c08b60b..6714e838 100644 --- a/sphinx/domains/python.py +++ b/sphinx/domains/python.py @@ -81,6 +81,23 @@ def _pseudo_parse_arglist(signode, arglist): signode += paramlist +# This override allows our inline type specifiers to behave like :class: link +# when it comes to handling "." and "~" prefixes. +class PyTypedField(TypedField): + def make_xref(self, rolename, domain, target, innernode=nodes.emphasis): + result = super(PyTypedField, self).make_xref(rolename, domain, target, + innernode) + if target.startswith('.'): + result['reftarget'] = target[1:] + result['refspecific'] = True + result[0][0] = nodes.Text(target[1:]) + if target.startswith('~'): + result['reftarget'] = target[1:] + title = target.split('.')[-1] + result[0][0] = nodes.Text(title) + return result + + class PyObject(ObjectDescription): """ Description of a general Python object. @@ -92,7 +109,7 @@ class PyObject(ObjectDescription): } doc_field_types = [ - TypedField('parameter', label=l_('Parameters'), + PyTypedField('parameter', label=l_('Parameters'), names=('param', 'parameter', 'arg', 'argument', 'keyword', 'kwarg', 'kwparam'), typerolename='obj', typenames=('paramtype', 'type'), @@ -559,8 +576,8 @@ class PythonDomain(Domain): object_types = { 'function': ObjType(l_('function'), 'func', 'obj'), 'data': ObjType(l_('data'), 'data', 'obj'), - 'class': ObjType(l_('class'), 'class', 'obj'), - 'exception': ObjType(l_('exception'), 'exc', 'obj'), + 'class': ObjType(l_('class'), 'class', 'exc', 'obj'), + 'exception': ObjType(l_('exception'), 'exc', 'class', 'obj'), 'method': ObjType(l_('method'), 'meth', 'obj'), 'classmethod': ObjType(l_('class method'), 'meth', 'obj'), 'staticmethod': ObjType(l_('static method'), 'meth', 'obj'), |
