1 var apply = require(
'./_apply'),
2 arrayMap = require(
'./_arrayMap'),
3 baseFlatten = require(
'./_baseFlatten'),
4 baseIteratee = require(
'./_baseIteratee'),
5 baseRest = require(
'./_baseRest'),
6 baseUnary = require(
'./_baseUnary'),
7 castRest = require(
'./_castRest'),
8 isArray = require(
'./isArray');
11 var nativeMin = Math.min;
44 var overArgs = castRest(
function(func, transforms) {
45 transforms = (transforms.length == 1 && isArray(transforms[0]))
46 ? arrayMap(transforms[0], baseUnary(baseIteratee))
47 : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee));
49 var funcsLength = transforms.length;
50 return baseRest(
function(args) {
52 length = nativeMin(args.length, funcsLength);
54 while (++index < length) {
55 args[index] = transforms[index].call(
this, args[index]);
57 return apply(func,
this, args);
61 module.exports = overArgs;