summaryrefslogtreecommitdiff
path: root/sandbox/grubert/making_a_writer.txt
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/grubert/making_a_writer.txt')
-rw-r--r--sandbox/grubert/making_a_writer.txt133
1 files changed, 0 insertions, 133 deletions
diff --git a/sandbox/grubert/making_a_writer.txt b/sandbox/grubert/making_a_writer.txt
deleted file mode 100644
index 4d76b5170..000000000
--- a/sandbox/grubert/making_a_writer.txt
+++ /dev/null
@@ -1,133 +0,0 @@
-===============
-Making a writer
-===============
-
-:Author: engelbert gruber
-:Contact: grubert@users.sourceforge.net
-:Date: $Date$
-:Web site: http://docutils.sourceforge.net/
-
-.. contents::
-
-Introduction
-============
-
-This might become a document sometime, is now a FAQ, collected
-from docutils-develop@lists.sourceforge.net.
-
-This should give help in making a writer for the python docutils.
-Writers are backends writing to a dedicated format.
-
-General description
-===================
-
-from PEP-0258:
-
- Writers produce the final output (HTML, XML, TeX, etc.). Writers translate
- the internal document tree structure into the final data format, possibly
- running Writer-specific transforms first.
-
- Responsibilities:
-
- * Run transforms over the doctree(s).
- * Translate doctree(s) into specific output formats.
- * Transform references into format-native forms.
- * Write the translated output to the destination I/O.
-
-or in other words
-
- By the time the document gets to the Writer, it should be in
- final form. The Writer's job is simply (and only) to translate from
- the Docutils doctree structure to the target format. Some small
- transforms may be required, but they should be local and
- format-specific.
-
-
-The smallest writer
-===================
-
-Next to come. This should be a writer module where everything is done
-in unimplemented.
-
-
-Methods
-=======
-
-Empty methods
--------------
-
-It is legal and does not hint to missing functionality, when a
-method only implements pass, it just means that this calls information
-is not used, the actual content is usually produced between ``visit_*``
-and ``depart_*`` calls. e.g.::
-
- def visit_Text(self, node):
- self.body.append(self.encode(node.astext()))
-
- def depart_Text(self, node):
- pass
-
-As long as there is no need for termination depart_Text is ok.
-
-Fallback methods
-----------------
-
-If derived from NodeVisitor
-
-* unknown_visit, unknown_departure
-
-Deriving from SparseNodeVisitor means everything might pass.
-
-GenericNodeVisitor adds
-
-* default_visit, default_depart.
-
-unimplemented_visit( self, node) seams to be there for both.
-
-Each might raise NotImplementedError(describe_here),
-
-General Problems
-----------------
-
-html pages are more like papyrus rolls, if one wants to go more usual
-paper formats some things are different or not.
-
-* page headings
-* page numbers
-
-
-Problems
---------
-
-In latex2e writer this looks awful to me, but as i understand this ensures
-that e.g. http addresses are not only text.
-
-Maybe this is due to the fact that self.docinfo is used, if one would remove
-it context might be unecessary.
-
-::
-
- def visit_docinfo_item (...):
- ...
- else:
- ##self.head.append('\\%s{%s}\n'
- ## % (name, self.attval(node.astext())))
- self.docinfo.append('\\textbf{%s} &\n\t' % name)
- self.context.append(' \\\\\n')
- self.context.append(self.docinfo)
- self.context.append(len(self.body))
- ##raise nodes.SkipNode
-
- def depart_docinfo_item(self, node):
- size = self.context.pop()
- dest = self.context.pop()
- tail = self.context.pop()
- tail = self.body[size:] + [tail]
- del self.body[size:]
- dest.extend(tail)
-
-
-Notes on Classes
-----------------
-
-To be completed.