diff genshi/output.py @ 958:6fc92535c888 experimental-performance-improvement-exploration

Be more careful about what is passed into streams as events and remove many uses of _ensure as a result. An ATTRS event is added for handling Attributes returned by gensh.path.select().
author hodgestar
date Tue, 13 Mar 2012 03:03:02 +0000
parents f15334b65cf8
children
line wrap: on
line diff
--- a/genshi/output.py
+++ b/genshi/output.py
@@ -20,7 +20,7 @@
 
 from genshi.core import escape, Attrs, Markup, Namespace, QName, StreamEventKind
 from genshi.core import START, END, TEXT, XML_DECL, DOCTYPE, START_NS, END_NS, \
-                        START_CDATA, END_CDATA, PI, COMMENT, XML_NAMESPACE
+                        START_CDATA, END_CDATA, PI, COMMENT, XML_NAMESPACE, ATTRS
 
 __all__ = ['encode', 'get_serializer', 'DocType', 'XMLSerializer',
            'XHTMLSerializer', 'HTMLSerializer', 'TextSerializer']
@@ -301,6 +301,12 @@
             elif kind is PI:
                 yield _emit(kind, data, Markup('<?%s %s?>' % data))
 
+            elif kind is ATTRS:
+                # this is specifically to support the rendering of
+                # streams generated by genshi.path.select() and provides
+                # backwards compatibility with genshi < 0.7
+                yield data.concatenate_values()
+
 
 class XHTMLSerializer(XMLSerializer):
     """Produces XHTML text from an event stream.
Copyright (C) 2012-2017 Edgewall Software