Mercurial > genshi > genshi-test
diff markup/template.py @ 101:ef6794139671
Ported [115] to trunk.
author | cmlenz |
---|---|
date | Mon, 24 Jul 2006 18:57:33 +0000 |
parents | 7d6426183a90 |
children | e9259920db05 |
line wrap: on
line diff
--- a/markup/template.py +++ b/markup/template.py @@ -243,7 +243,7 @@ def __call__(self, stream, ctxt, directives): def _generate(): kind, data, pos = stream.next() - if kind is Stream.START: + if kind is START: yield kind, data, pos # emit start tag yield EXPR, self.expr, pos previous = stream.next() @@ -363,20 +363,22 @@ def __call__(self, stream, ctxt, directives): iterable = self.expr.evaluate(ctxt) - if iterable is not None: - scope = {} - stream = list(stream) - targets = self.targets - for item in iter(iterable): - if len(targets) == 1: - scope[targets[0]] = item - else: - for idx, name in enumerate(targets): - scope[name] = item[idx] - ctxt.push(scope) - for event in _apply_directives(stream, ctxt, directives): - yield event - ctxt.pop() + if iterable is None: + return + + scope = {} + stream = list(stream) + targets = self.targets + for item in iter(iterable): + if len(targets) == 1: + scope[targets[0]] = item + else: + for idx, name in enumerate(targets): + scope[name] = item[idx] + ctxt.push(scope) + for event in _apply_directives(stream, ctxt, directives): + yield event + ctxt.pop() def __repr__(self): return '<%s "%s in %s">' % (self.__class__.__name__,