From 210add8d2c9eff3d2b1bad169a56ac2e1dc5a0c2 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Fri, 7 Jan 2011 16:27:47 +0100 Subject: [PATCH] Parse parmeter field in event descriptions. --- doc/conf.py | 12 ++++++++---- doc/ext/appapi.rst | 3 ++- sphinx/application.py | 6 ++++-- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index aecd4f6d8..ee94ed9e6 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -92,8 +92,12 @@ def parse_event(env, sig, signode): def setup(app): from sphinx.ext.autodoc import cut_lines + from sphinx.util.docfields import GroupedField app.connect('autodoc-process-docstring', cut_lines(4, what=['module'])) - app.add_description_unit('confval', 'confval', - objname='configuration value', - indextemplate='pair: %s; configuration value') - app.add_description_unit('event', 'event', 'pair: %s; event', parse_event) + app.add_object_type('confval', 'confval', + objname='configuration value', + indextemplate='pair: %s; configuration value') + fdesc = GroupedField('parameter', label='Parameters', + names=['param'], can_collapse=True) + app.add_object_type('event', 'event', 'pair: %s; event', parse_event, + doc_field_types=[fdesc]) diff --git a/doc/ext/appapi.rst b/doc/ext/appapi.rst index 8f2a779b5..302013daa 100644 --- a/doc/ext/appapi.rst +++ b/doc/ext/appapi.rst @@ -163,7 +163,8 @@ the following public API: .. versionadded:: 0.6 -.. method:: Sphinx.add_object_type(directivename, rolename, indextemplate='', parse_node=None, ref_nodeclass=None, objname='') +.. method:: Sphinx.add_object_type(directivename, rolename, indextemplate='', parse_node=None, \ + ref_nodeclass=None, objname='', doc_field_types=[]) This method is a very convenient way to add a new :term:`object` type that can be cross-referenced. It will do this: diff --git a/sphinx/application.py b/sphinx/application.py index 9b4fb3a36..3f03ffa73 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -432,13 +432,15 @@ class Sphinx(object): setattr(self.domains[domain], 'get_%s_index' % name, func) def add_object_type(self, directivename, rolename, indextemplate='', - parse_node=None, ref_nodeclass=None, objname=''): + parse_node=None, ref_nodeclass=None, objname='', + doc_field_types=[]): StandardDomain.object_types[directivename] = \ ObjType(objname or directivename, rolename) # create a subclass of GenericObject as the new directive new_directive = type(directivename, (GenericObject, object), {'indextemplate': indextemplate, - 'parse_node': staticmethod(parse_node)}) + 'parse_node': staticmethod(parse_node), + 'doc_field_types': doc_field_types}) StandardDomain.directives[directivename] = new_directive # XXX support more options? StandardDomain.roles[rolename] = XRefRole(innernodeclass=ref_nodeclass)