Spaces:
Runtime error
Runtime error
/* Built-in method references for those with the same name as other `lodash` methods. */ | |
var nativeMax = Math.max; | |
/** | |
* Creates an array that is the composition of partially applied arguments, | |
* placeholders, and provided arguments into a single array of arguments. | |
* | |
* @private | |
* @param {Array} args The provided arguments. | |
* @param {Array} partials The arguments to prepend to those provided. | |
* @param {Array} holders The `partials` placeholder indexes. | |
* @params {boolean} [isCurried] Specify composing for a curried function. | |
* @returns {Array} Returns the new array of composed arguments. | |
*/ | |
function composeArgs(args, partials, holders, isCurried) { | |
var argsIndex = -1, | |
argsLength = args.length, | |
holdersLength = holders.length, | |
leftIndex = -1, | |
leftLength = partials.length, | |
rangeLength = nativeMax(argsLength - holdersLength, 0), | |
result = Array(leftLength + rangeLength), | |
isUncurried = !isCurried; | |
while (++leftIndex < leftLength) { | |
result[leftIndex] = partials[leftIndex]; | |
} | |
while (++argsIndex < holdersLength) { | |
if (isUncurried || argsIndex < argsLength) { | |
result[holders[argsIndex]] = args[argsIndex]; | |
} | |
} | |
while (rangeLength--) { | |
result[leftIndex++] = args[argsIndex++]; | |
} | |
return result; | |
} | |
module.exports = composeArgs; | |