00001
00002 var nativeMax = Math.max;
00003
00015 function composeArgs(args, partials, holders, isCurried) {
00016 var argsIndex = -1,
00017 argsLength = args.length,
00018 holdersLength = holders.length,
00019 leftIndex = -1,
00020 leftLength = partials.length,
00021 rangeLength = nativeMax(argsLength - holdersLength, 0),
00022 result = Array(leftLength + rangeLength),
00023 isUncurried = !isCurried;
00024
00025 while (++leftIndex < leftLength) {
00026 result[leftIndex] = partials[leftIndex];
00027 }
00028 while (++argsIndex < holdersLength) {
00029 if (isUncurried || argsIndex < argsLength) {
00030 result[holders[argsIndex]] = args[argsIndex];
00031 }
00032 }
00033 while (rangeLength--) {
00034 result[leftIndex++] = args[argsIndex++];
00035 }
00036 return result;
00037 }
00038
00039 module.exports = composeArgs;