comparison markup/template.py @ 140:c1f4390d50f8 trunk

Fix bug in HTML serializer, plus some other minor tweaks.
author cmlenz
date Wed, 09 Aug 2006 21:00:15 +0000
parents 8332287b5508
children 47bbd9d2a5af
comparison
equal deleted inserted replaced
139:8332287b5508 140:c1f4390d50f8
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)
Copyright (C) 2012-2017 Edgewall Software