# HG changeset patch # User cmlenz # Date 1154099750 0 # Node ID 71f3db26eecb43e8e93f6f8ead93690bfd801086 # Parent f12e7987d7f45302eaabc2a796f5a7a1347fd87b Include processing instructions in serialized streams. diff --git a/markup/output.py b/markup/output.py --- a/markup/output.py +++ b/markup/output.py @@ -22,7 +22,7 @@ from itertools import chain from markup.core import escape, Markup, Namespace, QName -from markup.core import DOCTYPE, START, END, START_NS, END_NS, TEXT, COMMENT +from markup.core import DOCTYPE, START, END, START_NS, END_NS, TEXT, COMMENT, PI __all__ = ['Serializer', 'XMLSerializer', 'HTMLSerializer'] @@ -154,6 +154,9 @@ elif kind is COMMENT: yield Markup('' % data) + elif kind is PI: + yield Markup('' % data) + class XHTMLSerializer(XMLSerializer): """Produces XHTML text from an event stream. @@ -238,6 +241,9 @@ elif kind is COMMENT: yield Markup('' % data) + elif kind is PI: + yield Markup('' % data) + class HTMLSerializer(XHTMLSerializer): """Produces HTML text from an event stream. @@ -308,6 +314,9 @@ elif kind is COMMENT: yield Markup('' % data) + elif kind is PI: + yield Markup('' % data) + class _PushbackIterator(object): """A simple wrapper for iterators that allows pushing items back on the diff --git a/markup/tests/output.py b/markup/tests/output.py --- a/markup/tests/output.py +++ b/markup/tests/output.py @@ -73,6 +73,11 @@ output = stream.render(XMLSerializer) self.assertEqual('', output) + def test_processing_instruction(self): + stream = Stream([(Stream.PI, ('python', 'x = 2'), ('?', -1, -1))]) + output = stream.render(XMLSerializer) + self.assertEqual('', output) + def suite(): suite = unittest.TestSuite()