Mercurial > genshi > genshi-test
changeset 146:db0dacc1239a
Simplifed `CoalesceFilter` (now a function)
author | cmlenz |
---|---|
date | Tue, 15 Aug 2006 10:12:03 +0000 |
parents | 56d534eb53f9 |
children | f7fb556f2678 |
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