| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | var apply = require('./_apply'),    arrayMap = require('./_arrayMap'),    baseFlatten = require('./_baseFlatten'),    baseIteratee = require('./_baseIteratee'),    baseRest = require('./_baseRest'),    baseUnary = require('./_baseUnary'),    castRest = require('./_castRest'),    isArray = require('./isArray');/* Built-in method references for those with the same name as other `lodash` methods. */var nativeMin = Math.min;/** * Creates a function that invokes `func` with its arguments transformed. * * @static * @since 4.0.0 * @memberOf _ * @category Function * @param {Function} func The function to wrap. * @param {...(Function|Function[])} [transforms=[_.identity]] *  The argument transforms. * @returns {Function} Returns the new function. * @example * * function doubled(n) { *   return n * 2; * } * * function square(n) { *   return n * n; * } * * var func = _.overArgs(function(x, y) { *   return [x, y]; * }, [square, doubled]); * * func(9, 3); * // => [81, 6] * * func(10, 5); * // => [100, 10] */var overArgs = castRest(function(func, transforms) {  transforms = (transforms.length == 1 && isArray(transforms[0]))    ? arrayMap(transforms[0], baseUnary(baseIteratee))    : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee));  var funcsLength = transforms.length;  return baseRest(function(args) {    var index = -1,        length = nativeMin(args.length, funcsLength);    while (++index < length) {      args[index] = transforms[index].call(this, args[index]);    }    return apply(func, this, args);  });});module.exports = overArgs;
 |