| @@ 112-128 (lines=17) @@ | ||
| 109 | } |
|
| 110 | ||
| 111 | ||
| 112 | if (! \function_exists('\\iterator_filter')) { |
|
| 113 | /** |
|
| 114 | * @param iterable $iterator |
|
| 115 | * @param Closure $filter |
|
| 116 | * @return Generator |
|
| 117 | */ |
|
| 118 | function iterator_reverse_filter(iterable $iterator, \Closure $filter): \Generator |
|
| 119 | { |
|
| 120 | $generator = \iterator_to_generator($iterator); |
|
| 121 | ||
| 122 | while ($generator->valid()) { |
|
| 123 | $next = $filter($result = $generator->current()); |
|
| 124 | ||
| 125 | $generator->send($next ? (yield $generator->key() => $result) : null); |
|
| 126 | } |
|
| 127 | } |
|
| 128 | } |
|
| 129 | ||
| 130 | ||
| 131 | if (! \function_exists('\\iterator_reverse_filter')) { |
|
| @@ 131-147 (lines=17) @@ | ||
| 128 | } |
|
| 129 | ||
| 130 | ||
| 131 | if (! \function_exists('\\iterator_reverse_filter')) { |
|
| 132 | /** |
|
| 133 | * @param iterable $iterator |
|
| 134 | * @param Closure $filter |
|
| 135 | * @return Generator |
|
| 136 | */ |
|
| 137 | function iterator_reverse_filter(iterable $iterator, \Closure $filter): \Generator |
|
| 138 | { |
|
| 139 | $generator = \iterator_to_generator($iterator); |
|
| 140 | ||
| 141 | while ($generator->valid()) { |
|
| 142 | $next = $filter($result = yield $generator->key() => $generator->current()); |
|
| 143 | ||
| 144 | $generator->send($next ? $result : null); |
|
| 145 | } |
|
| 146 | } |
|
| 147 | } |
|
| 148 | ||