# HG changeset patch # User jonas # Date 1153778326 0 # Node ID 12efdfe8af47ea2665c50438fd54e7c85ddc1370 # Parent ef6794139671694a351a3a017cb694d1a1c20b69 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'}