fixed error in error message (-.-)
authorArmin Ronacher <armin.ronacher@active-4.com>
Mon, 10 Sep 2007 14:03:32 +0000 (16:03 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Mon, 10 Sep 2007 14:03:32 +0000 (16:03 +0200)
--HG--
branch : trunk

jinja/parser.py
jinja/utils.py

index 28a037f456fcc7dfdfd36553a00d086eaf49200d..ff2684ac4430f80c49298a5baca4353aa1f8a2e6 100644 (file)
@@ -303,7 +303,8 @@ class Parser(object):
         # check if this block does not exist by now.
         if name in self.blocks:
             raise TemplateSyntaxError('block %r defined twice' %
-                                       name, lineno, self.filename)
+                                       name, token.lineno,
+                                       self.filename)
         self.blocks.add(name)
 
         if self.stream.current.type != 'block_end':
index bdea9e61992ecc8ea8e9b8c4342661f69783e9b8..9e8190c952154159cc46ad74ce5da19e192a174b 100644 (file)
@@ -215,17 +215,22 @@ def safe_range(start, stop=None, step=None):
     """
     "Safe" form of range that does not generate too large lists.
     """
-    # this also works with None since None is always smaller than
-    # any other value.
-    if start > MAX_RANGE:
-        start = MAX_RANGE
-    if stop > MAX_RANGE:
-        stop = MAX_RANGE
     if step is None:
         step = 1
     if stop is None:
-        return range(0, start, step)
-    return range(start, stop, step)
+        r = xrange(0, start, step)
+    else:
+        r = xrange(start, stop, step)
+    if len(r) > MAX_RANGE:
+        def limit():
+            i = 0
+            for item in r:
+                i += 1
+                yield item
+                if i >= MAX_RANGE:
+                    break
+        return list(limit())
+    return list(r)
 
 
 def generate_lorem_ipsum(n=5, html=True, min=20, max=100):