# HG changeset patch # User jonas # Date 1153778326 0 # Node ID e20a153cc20c5c46fae0e3bdd6b3f78c4ee774dc # Parent 5df0d81ac5d6235c09ef8ad0d31ec6097c138ee5 Ported [118] to trunk diff --git a/markup/eval.py b/markup/eval.py --- a/markup/eval.py +++ b/markup/eval.py @@ -209,7 +209,11 @@ def _visitDefault(self, node, *args, **kwargs): return node visitAssName = visitAssTuple = _visitDefault - visitConst = visitKeyword = visitName = _visitDefault + visitConst = visitName = _visitDefault + + def visitKeyword(self, node, *args, **kwargs): + node.expr = self.visit(node.expr, *args, **kwargs) + return node def visitDict(self, node, *args, **kwargs): node.items = map(lambda (k, v): (self.visit(k, *args, **kwargs), diff --git a/markup/tests/eval.py b/markup/tests/eval.py --- a/markup/tests/eval.py +++ b/markup/tests/eval.py @@ -180,6 +180,10 @@ data = {'foo': {'bar': range(42)}} self.assertEqual(42, Expression("len(foo.bar)").evaluate(data)) + def test_call_keywords(self): + self.assertEqual(42, Expression("foo(x=bar)").evaluate({'foo': lambda x: x, + 'bar': 42})) + def test_call_function_without_params(self): self.assertEqual(42, Expression("foo").evaluate({'foo': lambda: 42})) data = {'foo': 'bar'}