|
@@ 616-625 (lines=10) @@
|
| 613 |
|
* @param array $list |
| 614 |
|
* @return array |
| 615 |
|
*/ |
| 616 |
|
function takeLastWhile() { |
| 617 |
|
static $takeLastWhile = false; |
| 618 |
|
$takeLastWhile = $takeLastWhile ?: curry(function($predicate, $list) { |
| 619 |
|
$index = length($list) - 1; |
| 620 |
|
while ($index >= 0 && $predicate($list[$index])) |
| 621 |
|
$index --; |
| 622 |
|
return array_slice($list, $index + 1); |
| 623 |
|
}); |
| 624 |
|
return _apply($takeLastWhile, func_get_args()); |
| 625 |
|
} |
| 626 |
|
|
| 627 |
|
/** |
| 628 |
|
* Takes elements from an array **until** the predicate |
|
@@ 670-679 (lines=10) @@
|
| 667 |
|
* @param array $list |
| 668 |
|
* @return array |
| 669 |
|
*/ |
| 670 |
|
function takeLastUntil() { |
| 671 |
|
static $takeLastUntil = false; |
| 672 |
|
$takeLastUntil = $takeLastUntil ?: curry(function($predicate, $list) { |
| 673 |
|
$index = length($list) - 1; |
| 674 |
|
while ($index >= 0 && !$predicate($list[$index])) |
| 675 |
|
$index --; |
| 676 |
|
return array_slice($list, $index + 1); |
| 677 |
|
}); |
| 678 |
|
return _apply($takeLastUntil, func_get_args()); |
| 679 |
|
} |
| 680 |
|
|
| 681 |
|
/** |
| 682 |
|
* Removes a number of elements from an array. |
|
@@ 767-776 (lines=10) @@
|
| 764 |
|
* @param array $list |
| 765 |
|
* @return array |
| 766 |
|
*/ |
| 767 |
|
function removeLastWhile() { |
| 768 |
|
static $removeLastWhile = false; |
| 769 |
|
$removeLastWhile = $removeLastWhile ?: curry(function($predicate, $list) { |
| 770 |
|
$index = length($list) - 1; |
| 771 |
|
while ($index >= 0 && $predicate($list[$index])) |
| 772 |
|
$index --; |
| 773 |
|
return array_slice($list, 0, $index + 1); |
| 774 |
|
}); |
| 775 |
|
return _apply($removeLastWhile, func_get_args()); |
| 776 |
|
} |
| 777 |
|
|
| 778 |
|
/** |
| 779 |
|
* Removes elements from an array **until** the predicate |
|
@@ 823-832 (lines=10) @@
|
| 820 |
|
* @param array $list |
| 821 |
|
* @return array |
| 822 |
|
*/ |
| 823 |
|
function removeLastUntil() { |
| 824 |
|
static $removeLastUntil = false; |
| 825 |
|
$removeLastUntil = $removeLastUntil ?: curry(function($predicate, $list) { |
| 826 |
|
$index = length($list) - 1; |
| 827 |
|
while ($index >= 0 && !$predicate($list[$index])) |
| 828 |
|
$index --; |
| 829 |
|
return array_slice($list, 0, $index + 1); |
| 830 |
|
}); |
| 831 |
|
return _apply($removeLastUntil, func_get_args()); |
| 832 |
|
} |
| 833 |
|
|
| 834 |
|
/** |
| 835 |
|
* Converts an array of (key, value) pairs to an object (instance of `stdClass`). |