mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-15 03:46:39 +00:00
Fixed "in" operator for resources and strings
This commit is contained in:
@@ -934,15 +934,11 @@ function twig_sort_filter($array)
|
||||
function twig_in_filter($value, $compare)
|
||||
{
|
||||
if (is_array($compare)) {
|
||||
return in_array($value, $compare, is_object($value));
|
||||
} elseif (is_string($compare)) {
|
||||
if (!strlen($value)) {
|
||||
return empty($compare);
|
||||
}
|
||||
|
||||
return false !== strpos($compare, (string) $value);
|
||||
return in_array($value, $compare, is_object($value) || is_resource($value));
|
||||
} elseif (is_string($compare) && (is_string($value) || is_int($value) || is_float($value))) {
|
||||
return '' === $value || false !== strpos($compare, (string) $value);
|
||||
} elseif ($compare instanceof Traversable) {
|
||||
return in_array($value, iterator_to_array($compare, false), is_object($value));
|
||||
return in_array($value, iterator_to_array($compare, false), is_object($value) || is_resource($value));
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -18,7 +18,7 @@ TRUE
|
||||
{% if 'c' not in bar %}
|
||||
TRUE
|
||||
{% endif %}
|
||||
{% if '' not in bar %}
|
||||
{% if '' in bar %}
|
||||
TRUE
|
||||
{% endif %}
|
||||
{% if '' in '' %}
|
||||
@@ -33,8 +33,47 @@ TRUE
|
||||
{% if '0' in '0' %}
|
||||
TRUE
|
||||
{% endif %}
|
||||
|
||||
{{ false in [0, 1] ? 'TRUE' : 'FALSE' }}
|
||||
{{ true in [0, 1] ? 'TRUE' : 'FALSE' }}
|
||||
{{ '0' in [0, 1] ? 'TRUE' : 'FALSE' }}
|
||||
{{ '' in [0, 1] ? 'TRUE' : 'FALSE' }}
|
||||
{{ 0 in ['', 1] ? 'TRUE' : 'FALSE' }}
|
||||
|
||||
{{ '' in 'foo' ? 'TRUE' : 'FALSE' }}
|
||||
{{ 0 in 'foo' ? 'TRUE' : 'FALSE' }}
|
||||
{{ false in 'foo' ? 'TRUE' : 'FALSE' }}
|
||||
{{ false in '100' ? 'TRUE' : 'FALSE' }}
|
||||
{{ true in '100' ? 'TRUE' : 'FALSE' }}
|
||||
|
||||
{{ [] in [true, false] ? 'TRUE' : 'FALSE' }}
|
||||
{{ [] in [true, ''] ? 'TRUE' : 'FALSE' }}
|
||||
{{ [] in [true, []] ? 'TRUE' : 'FALSE' }}
|
||||
|
||||
{{ resource in 'foo'~resource ? 'TRUE' : 'FALSE' }}
|
||||
{{ object in 'stdClass' ? 'TRUE' : 'FALSE' }}
|
||||
{{ [] in 'Array' ? 'TRUE' : 'FALSE' }}
|
||||
{{ dir_object in 'foo'~dir_object ? 'TRUE' : 'FALSE' }}
|
||||
|
||||
{{ ''~resource in resource ? 'TRUE' : 'FALSE' }}
|
||||
{{ 'stdClass' in object ? 'TRUE' : 'FALSE' }}
|
||||
{{ 'Array' in [] ? 'TRUE' : 'FALSE' }}
|
||||
{{ ''~dir_object in dir_object ? 'TRUE' : 'FALSE' }}
|
||||
|
||||
{{ resource in [''~resource] ? 'TRUE' : 'FALSE' }}
|
||||
{{ resource in [resource + 1 - 1] ? 'TRUE' : 'FALSE' }}
|
||||
{{ dir_object in [''~dir_object] ? 'TRUE' : 'FALSE' }}
|
||||
|
||||
{{ 5 in 125 ? 'TRUE' : 'FALSE' }}
|
||||
{{ 5 in '125' ? 'TRUE' : 'FALSE' }}
|
||||
{{ '5' in 125 ? 'TRUE' : 'FALSE' }}
|
||||
{{ '5' in '125' ? 'TRUE' : 'FALSE' }}
|
||||
|
||||
{{ 5.5 in 125.5 ? 'TRUE' : 'FALSE' }}
|
||||
{{ 5.5 in '125.5' ? 'TRUE' : 'FALSE' }}
|
||||
{{ '5.5' in 125.5 ? 'TRUE' : 'FALSE' }}
|
||||
--DATA--
|
||||
return array('bar' => 'bar', 'foo' => array('bar' => 'bar'))
|
||||
return array('bar' => 'bar', 'foo' => array('bar' => 'bar'), 'dir_object' => new SplFileInfo(dirname(__FILE__)), 'object' => new stdClass(), 'resource' => fopen(dirname(__FILE__), 'r'))
|
||||
--EXPECT--
|
||||
TRUE
|
||||
TRUE
|
||||
@@ -46,3 +85,42 @@ TRUE
|
||||
TRUE
|
||||
TRUE
|
||||
TRUE
|
||||
|
||||
TRUE
|
||||
TRUE
|
||||
TRUE
|
||||
TRUE
|
||||
TRUE
|
||||
|
||||
TRUE
|
||||
FALSE
|
||||
FALSE
|
||||
FALSE
|
||||
FALSE
|
||||
|
||||
TRUE
|
||||
FALSE
|
||||
TRUE
|
||||
|
||||
FALSE
|
||||
FALSE
|
||||
FALSE
|
||||
FALSE
|
||||
|
||||
FALSE
|
||||
FALSE
|
||||
FALSE
|
||||
FALSE
|
||||
|
||||
FALSE
|
||||
FALSE
|
||||
FALSE
|
||||
|
||||
FALSE
|
||||
TRUE
|
||||
FALSE
|
||||
TRUE
|
||||
|
||||
FALSE
|
||||
TRUE
|
||||
FALSE
|
||||
|
||||
Reference in New Issue
Block a user