added the empty test
authorFabien Potencier <fabien.potencier@gmail.com>
Sat, 18 Dec 2010 10:26:16 +0000 (11:26 +0100)
committerFabien Potencier <fabien.potencier@gmail.com>
Sat, 18 Dec 2010 10:53:55 +0000 (11:53 +0100)
CHANGELOG
doc/templates.rst
lib/Twig/Extension/Core.php
test/Twig/Tests/Fixtures/tests/empty.test [new file with mode: 0644]

index 5f1970f..5626a50 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,8 @@ Backward incompatibilities:
 
 Changes:
 
+ * added the "empty" test
+
 * 0.9.10 (2010-12-16)
 
 Backward incompatibilities:
index 47df16b..a1a4073 100644 (file)
@@ -1408,6 +1408,18 @@ useful if you use the ``strict_variables`` option:
         ...
     {% endif %}
 
+``empty``
+~~~~~~~~~
+
+``empty`` checks if a variable is empty:
+
+.. code-block:: jinja
+
+    {# evaluates to true if the foo variable is null, false, or the empty string #}
+    {% if foo is empty %}
+        ...
+    {% endif %}
+
 Extensions
 ----------
 
index 96b5192..77bef20 100644 (file)
@@ -99,6 +99,7 @@ class Twig_Extension_Core extends Twig_Extension
             'none'        => new Twig_Test_Function('twig_test_none'),
             'divisibleby' => new Twig_Test_Function('twig_test_divisibleby'),
             'constant'    => new Twig_Test_Function('twig_test_constant'),
+            'empty'       => new Twig_Test_Function('twig_test_empty'),
         );
     }
 
@@ -470,3 +471,8 @@ function twig_test_defined($name, $context)
 {
     return array_key_exists($name, $context);
 }
+
+function twig_test_empty($value)
+{
+    return null === $value || false === $value || '' === (string) $value;
+}
diff --git a/test/Twig/Tests/Fixtures/tests/empty.test b/test/Twig/Tests/Fixtures/tests/empty.test
new file mode 100644 (file)
index 0000000..d183a93
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+"empty" test
+--TEMPLATE--
+{{ foo is empty ? 'ok' : 'ko' }}
+{{ bar is empty ? 'ok' : 'ko' }}
+{{ foobar is empty ? 'ok' : 'ko' }}
+--DATA--
+return array('foo' => '', 'bar' => null, 'foobar' => false);
+--EXPECT--
+ok
+ok
+ok