comparison markup/template.py @ 120:c9f0a26e28a2 trunk

* Allow `py:with` directives to define `lambda`s * Fix directive order so that a `py:for` loop can be used inside a `py:when` or `py:otherwise` branch.
author cmlenz
date Wed, 02 Aug 2006 11:56:31 +0000
parents c77c113846d6
children 79f445396cd7
comparison
equal deleted inserted replaced
119:cc2aee07f53b 120:c9f0a26e28a2
646 except SyntaxError, err: 646 except SyntaxError, err:
647 raise TemplateSyntaxError(err, filename, lineno, 647 raise TemplateSyntaxError(err, filename, lineno,
648 offset + (err.offset or 0)) 648 offset + (err.offset or 0))
649 649
650 def __call__(self, stream, ctxt, directives): 650 def __call__(self, stream, ctxt, directives):
651 ctxt.push(dict([(name, expr.evaluate(ctxt)) 651 ctxt.push(dict([(name, expr.evaluate(ctxt, nocall=True))
652 for name, expr in self.vars])) 652 for name, expr in self.vars]))
653 for event in _apply_directives(stream, ctxt, directives): 653 for event in _apply_directives(stream, ctxt, directives):
654 yield event 654 yield event
655 ctxt.pop() 655 ctxt.pop()
656 656
669 EXPR = StreamEventKind('EXPR') # an expression 669 EXPR = StreamEventKind('EXPR') # an expression
670 SUB = StreamEventKind('SUB') # a "subprogram" 670 SUB = StreamEventKind('SUB') # a "subprogram"
671 671
672 directives = [('def', DefDirective), 672 directives = [('def', DefDirective),
673 ('match', MatchDirective), 673 ('match', MatchDirective),
674 ('when', WhenDirective),
675 ('otherwise', OtherwiseDirective),
674 ('for', ForDirective), 676 ('for', ForDirective),
675 ('if', IfDirective), 677 ('if', IfDirective),
676 ('when', WhenDirective),
677 ('otherwise', OtherwiseDirective),
678 ('choose', ChooseDirective), 678 ('choose', ChooseDirective),
679 ('with', WithDirective), 679 ('with', WithDirective),
680 ('replace', ReplaceDirective), 680 ('replace', ReplaceDirective),
681 ('content', ContentDirective), 681 ('content', ContentDirective),
682 ('attrs', AttrsDirective), 682 ('attrs', AttrsDirective),
Copyright (C) 2012-2017 Edgewall Software