Mercurial > genshi > genshi-test
comparison markup/template.py @ 140:a2edde90ad24
Fix bug in HTML serializer, plus some other minor tweaks.
author | cmlenz |
---|---|
date | Wed, 09 Aug 2006 21:00:15 +0000 |
parents | 54131cbb91a5 |
children | 56d534eb53f9 |
comparison
equal
deleted
inserted
replaced
139:54131cbb91a5 | 140:a2edde90ad24 |
---|---|
357 ATTRIBUTE = 'each' | 357 ATTRIBUTE = 'each' |
358 | 358 |
359 def __init__(self, value, filename=None, lineno=-1, offset=-1): | 359 def __init__(self, value, filename=None, lineno=-1, offset=-1): |
360 targets, value = value.split(' in ', 1) | 360 targets, value = value.split(' in ', 1) |
361 self.targets = [str(name.strip()) for name in targets.split(',')] | 361 self.targets = [str(name.strip()) for name in targets.split(',')] |
362 Directive.__init__(self, value, filename, lineno, offset) | 362 Directive.__init__(self, value.strip(), filename, lineno, offset) |
363 | 363 |
364 def __call__(self, stream, ctxt, directives): | 364 def __call__(self, stream, ctxt, directives): |
365 iterable = self.expr.evaluate(ctxt) | 365 iterable = self.expr.evaluate(ctxt) |
366 if iterable is None: | 366 if iterable is None: |
367 return | 367 return |
368 | 368 |
369 scope = {} | 369 scope = {} |
370 stream = list(stream) | 370 stream = list(stream) |
371 targets = self.targets | 371 targets = self.targets |
372 single = len(targets) == 1 | |
372 for item in iter(iterable): | 373 for item in iter(iterable): |
373 if len(targets) == 1: | 374 if single: |
374 scope[targets[0]] = item | 375 scope[targets[0]] = item |
375 else: | 376 else: |
376 for idx, name in enumerate(targets): | 377 for idx, name in enumerate(targets): |
377 scope[name] = item[idx] | 378 scope[name] = item[idx] |
378 ctxt.push(scope) | 379 ctxt.push(scope) |