changeset 146:04799355362d trunk

Simplifed `CoalesceFilter` (now a function)
author cmlenz
date Tue, 15 Aug 2006 10:12:03 +0000
parents 47bbd9d2a5af
children a4a0ca41b6ad
files markup/input.py
diffstat 1 files changed, 17 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/markup/input.py
+++ b/markup/input.py
@@ -112,7 +112,7 @@
                 if self.filename:
                     msg += ', in ' + self.filename
                 raise ParseError(msg, self.filename, e.lineno, e.offset)
-        return Stream(_generate()).filter(CoalesceFilter())
+        return Stream(_generate()).filter(_coalesce)
 
     def __iter__(self):
         return iter(self.parse())
@@ -245,7 +245,7 @@
                 if self.filename:
                     msg += ', in %s' % self.filename
                 raise ParseError(msg, self.filename, e.lineno, e.offset)
-        return Stream(_generate()).filter(CoalesceFilter())
+        return Stream(_generate()).filter(_coalesce)
 
     def __iter__(self):
         return iter(self.parse())
@@ -307,22 +307,19 @@
 def HTML(text):
     return Stream(list(HTMLParser(StringIO(text))))
 
-
-class CoalesceFilter(object):
+def _coalesce(stream):
     """Coalesces adjacent TEXT events into a single event."""
-
-    def __call__(self, stream, ctxt=None):
-        textbuf = []
-        textpos = None
-        for kind, data, pos in chain(stream, [(None, None, None)]):
-            if kind is TEXT:
-                textbuf.append(data)
-                if textpos is None:
-                    textpos = pos
-            else:
-                if textbuf:
-                    yield TEXT, u''.join(textbuf), textpos
-                    del textbuf[:]
-                    textpos = None
-                if kind:
-                    yield kind, data, pos
+    textbuf = []
+    textpos = None
+    for kind, data, pos in chain(stream, [(None, None, None)]):
+        if kind is TEXT:
+            textbuf.append(data)
+            if textpos is None:
+                textpos = pos
+        else:
+            if textbuf:
+                yield TEXT, u''.join(textbuf), textpos
+                del textbuf[:]
+                textpos = None
+            if kind:
+                yield kind, data, pos
Copyright (C) 2012-2017 Edgewall Software