SF.net SVN: docutils:[9742 ] trunk/docutils/docutils/t ransforms/universal.py
milde--- via Docutils-checkins <[email protected]>
| Newsgroups | gmane.text.docutils.cvs |
|---|---|
| Message-ID | <[email protected]> |
Revision: 9742
http://sourceforge.net/p/docutils/code/9742
Author: milde
Date: 2024-06-06 14:03:12 +0000 (Thu, 06 Jun 2024)
Log Message:
-----------
Make `FilterMessages` transform more robust.
Remove dependency on correct entries in the `document.ids`
dictionary when converting `<problematic>` elements pointing
to removed system messages to simple text.
Modified Paths:
--------------
trunk/docutils/docutils/transforms/universal.py
Modified: trunk/docutils/docutils/transforms/universal.py
===================================================================
--- trunk/docutils/docutils/transforms/universal.py 2024-06-06 14:03:03 UTC (rev 9741)
+++ trunk/docutils/docutils/transforms/universal.py 2024-06-06 14:03:12 UTC (rev 9742)
@@ -146,15 +146,15 @@
default_priority = 870
def apply(self):
+ removed_ids = [] # IDs of removed system messages
for node in tuple(self.document.findall(nodes.system_message)):
if node['level'] < self.document.reporter.report_level:
node.parent.remove(node)
- try: # also remove id-entry
- del self.document.ids[node['ids'][0]]
- except (IndexError):
- pass
+ for _id in node['ids']:
+ self.document.ids.pop(_id, None) # remove ID registration
+ removed_ids.append(_id)
for node in tuple(self.document.findall(nodes.problematic)):
- if 'refid' in node and node['refid'] not in self.document.ids:
+ if 'refid' in node and node['refid'] in removed_ids:
node.parent.replace(node, nodes.Text(node.astext()))
for node in self.document.findall(nodes.section):
if "system-messages" in node['classes'] and len(node) == 1:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.