[svn] added tests for "capture" and "format" filters
authorArmin Ronacher <armin.ronacher@active-4.com>
Sun, 18 Mar 2007 22:15:23 +0000 (23:15 +0100)
committerArmin Ronacher <armin.ronacher@active-4.com>
Sun, 18 Mar 2007 22:15:23 +0000 (23:15 +0100)
--HG--
branch : trunk

jinja/filters.py
tests/test_filters.py

index 01cab4fb5d336a4eb72dc7e5c9a3a76e7b3680f9..7de2176e45fd75fc24189d3252cde1b37323aa3f 100644 (file)
@@ -577,6 +577,10 @@ def do_capture(name='captured'):
         {% endfilter %}
         {{ foo }}
     """
+    def wrapped(env, context, value):
+        context[name] = value
+        return value
+    return wrapped
 
 
 FILTERS = {
index eab73d52e03ae1247ebd2cb9afb47fd21ec96cdf..53b142afb256987da57ce457226a072b9a8160af 100644 (file)
@@ -15,6 +15,7 @@
 """
 
 CAPITALIZE = '''{{ "foo bar"|capitalize }}'''
+CAPTURE = '''{{ "foo"|capture('bar') }}|{{ bar }}'''
 CENTER = '''{{ "foo"|center(9) }}'''
 DEFAULT = '''{{ missing|default("no") }}|{{ false|default('no') }}|\
 {{ false|default('no', true) }}|{{ given|default("no") }}'''
@@ -29,6 +30,7 @@ FILESIZEFORMAT = '{{ 100|filesizeformat }}|\
 {{ 1000000000000|filesizeformat }}'
 FIRST = '''{{ foo|first }}'''
 FLOAT = '''{{ "42"|float }}|{{ "ajsghasjgd"|float }}|{{ "32.32"|float }}'''
+FORMAT = '''{{ "%s|%s"|format("a", "b") }}'''
 INDENT = '''{{ foo|indent(2) }}|{{ foo|indent(2, true) }}'''
 INT = '''{{ "42"|int }}|{{ "ajsghasjgd"|int }}|{{ "32.32"|int }}'''
 JOIN = '''{{ [1, 2, 3]|join("|") }}'''
@@ -56,6 +58,11 @@ def test_capitalize(env):
     assert tmpl.render() == 'Foo bar'
 
 
+def test_capture(env):
+    tmpl = env.from_string(CAPTURE)
+    assert tmpl.render() == 'foo|foo'
+
+
 def test_center(env):
     tmpl = env.from_string(CENTER)
     assert tmpl.render() == '   foo   '
@@ -98,6 +105,12 @@ def test_float(env):
     assert out == '42.0|0.0|32.32'
 
 
+def test_format(env):
+    tmpl = env.from_string(FORMAT)
+    out = tmpl.render()
+    assert out == 'a|b'
+
+
 def test_indent(env):
     tmpl = env.from_string(INDENT)
     text = '\n'.join([' '.join(['foo', 'bar'] * 2)] * 2)