changeset 102:e20a153cc20c trunk

Ported [118] to trunk
author jonas
date Mon, 24 Jul 2006 21:58:46 +0000
parents 5df0d81ac5d6
children 0f246a30d3a7
files markup/eval.py markup/tests/eval.py
diffstat 2 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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),
--- 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'}
Copyright (C) 2012-2017 Edgewall Software