# HG changeset patch # User cmlenz # Date 1155636723 0 # Node ID 04799355362dded029fe458445bea5f9f872edef # Parent 47bbd9d2a5af54ca67867d2896b87b1f02bca851 Simplifed `CoalesceFilter` (now a function) diff --git a/markup/input.py b/markup/input.py --- 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