| import _curry2 from './internal/_curry2.js'; |
| import _dispatchable from './internal/_dispatchable.js'; |
| import _xtakeWhile from './internal/_xtakeWhile.js'; |
| import slice from './slice.js'; |
| |
| /** |
| * Returns a new list containing the first `n` elements of a given list, |
| * passing each value to the supplied predicate function, and terminating when |
| * the predicate function returns `false`. Excludes the element that caused the |
| * predicate function to fail. The predicate function is passed one argument: |
| * *(value)*. |
| * |
| * Dispatches to the `takeWhile` method of the second argument, if present. |
| * |
| * Acts as a transducer if a transformer is given in list position. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.1.0 |
| * @category List |
| * @sig (a -> Boolean) -> [a] -> [a] |
| * @sig (a -> Boolean) -> String -> String |
| * @param {Function} fn The function called per iteration. |
| * @param {Array} xs The collection to iterate over. |
| * @return {Array} A new array. |
| * @see R.dropWhile, R.transduce, R.addIndex |
| * @example |
| * |
| * const isNotFour = x => x !== 4; |
| * |
| * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3] |
| * |
| * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram' |
| */ |
| var takeWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) { |
| var idx = 0; |
| var len = xs.length; |
| while (idx < len && fn(xs[idx])) { |
| idx += 1; |
| } |
| return slice(0, idx, xs); |
| })); |
| export default takeWhile; |