Files
lodash/_composeArgsRight.js
2017-01-09 12:20:58 -08:00

43 lines
1.4 KiB
JavaScript

/* Built-in method references for those with the same name as other `lodash` methods. */
const nativeMax = Math.max;
/**
* 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 = nativeMax(argsLength - holdersLength, 0);
const result = 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;