aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/docutils/transforms/components.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/docutils/transforms/components.py')
-rw-r--r--.venv/lib/python3.12/site-packages/docutils/transforms/components.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docutils/transforms/components.py b/.venv/lib/python3.12/site-packages/docutils/transforms/components.py
new file mode 100644
index 00000000..9cbbb503
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docutils/transforms/components.py
@@ -0,0 +1,54 @@
+# $Id: components.py 9037 2022-03-05 23:31:10Z milde $
+# Author: David Goodger <goodger@python.org>
+# Copyright: This module has been placed in the public domain.
+
+"""
+Docutils component-related transforms.
+"""
+
+from docutils.transforms import Transform
+
+__docformat__ = 'reStructuredText'
+
+
+class Filter(Transform):
+
+ """
+ Include or exclude elements which depend on a specific Docutils component.
+
+ For use with `nodes.pending` elements. A "pending" element's dictionary
+ attribute ``details`` must contain the keys "component" and "format". The
+ value of ``details['component']`` must match the type name of the
+ component the elements depend on (e.g. "writer"). The value of
+ ``details['format']`` is the name of a specific format or context of that
+ component (e.g. "html"). If the matching Docutils component supports that
+ format or context, the "pending" element is replaced by the contents of
+ ``details['nodes']`` (a list of nodes); otherwise, the "pending" element
+ is removed.
+
+ For example, up to version 0.17, the reStructuredText "meta"
+ directive created a "pending" element containing a "meta" element
+ (in ``pending.details['nodes']``).
+ Only writers (``pending.details['component'] == 'writer'``)
+ supporting the "html", "latex", or "odf" formats
+ (``pending.details['format'] == 'html,latex,odf'``) included the
+ "meta" element; it was deleted from the output of all other writers.
+
+ This transform is no longer used by Docutils, it may be removed in future.
+ """
+ # TODO: clean up or keep this for 3rd party (or possible future) use?
+ # (GM 2021-05-18)
+
+ default_priority = 780
+
+ def apply(self):
+ pending = self.startnode
+ component_type = pending.details['component'] # 'reader' or 'writer'
+ formats = (pending.details['format']).split(',')
+ component = self.document.transformer.components[component_type]
+ for format in formats:
+ if component.supports(format):
+ pending.replace_self(pending.details['nodes'])
+ break
+ else:
+ pending.parent.remove(pending)