summaryrefslogtreecommitdiff
path: root/sphinx/util/docfields.py
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2011-01-04 00:35:27 +0100
committerGeorg Brandl <georg@python.org>2011-01-04 00:35:27 +0100
commit3642b521ed5a8c85faf4b37eb1bc83d6cfa63716 (patch)
treeeed02f129e674a183307a35cd383b9c6f369b6bf /sphinx/util/docfields.py
parent8fd5bd1e1909ac5c5e857049dafcdcc2975eb90d (diff)
parenteecd8bff03e6617dc3644e319f9447e3320af9c3 (diff)
downloadsphinx-git-3642b521ed5a8c85faf4b37eb1bc83d6cfa63716.tar.gz
merge with 1.0
Diffstat (limited to 'sphinx/util/docfields.py')
-rw-r--r--sphinx/util/docfields.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/sphinx/util/docfields.py b/sphinx/util/docfields.py
index 89f81e8cb..745557a79 100644
--- a/sphinx/util/docfields.py
+++ b/sphinx/util/docfields.py
@@ -129,15 +129,13 @@ class TypedField(GroupedField):
is_typed = True
def __init__(self, name, names=(), typenames=(), label=None,
- rolename=None, typerolename=None):
- GroupedField.__init__(self, name, names, label, rolename, False)
+ rolename=None, typerolename=None, can_collapse=False):
+ GroupedField.__init__(self, name, names, label, rolename, can_collapse)
self.typenames = typenames
self.typerolename = typerolename
def make_field(self, types, domain, items):
- fieldname = nodes.field_name('', self.label)
- listnode = self.list_type()
- for fieldarg, content in items:
+ def handle_item(fieldarg, content):
par = nodes.paragraph()
par += self.make_xref(self.rolename, domain, fieldarg, nodes.strong)
if fieldarg in types:
@@ -154,8 +152,17 @@ class TypedField(GroupedField):
par += nodes.Text(')')
par += nodes.Text(' -- ')
par += content
- listnode += nodes.list_item('', par)
- fieldbody = nodes.field_body('', listnode)
+ return par
+
+ fieldname = nodes.field_name('', self.label)
+ if len(items) == 1 and self.can_collapse:
+ fieldarg, content = items[0]
+ bodynode = handle_item(fieldarg, content)
+ else:
+ bodynode = self.list_type()
+ for fieldarg, content in items:
+ bodynode += nodes.list_item('', handle_item(fieldarg, content))
+ fieldbody = nodes.field_body('', bodynode)
return nodes.field('', fieldname, fieldbody)