[svn] some small jinja changes
authorArmin Ronacher <armin.ronacher@active-4.com>
Thu, 29 Mar 2007 20:11:59 +0000 (22:11 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Thu, 29 Mar 2007 20:11:59 +0000 (22:11 +0200)
--HG--
branch : trunk

jinja/datastructure.py
jinja/environment.py
jinja/nodes.py
jinja/utils.py
tests/runtime/bigtable.py

index e64f687c4ce04a60841b0ecf01c44b0f21f46134..732a938fffb258acbd479ed32a2b557e62359566 100644 (file)
@@ -176,7 +176,6 @@ class Context(object):
         return result
 
     def __getitem__(self, name):
-        # don't give access to jinja internal variables
         if name.startswith('::'):
             return Undefined
         # because the stack is usually quite small we better use [::-1]
@@ -184,7 +183,7 @@ class Context(object):
         for d in self._stack[::-1]:
             if name in d:
                 rv = d[name]
-                if isinstance(rv, Deferred):
+                if rv.__class__ is Deferred:
                     rv = rv(self, name)
                     # never touch the globals!
                     if d is self.globals:
index f807576af7d2f40c897103093f2087010d8b7e34..329ad816d693dca7c730531fa85761d4d550fa70 100644 (file)
@@ -207,7 +207,6 @@ class Environment(object):
         if value is Undefined or value is None:
             return u''
         val = self.to_unicode(value)
-        # apply default filters
         if self.default_filters:
             val = self.apply_filters(val, ctx, self.default_filters)
         return val
index b9d30519c5dd1b3f1d01a24596c5801dcac56c29..85a92b47f481b6b30851dc750b14522d25c0457e 100644 (file)
@@ -9,6 +9,7 @@
     :license: BSD, see LICENSE for more details.
 """
 from compiler import ast
+from copy import copy
 
 
 def inc_lineno(offset, tree):
@@ -276,9 +277,7 @@ class Block(Node):
         """
         Create an independent clone of this node.
         """
-        rv = Block(None, None, None)
-        rv.__dict__.update(self.__dict__)
-        return rv
+        return copy(self)
 
     def get_items(self):
         return [self.name, self.body]
index e68932001de5a2226f2ea8231b0c15375957100e..e9f63185c14ba107cf5bcb819596a5a12bbd4339 100644 (file)
@@ -151,20 +151,12 @@ def safe_range(start, stop=None, step=None):
 
 
 # python2.4 and lower has a bug regarding joining of broken generators
-if sys.hexversion < (2, 5):
-    def capture_generator(gen):
-        """
-        Concatenate the generator output.
-        """
-        return u''.join(tuple(gen))
+if sys.version_info < (2, 5):
+    capture_generator = lambda gen: u''.join(tuple(gen))
 
 # this should be faster and used in python2.5 and higher
 else:
-    def capture_generator(gen):
-        """
-        Concatenate the generator output
-        """
-        return u''.join(gen)
+    capture_generator = u''.join
 
 
 def buffereater(f):
index 9ea794d4201710f15cea9c6169ba502c941deac6..a7deaff279b0648fd17db9db5121e5df18e5f502 100644 (file)
@@ -10,6 +10,7 @@
 import cgi
 import sys
 import timeit
+import jdebug
 from StringIO import StringIO
 
 from genshi.builder import tag
@@ -49,21 +50,20 @@ if have_django:
     django_tmpl = DjangoTemplate("""
 <table>
 {% for row in table %}
-<tr>{% for col in row.values %}{{ col|escape }}{% endfor %}</tr>
+<tr>{% for col in row.values %}{{ col }}{% endfor %}</tr>
 {% endfor %}
 </table>
 """)
 
 jinja_tmpl = Environment().from_string('''
 <table>
-{% for row in table %}
-<tr>{% for col in row.values() %}{{ col|escape }}{% endfor %}</tr>
+{% for row in table -%}
+<tr>{% for col in row.values() %}{{ col }}{% endfor %}</tr>
 {% endfor %}
 </table>
 ''')
 
 cheetah_tmpl = CheetahTemplate('''
-# filter escape
 <table>
 #for $row in $table
 <tr>
@@ -81,7 +81,7 @@ if have_mako:
 % for row in table:
 <tr>
 % for col in row.values():
-    ${col|h}
+    ${col}
 % endfor
 </tr>
 % endfor
@@ -137,10 +137,11 @@ if __name__ == '__main__':
     which = [arg for arg in sys.argv[1:] if arg[0] != '-']
 
     if '-p' in sys.argv:
-        import hotshot, hotshot.stats
-        prof = hotshot.Profile("template.prof")
-        benchtime = prof.runcall(run, which, number=1)
-        stats = hotshot.stats.load("template.prof")
+        from cProfile import Profile
+        from pstats import Stats
+        p = Profile()
+        p.runcall(test_jinja)
+        stats = Stats(p)
         stats.strip_dirs()
         stats.sort_stats('time', 'calls')
         stats.print_stats()