Passed
Push — master ( f0c27e...92ec90 )
by Arnold
02:15
created

_iterable_chunk_generate()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 3
nc 2
nop 2
dl 0
loc 6
ccs 3
cts 3
cp 1
crap 3
rs 10
c 0
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace Improved;
4
5
/**
6
 * Divide iterable into chunks of specified size.
7
 *
8
 * @param iterable $iterable
9
 * @param int      $size
10
 * @return \Generator
11
 */
12
function iterable_chunk(iterable $iterable, int $size): \Generator
13
{
14
    $generate = function(\Iterator $iterator, int $size): \Generator {
0 ignored issues
show
Coding Style introduced by
Expected 1 space after FUNCTION keyword; 0 found
Loading history...
15 11
        for ($i = 0; $i < $size && $iterator->valid(); $i++) {
16 11
            yield $iterator->key() => $iterator->current();
17
18 11
            $iterator->next();
19
        }
20 12
    };
21
22 12
    $iterator = iterable_to_iterator($iterable);
23 12
    $iterator->rewind();
24
25 12
    while ($iterator->valid()) {
26 11
        yield $generate($iterator, $size);
27
    }
28
}
29