summaryrefslogtreecommitdiff
path: root/docutils/nodes.py
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2012-01-18 10:16:20 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2012-01-18 10:16:20 +0000
commita56e4f81a4861e12dc7fd326a03a0166a4fc149a (patch)
treebbc12d69be5a70a0ee662144c587f8913e8fccad /docutils/nodes.py
parentd18c507ad67f434d3ea32b38d4b4909ea930fb5f (diff)
downloaddocutils-a56e4f81a4861e12dc7fd326a03a0166a4fc149a.tar.gz
XML writer overhaul (use visitor pattern, raw XML pass through).
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@7315 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/nodes.py')
-rw-r--r--docutils/nodes.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/docutils/nodes.py b/docutils/nodes.py
index 9a868cd1b..469ecefbd 100644
--- a/docutils/nodes.py
+++ b/docutils/nodes.py
@@ -499,23 +499,29 @@ class Element(Node):
# 2to3 doesn't convert __unicode__ to __str__
__str__ = __unicode__
- def starttag(self):
+ def starttag(self, quoteattr=None):
+ # the optional arg is used by the docutils_xml writer
+ if quoteattr is None:
+ quoteattr = pseudo_quoteattr
parts = [self.tagname]
for name, value in self.attlist():
if value is None: # boolean attribute
parts.append(name)
- elif isinstance(value, list):
+ continue
+ if isinstance(value, list):
values = [serial_escape('%s' % (v,)) for v in value]
- parts.append('%s="%s"' % (name, ' '.join(values)))
+ value = ' '.join(values)
else:
- parts.append('%s="%s"' % (name, value))
- return '<%s>' % ' '.join(parts)
+ value = unicode(value)
+ value = quoteattr(value)
+ parts.append(u'%s=%s' % (name, value))
+ return u'<%s>' % u' '.join(parts)
def endtag(self):
return '</%s>' % self.tagname
def emptytag(self):
- return u'<%s/>' % ' '.join([self.tagname] +
+ return u'<%s/>' % u' '.join([self.tagname] +
['%s="%s"' % (n, v)
for n, v in self.attlist()])
@@ -1913,6 +1919,10 @@ def serial_escape(value):
"""Escape string values that are elements of a list, for serialization."""
return value.replace('\\', r'\\').replace(' ', r'\ ')
+def pseudo_quoteattr(value):
+ """Quote attributes for pseudo-xml"""
+ return '"%s"' % value
+
#
#
# Local Variables: