]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Added proper super() support for scoped blocks.
authorArmin Ronacher <armin.ronacher@active-4.com>
Thu, 19 Feb 2009 15:11:11 +0000 (16:11 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Thu, 19 Feb 2009 15:11:11 +0000 (16:11 +0100)
--HG--
branch : trunk

jinja2/runtime.py
tests/test_inheritance.py

index 013d98721dcfafadc0c2cfac6c3550de27e15529..c2e0aa378df0180643a0418a5d900098a60676fa 100644 (file)
@@ -173,8 +173,10 @@ class Context(object):
 
     def derived(self, locals=None):
         """Internal helper function to create a derived context."""
-        return new_context(self.environment, self.name, self.blocks,
-                           self.parent, True, None, locals)
+        context = new_context(self.environment, self.name, {},
+                              self.parent, True, None, locals)
+        context.blocks.update((k, list(v)) for k, v in self.blocks.iteritems())
+        return context
 
     def _all(meth):
         proxy = lambda self: getattr(self.get_all(), meth)()
index 6a45f5926f24f7747ca0bda57251a056c1f2035b..13a9d8d90bd653002e63db51699d39547a796b9b 100644 (file)
@@ -175,3 +175,12 @@ def test_scoped_block():
     }))
     t = env.from_string('{% extends "master.html" %}{% block item %}{{ item }}{% endblock %}')
     assert t.render(seq=range(5)) == '[0][1][2][3][4]'
+
+
+def test_super_in_scoped_block():
+    env = Environment(loader=DictLoader({
+        'master.html': '{% for item in seq %}[{% block item scoped %}'
+                       '{{ item }}{% endblock %}]{% endfor %}'
+    }))
+    t = env.from_string('{% extends "master.html" %}{% block item %}{{ super() }}|{{ item * 2 }}{% endblock %}')
+    assert t.render(seq=range(5)) == '[0|0][1|2][2|4][3|6][4|8]'