changeset 575:7950b266c97d

Ensure that content gets added after the end of a stream.
author athomas
date Mon, 23 Jul 2007 04:22:20 +0000
parents 15a1137ecfd7
children 53f4088e1e3b
files genshi/filters/transform.py
diffstat 1 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/genshi/filters/transform.py
+++ b/genshi/filters/transform.py
@@ -146,9 +146,9 @@
 
         :param path: an XPath expression (as string) or a `Path` instance
         """
-        self.transforms = []
-        if path:
-            self.transforms.append(SelectTransformation(path))
+        if path is None:
+            path = '.'
+        self.transforms = [SelectTransformation(path)]
 
     def __call__(self, stream):
         """Apply the transform filter to the marked stream.
@@ -732,7 +732,10 @@
                     yield None, prefix
                 yield mark, event
                 while True:
-                    mark, event = stream.next()
+                    try:
+                        mark, event = stream.next()
+                    except StopIteration:
+                        yield None, element[-1]
                     if not mark:
                         break
                     yield mark, event
@@ -912,9 +915,15 @@
         :param stream: The marked event stream to filter
         """
         for mark, event in stream:
-            if mark in (ENTER, OUTSIDE):
+            if mark is not None:
                 for subevent in self._inject():
                     yield subevent
+                yield mark, event
+                while True:
+                    mark, event = stream.next()
+                    if not mark:
+                        break
+                    yield mark, event
             yield mark, event
 
 
@@ -930,7 +939,10 @@
             yield mark, event
             if mark:
                 while True:
-                    mark, event = stream.next()
+                    try:
+                        mark, event = stream.next()
+                    except StopIteration:
+                        break
                     if not mark:
                         break
                     yield mark, event
Copyright (C) 2012-2017 Edgewall Software