From: <sm...@us...> - 2008-11-26 22:59:59
|
Author: smerten Date: 2008-11-26 23:59:52 +0100 (Wed, 26 Nov 2008) New Revision: 5735 Modified: trunk/sandbox/rst2beamer/latexbeamer/__init__.py trunk/sandbox/rst2beamer/tools/rst2beamer.py Log: Class `handout` is removed. Modified: trunk/sandbox/rst2beamer/latexbeamer/__init__.py =================================================================== --- trunk/sandbox/rst2beamer/latexbeamer/__init__.py 2008-11-26 21:13:29 UTC (rev 5734) +++ trunk/sandbox/rst2beamer/latexbeamer/__init__.py 2008-11-26 22:59:52 UTC (rev 5735) @@ -6,6 +6,8 @@ from docutils import frontend, nodes from docutils.writers import latex2e +from docutils.readers import standalone +from docutils.transforms import references, Transform, TransformError class Writer(latex2e.Writer): @@ -253,4 +255,31 @@ return ''.join(self.head_prefix + [head] + self.head + [pdfinfo] + self.body_prefix + self.body + self.body_suffix) -# TODO Class `handout` must be suppressed - may be by a preprocessor +# Use an own reader to modify transformations done. +class Reader(standalone.Reader): + + def get_transforms(self): + default = standalone.Reader.get_transforms(self) + return ([ i + for i in default + if i is not references.DanglingReferences ] + + [ RemoveClassHandout, ]) + +class RemoveClassHandout(Transform): + + """ + Remove all elements with a given class attribute. + """ + + classToRemove = 'handout' + + # Must be less than + # docutils.transforms.misc.ClassAttribute.default_priority + default_priority = 120 + + def apply(self): + for node in self.document.traverse(nodes.Element): + if node.has_key('classes'): + if self.classToRemove in node['classes']: + if node.parent: + node.parent.remove(node) Modified: trunk/sandbox/rst2beamer/tools/rst2beamer.py =================================================================== --- trunk/sandbox/rst2beamer/tools/rst2beamer.py 2008-11-26 21:13:29 UTC (rev 5734) +++ trunk/sandbox/rst2beamer/tools/rst2beamer.py 2008-11-26 22:59:52 UTC (rev 5735) @@ -18,8 +18,11 @@ from docutils.core import publish_cmdline, default_description +from docutils.writers.latexbeamer import Writer, Reader description = ('Generates LaTeX Beamer documents from standalone reStructuredText ' 'sources. ' + default_description) -publish_cmdline(writer_name='latexbeamer', description=description) +writer = Writer() +reader = Reader() +publish_cmdline(reader=reader, writer=writer, description=description) |