2 # Author: Lea Wiemann <LeWiemann@gmail.com>
3 # Copyright: This module has been placed in the public domain.
6 Auxiliary transforms mainly to be used by Writer components.
8 This module is called "writer_aux" because otherwise there would be
9 conflicting imports like this one::
11 from docutils import writers
12 from docutils.transforms import writers
15 __docformat__
= 'reStructuredText'
17 from docutils
import nodes
, utils
, languages
18 from docutils
.transforms
import Transform
21 class Compound(Transform
):
24 Flatten all compound paragraphs. For example, transform ::
34 <literal_block classes="continued">
35 <paragraph classes="continued">
38 default_priority
= 910
41 for compound
in self
.document
.traverse(nodes
.compound
):
43 for child
in compound
:
45 if not isinstance(child
, nodes
.Invisible
):
48 child
['classes'].append('continued')
49 # Substitute children for compound.
50 compound
.replace_self(compound
[:])
53 class Admonitions(Transform
):
56 Transform specific admonitions, like this:
62 into generic admonitions, like this::
64 <admonition classes="note">
70 The admonition title is localized.
73 default_priority
= 920
76 language
= languages
.get_language(self
.document
.settings
.language_code
,
77 self
.document
.reporter
)
78 for node
in self
.document
.traverse(nodes
.Admonition
):
79 node_name
= node
.__class
__.__name
__
80 # Set class, so that we know what node this admonition came from.
81 node
['classes'].append(node_name
)
82 if not isinstance(node
, nodes
.admonition
):
83 # Specific admonition. Transform into a generic admonition.
84 admonition
= nodes
.admonition(node
.rawsource
, *node
.children
,
86 title
= nodes
.title('', language
.labels
[node_name
])
87 admonition
.insert(0, title
)
88 node
.replace_self(admonition
)