diff options
| author | wiemann <wiemann@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2005-07-05 23:14:55 +0000 |
|---|---|---|
| committer | wiemann <wiemann@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2005-07-05 23:14:55 +0000 |
| commit | 05a0b43d298b49d218494a6c2d4f4e1f5d2ef161 (patch) | |
| tree | 381045a71192c1719be92dd4841bad64f9ef04c0 | |
| parent | fb09c558d5c36a437a3bc9ca568149f6e25e9ef9 (diff) | |
| download | docutils-05a0b43d298b49d218494a6c2d4f4e1f5d2ef161.tar.gz | |
moved expose_internals logic out of FinalChecks into a
separate transform, universal.ExposeInternals
git-svn-id: https://svn.code.sf.net/p/docutils/code/trunk/docutils@3658 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
| -rw-r--r-- | docs/ref/transforms.txt | 4 | ||||
| -rw-r--r-- | docutils/transforms/__init__.py | 1 | ||||
| -rw-r--r-- | docutils/transforms/misc.py | 43 | ||||
| -rw-r--r-- | docutils/transforms/universal.py | 25 | ||||
| -rwxr-xr-x | test/test_transforms/test_expose_internals.py | 41 | ||||
| -rwxr-xr-x | test/test_transforms/test_transitions.py | 2 |
6 files changed, 86 insertions, 30 deletions
diff --git a/docs/ref/transforms.txt b/docs/ref/transforms.txt index 28b9c002f..9468619fd 100644 --- a/docs/ref/transforms.txt +++ b/docs/ref/transforms.txt @@ -73,7 +73,9 @@ universal.Decorations Transformer 820 misc.Transitions standalone (r) 830 -universal.FinalChecks Transformer 840 +universal.ExposeInternals Transformer 840 + +universal.FinalChecks Transformer 850 universal.Messages Transformer 860 diff --git a/docutils/transforms/__init__.py b/docutils/transforms/__init__.py index 6039e1a63..25c690f66 100644 --- a/docutils/transforms/__init__.py +++ b/docutils/transforms/__init__.py @@ -75,6 +75,7 @@ class Transformer(TransformSpec): from docutils.transforms import universal default_transforms = (universal.Decorations, + universal.ExposeInternals, universal.FinalChecks, universal.Messages, universal.FilterMessages) diff --git a/docutils/transforms/misc.py b/docutils/transforms/misc.py index eb50a1124..fd8ba6b25 100644 --- a/docutils/transforms/misc.py +++ b/docutils/transforms/misc.py @@ -71,6 +71,28 @@ class ClassAttribute(Transform): class Transitions(Transform): + """ + Move transitions at the end of sections up the tree. Complain + on transitions after a title, at the beginning or end of the + document, and after another transition. + + For example, transform this:: + + <section> + ... + <transition> + <section> + ... + + into this:: + + <section> + ... + <transition> + <section> + ... + """ + default_priority = 830 def apply(self): @@ -78,27 +100,6 @@ class Transitions(Transform): self.visit_transition(node) def visit_transition(self, node): - """ - Move transitions at the end of sections up the tree. Complain - on transitions after a title, at the beginning or end of the - document, and after another transition. - - For example, transform this:: - - <section> - ... - <transition> - <section> - ... - - into this:: - - <section> - ... - <transition> - <section> - ... - """ index = node.parent.index(node) error = None if (index == 0 or diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py index 53ddde878..1918016fc 100644 --- a/docutils/transforms/universal.py +++ b/docutils/transforms/universal.py @@ -143,6 +143,23 @@ class TestMessages(Transform): self.document += msg +class ExposeInternals(Transform): + + """ + Expose internal attributes if ``expose_internals`` setting is set. + """ + + default_priority = 840 + + def apply(self): + if self.document.settings.expose_internals: + for node in self.document.traverse(): + for att in self.document.settings.expose_internals: + value = getattr(node, att, None) + if value is not None: + node['internal:' + att] = value + + class FinalChecks(Transform): """ @@ -152,19 +169,13 @@ class FinalChecks(Transform): - Check for illegal transitions, move transitions. """ - default_priority = 840 + default_priority = 850 def apply(self): visitor = FinalCheckVisitor( self.document, self.document.transformer.unknown_reference_resolvers) self.document.walk(visitor) - if self.document.settings.expose_internals: - for node in self.document.traverse(): - for att in self.document.settings.expose_internals: - value = getattr(node, att, None) - if value is not None: - node['internal:' + att] = value # *After* resolving all references, check for unreferenced # targets: for target in self.document.traverse(nodes.target): diff --git a/test/test_transforms/test_expose_internals.py b/test/test_transforms/test_expose_internals.py new file mode 100755 index 000000000..37747a68b --- /dev/null +++ b/test/test_transforms/test_expose_internals.py @@ -0,0 +1,41 @@ +#! /usr/bin/env python + +# Author: Felix Wiemann +# Contact: Felix_Wiemann@ososo.de +# Revision: $Revision$ +# Date: $Date$ +# Copyright: This module has been placed in the public domain. + +""" +Test module for universal.ExposeInternals transform. +""" + + +from docutils.transforms.universal import ExposeInternals +from __init__ import DocutilsTestSupport +from docutils.parsers.rst import Parser + +def suite(): + parser = Parser() + s = DocutilsTestSupport.TransformTestSuite(parser) + s.generateTests(totest) + return s + + +totest = {} + +totest['transitions'] = ((ExposeInternals,), [ +["""\ +This is a test. +""", +"""\ +[Test disabled at the moment. How do we activate the expose_internals +setting for this test suite?] +""", +0], +]) + + +if __name__ == '__main__': + import unittest + unittest.main(defaultTest='suite') diff --git a/test/test_transforms/test_transitions.py b/test/test_transforms/test_transitions.py index 9711c4aee..24a69bb52 100755 --- a/test/test_transforms/test_transitions.py +++ b/test/test_transforms/test_transitions.py @@ -7,7 +7,7 @@ # Copyright: This module has been placed in the public domain. """ -Test module for transforms/__init__.py. +Test module for misc.Transitions transform. """ from docutils.transforms.misc import Transitions |
