Conditions | 2 |
Paths | 1 |
Total Lines | 20 |
Code Lines | 12 |
Lines | 0 |
Ratio | 0 % |
Tests | 11 |
CRAP Score | 2 |
Changes | 0 |
1 | <?php |
||
13 | function pipe(callable ...$callbacks): \Closure |
||
14 | { |
||
15 | return function ($payload = null, ...$rest) use ($callbacks) { |
||
16 | $leftmost = function ($payload) use ($rest, $callbacks) { |
||
17 | 2 | return $callbacks[0]( |
|
18 | 2 | ...\array_merge([$payload], $rest) |
|
19 | ); |
||
20 | 6 | }; |
|
21 | |||
22 | 6 | return \array_reduce( |
|
23 | 6 | [] === $rest |
|
24 | 4 | ? $callbacks |
|
25 | 6 | : \array_merge([$leftmost], tail($callbacks)), |
|
26 | function ($payload, callable $callback) { |
||
27 | 6 | return $callback($payload); |
|
28 | 6 | }, |
|
29 | 6 | $payload |
|
30 | ); |
||
31 | 6 | }; |
|
32 | } |
||
33 |