| var _curry2 = |
| /*#__PURE__*/ |
| require("./internal/_curry2"); |
| /** |
| * Takes a list and a predicate and returns a pair of lists with the following properties: |
| * |
| * - the result of concatenating the two output lists is equivalent to the input list; |
| * - none of the elements of the first output list satisfies the predicate; and |
| * - if the second output list is non-empty, its first element satisfies the predicate. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.19.0 |
| * @category List |
| * @sig (a -> Boolean) -> [a] -> [[a], [a]] |
| * @param {Function} pred The predicate that determines where the array is split. |
| * @param {Array} list The array to be split. |
| * @return {Array} |
| * @example |
| * |
| * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]] |
| */ |
| |
| |
| var splitWhen = |
| /*#__PURE__*/ |
| _curry2(function splitWhen(pred, list) { |
| var idx = 0; |
| var len = list.length; |
| var prefix = []; |
| |
| while (idx < len && !pred(list[idx])) { |
| prefix.push(list[idx]); |
| idx += 1; |
| } |
| |
| return [prefix, Array.prototype.slice.call(list, idx)]; |
| }); |
| |
| module.exports = splitWhen; |