Mercurial > genshi > mirror
changeset 147:a4a0ca41b6ad trunk
Use `xmlcharrefreplace` when encoding the output in `Stream.render()`, so that encoding the output to legacy encodings such as ASCII or ISO-8859-1 should always work.
author | cmlenz |
---|---|
date | Tue, 15 Aug 2006 13:17:51 +0000 |
parents | 04799355362d |
children | dcc9dc25bc59 |
files | markup/core.py markup/tests/core.py |
diffstat | 2 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/markup/core.py +++ b/markup/core.py @@ -91,7 +91,7 @@ generator = self.serialize(method=method, **kwargs) output = u''.join(list(generator)) if encoding is not None: - return output.encode(encoding) + return output.encode(encoding, 'xmlcharrefreplace') return output def select(self, path): @@ -113,6 +113,9 @@ @param method: determines how the stream is serialized; can be either "xml", "xhtml", or "html", or a custom serializer class + + Any additional keyword arguments are passed to the serializer, and thus + depend on the `method` parameter value. """ from markup import output cls = method @@ -433,6 +436,7 @@ return self.uri +# The namespace used by attributes such as xml:lang and xml:space XML_NAMESPACE = Namespace('http://www.w3.org/XML/1998/namespace')
--- a/markup/tests/core.py +++ b/markup/tests/core.py @@ -15,7 +15,22 @@ import unittest from markup.core import * -from markup.input import ParseError +from markup.input import XML, ParseError + + +class StreamTestCase(unittest.TestCase): + + def test_render_utf8(self): + xml = XML('<li>Über uns</li>') + self.assertEqual('<li>Über uns</li>', xml.render()) + + def test_render_unicode(self): + xml = XML('<li>Über uns</li>') + self.assertEqual(u'<li>Über uns</li>', xml.render(encoding=None)) + + def test_render_ascii(self): + xml = XML('<li>Über uns</li>') + self.assertEqual('<li>Über uns</li>', xml.render(encoding='ascii')) class MarkupTestCase(unittest.TestCase): @@ -98,6 +113,7 @@ def suite(): suite = unittest.TestSuite() + suite.addTest(unittest.makeSuite(StreamTestCase, 'test')) suite.addTest(unittest.makeSuite(MarkupTestCase, 'test')) suite.addTest(doctest.DocTestSuite(Markup.__module__)) return suite