summaryrefslogtreecommitdiff
path: root/docutils/readers/doctree.py
diff options
context:
space:
mode:
Diffstat (limited to 'docutils/readers/doctree.py')
-rw-r--r--docutils/readers/doctree.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/docutils/readers/doctree.py b/docutils/readers/doctree.py
new file mode 100644
index 000000000..4138fb51e
--- /dev/null
+++ b/docutils/readers/doctree.py
@@ -0,0 +1,48 @@
+# Author: Martin Blais
+# Contact: blais@furius.ca
+# Revision: $Revision$
+# Date: $Date$
+# Copyright: This module has been placed in the public domain.
+
+"""Reader for existing document trees."""
+
+from docutils import readers, utils, transforms
+
+
+class Reader(readers.ReReader):
+
+ """
+ Adapt the Reader API for an existing document tree.
+
+ The existing document tree must be passed as the ``source`` parameter to
+ the `docutils.core.Publisher` initializer, wrapped in a
+ `docutils.io.DocTreeInput` object::
+
+ pub = docutils.core.Publisher(
+ ..., source=docutils.io.DocTreeInput(document), ...)
+
+ The original document settings are overridden; if you want to use the
+ settings of the original document, pass ``settings=document.settings`` to
+ the Publisher call above.
+ """
+
+ supported = ('doctree',)
+
+ config_section = 'doctree reader'
+ config_section_dependencies = ('readers',)
+
+ def parse(self):
+ """
+ No parsing to do; refurbish the document tree instead.
+ Overrides the inherited method.
+ """
+ self.document = self.input
+ # Create fresh Transformer object, to be populated from Writer
+ # component.
+ self.document.transformer = transforms.Transformer(self.document)
+ # Replace existing settings object with new one.
+ self.document.settings = self.settings
+ # Create fresh Reporter object because it is dependent on
+ # (new) settings.
+ self.document.reporter = utils.new_reporter(
+ self.document.get('source', ''), self.document.settings)