fixed support for IteratorAggregate in the filter filter

This commit is contained in:
Fabien Potencier
2019-05-10 08:33:19 +02:00
parent 3d95ffe906
commit 084be27d77
2 changed files with 15 additions and 1 deletions
+4
View File
@@ -1696,6 +1696,10 @@ function twig_array_filter($array, $arrow)
return array_filter($array, $arrow);
}
while ($array instanceof \IteratorAggregate) {
$array = $array->getIterator();
}
return new \CallbackFilterIterator($array, $arrow);
}
+11 -1
View File
@@ -18,8 +18,15 @@
{% for k, v in it|filter((v) => v > offset) -%}
{{ k }} = {{ v }}
{% endfor %}
{% for k, v in ita|filter(v => v > offset) -%}
{{ k }} = {{ v }}
{% endfor %}
--DATA--
return ['it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8])]
return [
'it' => new \ArrayIterator(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
'ita' => new IteratorAggregateStub(['a' => 1, 'b' => 2, 'c' => 5, 'd' => 8]),
]
--EXPECT--
1 = 5
3 = 4
@@ -34,3 +41,6 @@ d = 8
c = 5
d = 8
c = 5
d = 8