Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / globule / node_modules / lodash / _composeArgsRight.js
1 /* Built-in method references for those with the same name as other `lodash` methods. */
2 var nativeMax = Math.max;
3
4 /**
5  * This function is like `composeArgs` except that the arguments composition
6  * is tailored for `_.partialRight`.
7  *
8  * @private
9  * @param {Array} args The provided arguments.
10  * @param {Array} partials The arguments to append to those provided.
11  * @param {Array} holders The `partials` placeholder indexes.
12  * @params {boolean} [isCurried] Specify composing for a curried function.
13  * @returns {Array} Returns the new array of composed arguments.
14  */
15 function composeArgsRight(args, partials, holders, isCurried) {
16   var argsIndex = -1,
17       argsLength = args.length,
18       holdersIndex = -1,
19       holdersLength = holders.length,
20       rightIndex = -1,
21       rightLength = partials.length,
22       rangeLength = nativeMax(argsLength - holdersLength, 0),
23       result = Array(rangeLength + rightLength),
24       isUncurried = !isCurried;
25
26   while (++argsIndex < rangeLength) {
27     result[argsIndex] = args[argsIndex];
28   }
29   var offset = argsIndex;
30   while (++rightIndex < rightLength) {
31     result[offset + rightIndex] = partials[rightIndex];
32   }
33   while (++holdersIndex < holdersLength) {
34     if (isUncurried || argsIndex < argsLength) {
35       result[offset + holders[holdersIndex]] = args[argsIndex++];
36     }
37   }
38   return result;
39 }
40
41 module.exports = composeArgsRight;