Files
lodash/.internal/composeArgsRight.js
Michał Lipiński 2538a56577 Math them all.
2017-04-04 22:38:50 +02:00

40 lines
1.2 KiB
JavaScript

/**
* This function is like `composeArgs` except that the arguments composition
* is tailored for `partialRight`.
*
* @private
* @param {Array} args The provided arguments.
* @param {Array} partials The arguments to append 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 composeArgsRight(args, partials, holders, isCurried) {
let argsIndex = -1
let holdersIndex = -1
let rightIndex = -1
const argsLength = args.length
const holdersLength = holders.length
const rightLength = partials.length
const rangeLength = Math.max(argsLength - holdersLength, 0)
const result = new Array(rangeLength + rightLength)
const isUncurried = !isCurried
while (++argsIndex < rangeLength) {
result[argsIndex] = args[argsIndex]
}
const offset = argsIndex
while (++rightIndex < rightLength) {
result[offset + rightIndex] = partials[rightIndex]
}
while (++holdersIndex < holdersLength) {
if (isUncurried || argsIndex < argsLength) {
result[offset + holders[holdersIndex]] = args[argsIndex++]
}
}
return result
}
export default composeArgsRight