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