fixed in operator for empty strings
authorFabien Potencier <fabien.potencier@gmail.com>
Sat, 29 Oct 2011 12:50:10 +0000 (14:50 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Sat, 29 Oct 2011 12:50:10 +0000 (14:50 +0200)
CHANGELOG
lib/Twig/Extension/Core.php
test/Twig/Tests/Fixtures/tests/in.test [moved from test/Twig/Tests/Fixtures/expressions/in.test with 77% similarity]

index 1b6a012..d758fa9 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 * 1.4.0
 
+ * fixed in operator for empty strings
  * fixed the "defined" test and the "default" filter (now works with more than one call (foo.bar.foo) and for both values of the strict_variables option)
  * changed the way extensions are loaded (addFilter/addFunction/addGlobal/addTest/addNodeVisitor/addTokenParser/addExtension can now be called in any order)
  * added Twig_Environment::display()
index 965a9cc..3aae743 100644 (file)
@@ -443,6 +443,9 @@ function twig_in_filter($value, $compare)
     if (is_array($compare)) {
         return in_array($value, $compare);
     } elseif (is_string($compare)) {
+        if (!$compare) {
+            return empty($value);
+        }
         return false !== strpos($compare, (string) $value);
     } elseif (is_object($compare) && $compare instanceof Traversable) {
         return in_array($value, iterator_to_array($compare, false));
similarity index 77%
rename from test/Twig/Tests/Fixtures/expressions/in.test
rename to test/Twig/Tests/Fixtures/tests/in.test
index a5cbfb8..ba40f25 100644 (file)
@@ -12,9 +12,17 @@ TRUE
 {% else %}
 TRUE
 {% endif %}
+{% if '' not in foo %}
+TRUE
+{% endif %}
+{% if '' in '' %}
+TRUE
+{% endif %}
 --DATA--
 return array('bar' => 'bar', 'foo' => array('bar' => 'bar'))
 --EXPECT--
 TRUE
 TRUE
 TRUE
+TRUE
+TRUE