| var _curry2 = |
| /*#__PURE__*/ |
| require("./internal/_curry2"); |
| |
| var _dispatchable = |
| /*#__PURE__*/ |
| require("./internal/_dispatchable"); |
| |
| var _xdropRepeatsWith = |
| /*#__PURE__*/ |
| require("./internal/_xdropRepeatsWith"); |
| |
| var last = |
| /*#__PURE__*/ |
| require("./last"); |
| /** |
| * Returns a new list without any consecutively repeating elements. Equality is |
| * determined by applying the supplied predicate to each pair of consecutive elements. The |
| * first element in a series of equal elements will be preserved. |
| * |
| * Acts as a transducer if a transformer is given in list position. |
| * |
| * @func |
| * @memberOf R |
| * @since v0.14.0 |
| * @category List |
| * @sig ((a, a) -> Boolean) -> [a] -> [a] |
| * @param {Function} pred A predicate used to test whether two items are equal. |
| * @param {Array} list The array to consider. |
| * @return {Array} `list` without repeating elements. |
| * @see R.transduce |
| * @example |
| * |
| * const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3]; |
| * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3] |
| */ |
| |
| |
| var dropRepeatsWith = |
| /*#__PURE__*/ |
| _curry2( |
| /*#__PURE__*/ |
| _dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) { |
| var result = []; |
| var idx = 1; |
| var len = list.length; |
| |
| if (len !== 0) { |
| result[0] = list[0]; |
| |
| while (idx < len) { |
| if (!pred(last(result), list[idx])) { |
| result[result.length] = list[idx]; |
| } |
| |
| idx += 1; |
| } |
| } |
| |
| return result; |
| })); |
| |
| module.exports = dropRepeatsWith; |