| @@ 835-851 (lines=17) @@ | ||
| 832 | * @param callable $function ($value, $key) |
|
| 833 | * @return Collection |
|
| 834 | */ |
|
| 835 | function dropWhile($collection, callable $function) |
|
| 836 | { |
|
| 837 | $generatorFactory = function () use ($collection, $function) { |
|
| 838 | $shouldDrop = true; |
|
| 839 | foreach ($collection as $key => $value) { |
|
| 840 | if ($shouldDrop) { |
|
| 841 | $shouldDrop = $function($value, $key); |
|
| 842 | } |
|
| 843 | ||
| 844 | if (!$shouldDrop) { |
|
| 845 | yield $key => $value; |
|
| 846 | } |
|
| 847 | } |
|
| 848 | }; |
|
| 849 | ||
| 850 | return new Collection($generatorFactory); |
|
| 851 | } |
|
| 852 | ||
| 853 | /** |
|
| 854 | * Returns a lazy collection of items from $collection until first item for which $function returns false. |
|
| @@ 860-876 (lines=17) @@ | ||
| 857 | * @param callable $function ($value, $key) |
|
| 858 | * @return Collection |
|
| 859 | */ |
|
| 860 | function takeWhile($collection, callable $function) |
|
| 861 | { |
|
| 862 | $generatorFactory = function () use ($collection, $function) { |
|
| 863 | $shouldTake = true; |
|
| 864 | foreach ($collection as $key => $value) { |
|
| 865 | if ($shouldTake) { |
|
| 866 | $shouldTake = $function($value, $key); |
|
| 867 | } |
|
| 868 | ||
| 869 | if ($shouldTake) { |
|
| 870 | yield $key => $value; |
|
| 871 | } |
|
| 872 | } |
|
| 873 | }; |
|
| 874 | ||
| 875 | return new Collection($generatorFactory); |
|
| 876 | } |
|
| 877 | ||
| 878 | /** |
|
| 879 | * Returns a lazy collection. A result of calling map and flatten(1) |
|
| @@ 952-965 (lines=14) @@ | ||
| 949 | * @param mixed $startValue |
|
| 950 | * @return Collection |
|
| 951 | */ |
|
| 952 | function reductions($collection, callable $function, $startValue) |
|
| 953 | { |
|
| 954 | $generatorFactory = function () use ($collection, $function, $startValue) { |
|
| 955 | $tmp = duplicate($startValue); |
|
| 956 | ||
| 957 | yield $tmp; |
|
| 958 | foreach ($collection as $key => $value) { |
|
| 959 | $tmp = $function($tmp, $value, $key); |
|
| 960 | yield $tmp; |
|
| 961 | } |
|
| 962 | }; |
|
| 963 | ||
| 964 | return new Collection($generatorFactory); |
|
| 965 | } |
|
| 966 | ||
| 967 | /** |
|
| 968 | * Returns a lazy collection of every nth ($step) item in $collection. |
|