You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							61 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							61 lines
						
					
					
						
							1.6 KiB
						
					
					
				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;
 | 
						|
 |