Add new event: :event:object-description-transform

This commit is contained in:
Takeshi KOMIYA 2020-01-12 01:54:55 +09:00
parent f8fc6075ba
commit 2e22e96061
3 changed files with 13 additions and 0 deletions

View File

@ -41,6 +41,7 @@ Features added
is required) is required)
* SphinxTranslator now calls visitor/departure method for super node class if * SphinxTranslator now calls visitor/departure method for super node class if
visitor/departure method for original node class not found visitor/departure method for original node class not found
* #6418: Add new event: :event:`object-description-transform`
Bugs fixed Bugs fixed
---------- ----------

View File

@ -218,6 +218,14 @@ connect handlers to the events. Example:
.. versionadded:: 0.5 .. versionadded:: 0.5
.. event:: object-description-transform (app, domain, objtype, contentnode)
Emitted when an object description directive has run. The *domain* and
*objtype* arguments are strings indicating object description of the object.
And *contentnode* is a content for the object. It can be modified in-place.
.. versionadded:: 2.4
.. event:: doctree-read (app, doctree) .. event:: doctree-read (app, doctree)
Emitted when a doctree has been parsed and read by the environment, and is Emitted when a doctree has been parsed and read by the environment, and is

View File

@ -193,6 +193,8 @@ class ObjectDescription(SphinxDirective):
self.env.temp_data['object'] = self.names[0] self.env.temp_data['object'] = self.names[0]
self.before_content() self.before_content()
self.state.nested_parse(self.content, self.content_offset, contentnode) self.state.nested_parse(self.content, self.content_offset, contentnode)
self.env.app.emit('object-description-transform',
self.domain, self.objtype, contentnode)
DocFieldTransformer(self).transform_all(contentnode) DocFieldTransformer(self).transform_all(contentnode)
self.env.temp_data['object'] = None self.env.temp_data['object'] = None
self.after_content() self.after_content()
@ -295,6 +297,8 @@ def setup(app: "Sphinx") -> Dict[str, Any]:
# new, more consistent, name # new, more consistent, name
directives.register_directive('object', ObjectDescription) directives.register_directive('object', ObjectDescription)
app.add_event('object-description-transform')
return { return {
'version': 'builtin', 'version': 'builtin',
'parallel_read_safe': True, 'parallel_read_safe': True,