diff options
| author | Jonathan Waltman <jonathan.waltman@gmail.com> | 2012-12-10 02:40:24 -0600 |
|---|---|---|
| committer | Jonathan Waltman <jonathan.waltman@gmail.com> | 2012-12-10 02:40:24 -0600 |
| commit | f7afd0df761567f70fd04d9cf1ed8af74d3a2ac3 (patch) | |
| tree | 35afd74508c04ecc7c7121bfc69627165fb7633f /sphinx | |
| parent | 5818df7941b73abecdb1b399fee7956ea283d698 (diff) | |
| download | sphinx-f7afd0df761567f70fd04d9cf1ed8af74d3a2ac3.tar.gz | |
xml: Fix compatibility with docutils<0.9
Diffstat (limited to 'sphinx')
| -rw-r--r-- | sphinx/builders/xml.py | 13 | ||||
| -rw-r--r-- | sphinx/writers/xml.py | 7 |
2 files changed, 13 insertions, 7 deletions
diff --git a/sphinx/builders/xml.py b/sphinx/builders/xml.py index 74c1fc06..6f0a5519 100644 --- a/sphinx/builders/xml.py +++ b/sphinx/builders/xml.py @@ -12,6 +12,7 @@ import codecs from os import path +from docutils import nodes from docutils.io import StringOutput from sphinx.builders import Builder @@ -57,6 +58,18 @@ class XMLBuilder(Builder): self.writer = self._writer_class(self) def write_doc(self, docname, doctree): + # work around multiple string % tuple issues in docutils; + # replace tuples in attribute values with lists + doctree = doctree.deepcopy() + for node in doctree.traverse(nodes.Element): + for att, value in node.attributes.items(): + if isinstance(value, tuple): + node.attributes[att] = list(value) + value = node.attributes[att] + if isinstance(value, list): + for i, val in enumerate(value): + if isinstance(val, tuple): + value[i] = list(val) destination = StringOutput(encoding='utf-8') self.writer.write(doctree, destination) outfilename = path.join(self.outdir, os_path(docname) + self.out_suffix) diff --git a/sphinx/writers/xml.py b/sphinx/writers/xml.py index 02becb73..f09ee725 100644 --- a/sphinx/writers/xml.py +++ b/sphinx/writers/xml.py @@ -11,7 +11,6 @@ from docutils import writers from docutils.writers.docutils_xml import Writer as BaseXMLWriter -from docutils.writers.docutils_xml import XMLTranslator as BaseXMLTranslator class XMLWriter(BaseXMLWriter): @@ -29,12 +28,6 @@ class XMLWriter(BaseXMLWriter): return BaseXMLWriter.translate(self) -class XMLTranslator(BaseXMLTranslator): - def __init__(self, builder, doc): - BaseXMLTranslator.__init__(self, doc) - self.builder = builder - - class PseudoXMLWriter(writers.Writer): supported = ('pprint', 'pformat', 'pseudoxml') |
