From 2e22e96061bb319d04f6c315352b525b0cd598a0 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Sun, 12 Jan 2020 01:54:55 +0900 Subject: [PATCH] Add new event: :event:`object-description-transform` --- CHANGES | 1 + doc/extdev/appapi.rst | 8 ++++++++ sphinx/directives/__init__.py | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/CHANGES b/CHANGES index 1466548e4..220473459 100644 --- a/CHANGES +++ b/CHANGES @@ -41,6 +41,7 @@ Features added is required) * SphinxTranslator now calls visitor/departure method for super node class if visitor/departure method for original node class not found +* #6418: Add new event: :event:`object-description-transform` Bugs fixed ---------- diff --git a/doc/extdev/appapi.rst b/doc/extdev/appapi.rst index 7a8ffef10..e89da7ce9 100644 --- a/doc/extdev/appapi.rst +++ b/doc/extdev/appapi.rst @@ -218,6 +218,14 @@ connect handlers to the events. Example: .. 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) Emitted when a doctree has been parsed and read by the environment, and is diff --git a/sphinx/directives/__init__.py b/sphinx/directives/__init__.py index 09390a6df..9a2fb4412 100644 --- a/sphinx/directives/__init__.py +++ b/sphinx/directives/__init__.py @@ -193,6 +193,8 @@ class ObjectDescription(SphinxDirective): self.env.temp_data['object'] = self.names[0] self.before_content() 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) self.env.temp_data['object'] = None self.after_content() @@ -295,6 +297,8 @@ def setup(app: "Sphinx") -> Dict[str, Any]: # new, more consistent, name directives.register_directive('object', ObjectDescription) + app.add_event('object-description-transform') + return { 'version': 'builtin', 'parallel_read_safe': True,