render templates
authorChristoph Hack <christoph@tux21b.org>
Wed, 9 Apr 2008 13:08:11 +0000 (15:08 +0200)
committerChristoph Hack <christoph@tux21b.org>
Wed, 9 Apr 2008 13:08:11 +0000 (15:08 +0200)
--HG--
branch : trunk

jinja2/runtime.py
test.py

index 0e4200500d1f6879a435025c9bd858dc5c1baf72..cc5cfe188580eeda47a7d927dad0490e8c24f9ee 100644 (file)
@@ -149,7 +149,7 @@ class StaticLoopContext(LoopContextBase):
 
 class Macro(object):
     """
-    Wraps a macor
+    Wraps a macro
     """
 
     def __init__(self, func, name, arguments, defaults, catch_all):
@@ -176,7 +176,7 @@ class Macro(object):
                         value = self.defaults[idx - arg_count]
                     except IndexError:
                         value = Undefined(name)
-            arguments['l_' + name] = arg
+            arguments['l_' + name] = value
         if self.catch_all:
             arguments['l_arguments'] = kwargs
         return u''.join(self.func(**arguments))
diff --git a/test.py b/test.py
index 67f19b6b1d39a5de46484f8301d477af99f44315..7ab5b96dda5980ce38e8ff96f3c81df4a9179a4e 100644 (file)
--- a/test.py
+++ b/test.py
@@ -1,3 +1,4 @@
+import sys 
 from jinja2 import Environment
 from jinja2.compiler import generate
 
@@ -9,9 +10,19 @@ ast = env.parse("""
     {% macro foo(a) %}[{{ a }}|{{ b }}|{{ c }}]{% endmacro %}
     {% for item in seq %}
       {{ foo(item) }}
-    {% endfor %}
+    {%- endfor %}
 {% endblock %}
 """)
 print ast
 print
-print generate(ast, env, "foo.html")
+source = generate(ast, env, "foo.html")
+print source
+print
+
+# execute the template
+code = compile(source, 'jinja://foo.html', 'exec')
+context = {'seq': range(5), 'c': 'foobar'}
+namespace = {'global_context': context}
+exec code in namespace
+for event in namespace['root'](context):
+    sys.stdout.write(event)