SF.net SVN: docutils:[10265 ] trunk/docutils/docutils/ transforms/misc.py

milde--- via Docutils-checkins <[email protected]> Fri, 28 Nov 2025 13:51:57 +0000
Newsgroups gmane.text.docutils.cvs
Message-ID <[email protected]>
Revision: 10265
          http://sourceforge.net/p/docutils/code/10265
Author:   milde
Date:     2025-11-28 13:51:57 +0000 (Fri, 28 Nov 2025)
Log Message:
-----------
Simplify `ClassAttribute` transform.

Use `node.findall()` instead of a re-implementation to find the
right element to attach the class attribute to.
No change to functionality.

Modified Paths:
--------------
    trunk/docutils/docutils/transforms/misc.py

Modified: trunk/docutils/docutils/transforms/misc.py
===================================================================
--- trunk/docutils/docutils/transforms/misc.py	2025-11-28 13:51:41 UTC (rev 10264)
+++ trunk/docutils/docutils/transforms/misc.py	2025-11-28 13:51:57 UTC (rev 10265)
@@ -45,22 +45,14 @@
 
     def apply(self) -> None:
         pending = self.startnode
-        parent = pending.parent
-        child = pending
-        while parent:
-            # Check for appropriate following siblings:
-            for index in range(parent.index(child) + 1, len(parent)):
-                element = parent[index]
-                if (isinstance(element, nodes.Invisible)
-                    or isinstance(element, nodes.system_message)):
-                    continue
-                element['classes'] += pending.details['class']
-                pending.parent.remove(pending)
-                return
-            else:
-                # At end of section or container; apply to sibling
-                child = parent
-                parent = parent.parent
+        for element in pending.findall(include_self=False, descend=False,
+                                       siblings=True, ascend=True):
+            if isinstance(element, (nodes.Invisible, nodes.system_message)):
+                continue
+            element['classes'] += pending.details['class']
+            pending.parent.remove(pending)
+            return
+
         error = self.document.reporter.error(
             'No suitable element following "%s" directive'
             % pending.details['directive'],

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.