mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-31 04:27:00 +00:00
added support for iterators
This commit is contained in:
@@ -1688,16 +1688,28 @@ function twig_array_batch($items, $size, $fill = null, $preserveKeys = true)
|
||||
|
||||
function twig_array_filter($array, $arrow)
|
||||
{
|
||||
return array_filter($array, $arrow);
|
||||
if (\is_array($array)) {
|
||||
return array_filter($array, $arrow);
|
||||
}
|
||||
|
||||
return new \CallbackFilterIterator($array, $arrow);
|
||||
}
|
||||
|
||||
function twig_array_map($array, $arrow)
|
||||
{
|
||||
if (!\is_array($array)) {
|
||||
$array = iterator_to_array($array);
|
||||
}
|
||||
|
||||
return array_map($arrow, $array);
|
||||
}
|
||||
|
||||
function twig_array_reduce($array, $arrow, $initial = null)
|
||||
{
|
||||
if (!\is_array($array)) {
|
||||
$array = iterator_to_array($array);
|
||||
}
|
||||
|
||||
return array_reduce($array, $arrow, $initial);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,12 @@
|
||||
{% for k, v in [1, 5, 3, 4, 5]|filter(v => v > offset) -%}
|
||||
{{ k }} = {{ v }}
|
||||
{% endfor %}
|
||||
|
||||
{% for k, v in it|filter((v) => v > offset) -%}
|
||||
{{ k }} = {{ v }}
|
||||
{% endfor %}
|
||||
--DATA--
|
||||
return []
|
||||
return ['it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 2])]
|
||||
--EXPECT--
|
||||
1 = 5
|
||||
3 = 4
|
||||
@@ -26,3 +30,5 @@ c = 5
|
||||
1 = 5
|
||||
3 = 4
|
||||
4 = 5
|
||||
|
||||
c = 5
|
||||
|
||||
@@ -14,8 +14,12 @@
|
||||
{% for k, v in [1, 2]|map(item => item + 2 ) -%}
|
||||
{{ k }} = {{ v }}
|
||||
{% endfor %}
|
||||
|
||||
{% for k, v in it|map(item => item + 2 ) -%}
|
||||
{{ k }} = {{ v }}
|
||||
{% endfor %}
|
||||
--DATA--
|
||||
return []
|
||||
return ['it' => new \ArrayIterator([1, 2])]
|
||||
--EXPECT--
|
||||
0 = 3
|
||||
1 = 4
|
||||
@@ -25,3 +29,6 @@ b = 2*
|
||||
|
||||
0 = 3
|
||||
1 = 4
|
||||
|
||||
0 = 3
|
||||
1 = 4
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
{% set offset = 3 %}
|
||||
|
||||
{{ [1, -1, 4]|reduce((carry, item) => carry + item + offset, 10) }}
|
||||
|
||||
{{ it|reduce((carry, item) => carry + item + offset, 10) }}
|
||||
--DATA--
|
||||
return []
|
||||
return ['it' => new \ArrayIterator([1, -1, 4])]
|
||||
--EXPECT--
|
||||
23
|
||||
|
||||
23
|
||||
|
||||
Reference in New Issue
Block a user