| var _concat = |
| /*#__PURE__*/ |
| require("./internal/_concat"); |
| |
| var _curry1 = |
| /*#__PURE__*/ |
| require("./internal/_curry1"); |
| |
| var curryN = |
| /*#__PURE__*/ |
| require("./curryN"); |
| /** |
| * Creates a new list iteration function from an existing one by adding two new |
| * parameters to its callback function: the current index, and the entire list. |
| * |
| * This would turn, for instance, [`R.map`](#map) function into one that |
| * more closely resembles `Array.prototype.map`. Note that this will only work |
| * for functions in which the iteration callback function is the first |
| * parameter, and where the list is the last parameter. (This latter might be |
| * unimportant if the list parameter is not used.) |
| * |
| * @func |
| * @memberOf R |
| * @since v0.15.0 |
| * @category Function |
| * @category List |
| * @sig ((a ... -> b) ... -> [a] -> *) -> ((a ..., Int, [a] -> b) ... -> [a] -> *) |
| * @param {Function} fn A list iteration function that does not pass index or list to its callback |
| * @return {Function} An altered list iteration function that passes (item, index, list) to its callback |
| * @example |
| * |
| * const mapIndexed = R.addIndex(R.map); |
| * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); |
| * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r'] |
| */ |
| |
| |
| var addIndex = |
| /*#__PURE__*/ |
| _curry1(function addIndex(fn) { |
| return curryN(fn.length, function () { |
| var idx = 0; |
| var origFn = arguments[0]; |
| var list = arguments[arguments.length - 1]; |
| var args = Array.prototype.slice.call(arguments, 0); |
| |
| args[0] = function () { |
| var result = origFn.apply(this, _concat(arguments, [idx, list])); |
| idx += 1; |
| return result; |
| }; |
| |
| return fn.apply(this, args); |
| }); |
| }); |
| |
| module.exports = addIndex; |