[svn] fixed empty block bug
authorArmin Ronacher <armin.ronacher@active-4.com>
Mon, 12 Mar 2007 20:06:35 +0000 (21:06 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Mon, 12 Mar 2007 20:06:35 +0000 (21:06 +0100)
--HG--
branch : trunk

jinja/translators/python.py
jinja/utils.py

index a891f021d122fae1ce181e3972b39c05d5e2f2d2..db788432cc73586c34ddd837deb1d74d3ad3a15e 100644 (file)
@@ -301,7 +301,8 @@ class PythonTranslator(Translator):
                 lines.append(self.handle_node(n))
 
         # the template body
-        rv = self.handle_node_list(node)
+        body_lines = [self.handle_node(n) for n in node]
+        print list(node)
 
         # add translation helpers if required
         if self.require_translations:
@@ -312,7 +313,7 @@ class PythonTranslator(Translator):
                 '            return translator.gettext(s) % (r or {})\n'
                 '        return translator.ngettext(s, p, r[n]) % (r or {})'
             )
-        lines.append(rv)
+        lines.extend(body_lines)
         lines.append('    if False:\n        yield None')
 
         return '\n'.join(lines)
@@ -529,7 +530,7 @@ class PythonTranslator(Translator):
         """
         rv = self.handle_node(node.body)
         if not rv:
-            return
+            return ''
 
         buf = []
         write = lambda x: buf.append(self.indent(x))
index d122da6c77388d436d651946c23812c340f22895..832cfdb9d96e06c109861ee1e8147c8136e05cf2 100644 (file)
@@ -88,6 +88,9 @@ def raise_template_exception(template, exception, filename, lineno, context):
     Raise an exception "in a template". Return a traceback
     object.
     """
+    # some traceback systems allow to skip blocks
+    __traceback_hide__ = True
+
     offset = '\n' * (lineno - 1)
     code = compile(offset + 'raise __exception_to_raise__', filename, 'exec')
     namespace = context.to_dict()
@@ -221,7 +224,10 @@ class CacheDict(object):
 
     def clear(self):
         self._mapping.clear()
-        del self._queue[:]
+        try:
+            self._queue.clear()
+        except AttributeError:
+            del self._queue[:]
 
     def __contains__(self, key):
         return key in self._mapping