// Loaded from https://deno.land/x/ramda@v0.27.2/source/takeWhile.js 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 = _curry2(_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;