diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2012-01-18 10:16:20 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2012-01-18 10:16:20 +0000 |
| commit | a56e4f81a4861e12dc7fd326a03a0166a4fc149a (patch) | |
| tree | bbc12d69be5a70a0ee662144c587f8913e8fccad /docutils/nodes.py | |
| parent | d18c507ad67f434d3ea32b38d4b4909ea930fb5f (diff) | |
| download | docutils-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.py | 22 |
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: |
