From: Dirk D Date: Thu, 12 Jan 2017 21:03:38 +0000 (+0100) Subject: Add "is in" containment test (#658) X-Git-Tag: 2.10~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ab79c62ef8aa65cc4e6b6a2e2e4dd226aeb6d51;p=thirdparty%2Fjinja.git Add "is in" containment test (#658) --- diff --git a/jinja2/tests.py b/jinja2/tests.py index bd843b77..e4129658 100644 --- a/jinja2/tests.py +++ b/jinja2/tests.py @@ -162,6 +162,11 @@ def test_lessthan(value, other): return value < other +def test_in(value, seq): + """Check if value is in seq.""" + return value in seq + + TESTS = { 'odd': test_odd, 'even': test_even, @@ -181,5 +186,6 @@ TESTS = { 'equalto': test_equalto, 'escaped': test_escaped, 'greaterthan': test_greaterthan, - 'lessthan': test_lessthan + 'lessthan': test_lessthan, + 'in': test_in } diff --git a/tests/test_tests.py b/tests/test_tests.py index 0dead3bf..3539a1fd 100644 --- a/tests/test_tests.py +++ b/tests/test_tests.py @@ -126,3 +126,16 @@ class TestTestsCase(object): assert tmpl.render() == 'False' assert items == [('us-west-1', '(us-east-1|ap-northeast-1)'), ('stage', '(dev|stage)')] + + def test_in(self, env): + tmpl = env.from_string('{{ "o" is in "foo" }}|' + '{{ "foo" is in "foo" }}|' + '{{ "b" is in "foo" }}|' + '{{ 1 is in ((1, 2)) }}|' + '{{ 3 is in ((1, 2)) }}|' + '{{ 1 is in [1, 2] }}|' + '{{ 3 is in [1, 2] }}|' + '{{ "foo" is in {"foo": 1}}}|' + '{{ "baz" is in {"bar": 1}}}') + assert tmpl.render() \ + == 'True|True|False|True|False|True|False|True|False'