[svn] added sameas test function
authorArmin Ronacher <armin.ronacher@active-4.com>
Sun, 24 Jun 2007 10:37:13 +0000 (12:37 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Sun, 24 Jun 2007 10:37:13 +0000 (12:37 +0200)
--HG--
branch : trunk

CHANGES
jinja/filters.py
jinja/tests.py
tests/test_tests.py

diff --git a/CHANGES b/CHANGES
index 6bf0278d39440bf5d40f92a7909da057a331019c..b30fa9b13099373ae14c4201166241c91f66138e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -14,6 +14,8 @@ Version 1.2
 
 - added `groupby` filter.
 
+- added `sameas` test function.
+
 
 Version 1.1
 -----------
index 3f621a7dabef7b8b049d9d9cf6c28c94dc1a66fa..f253d37e2a0913c94374a8385bf224a20860d3d1 100644 (file)
@@ -872,6 +872,8 @@ def do_groupby(attribute):
     As you can see the item we're grouping by is stored in the `grouper`
     attribute and the `list` contains all the objects that have this grouper
     in common.
+
+    *New in Jinja 1.2*
     """
     def wrapped(env, context, value):
         expr = lambda x: env.get_attribute(x, attribute)
index cdef3a3dfb4dc45fa5ba274b76822587776831f8..4cbe65a323238826fbceb9108649d92f8b72fc82 100644 (file)
@@ -111,6 +111,22 @@ def test_matching(regex):
     return wrapped
 
 
+def test_sameas(other):
+    """
+    Check if an object points to the same memory address than another
+    object:
+
+    .. sourcecode:: jinja
+
+        {% if foo.attribute is sameas(false) %}
+            the foo attribute really is the `False` singleton
+        {% endif %}
+
+    *New in Jinja 1.2*
+    """
+    return lambda e, c, v: v is other
+
+
 TESTS = {
     'odd':              test_odd,
     'even':             test_even,
@@ -119,5 +135,6 @@ TESTS = {
     'upper':            test_upper,
     'numeric':          test_numeric,
     'sequence':         test_sequence,
-    'matching':         test_matching
+    'matching':         test_matching,
+    'sameas':           test_sameas
 }
index 387f3fbfdb4a7cb38c06765587c322a627e84bd1..c28cd90acdd67189beed69a720087e4970c02ae2 100644 (file)
@@ -19,6 +19,7 @@ SEQUENCE = '''{{ [1, 2, 3] is sequence }}|\
 {{ "foo" is sequence }}|\
 {{ 42 is sequence }}'''
 UPPER = '''{{ "FOO" is upper }}|{{ "foo" is upper }}'''
+SAMEAS = '''{{ foo is sameas(false) }}|{{ 0 is sameas(false) }}'''
 
 
 def test_defined(env):
@@ -59,3 +60,8 @@ def test_sequence(env):
 def test_upper(env):
     tmpl = env.from_string(UPPER)
     assert tmpl.render() == 'True|False'
+
+
+def test_sameas(env):
+    tmpl = env.from_string(SAMEAS)
+    assert tmpl.render(foo=False) == 'True|False'