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.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							1.6 KiB
						
					
					
				var createWrap = require('./_createWrap'); | 
						|
 | 
						|
/** Used to compose bitmasks for function metadata. */ | 
						|
var WRAP_CURRY_FLAG = 8; | 
						|
 | 
						|
/** | 
						|
 * Creates a function that accepts arguments of `func` and either invokes | 
						|
 * `func` returning its result, if at least `arity` number of arguments have | 
						|
 * been provided, or returns a function that accepts the remaining `func` | 
						|
 * arguments, and so on. The arity of `func` may be specified if `func.length` | 
						|
 * is not sufficient. | 
						|
 * | 
						|
 * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, | 
						|
 * may be used as a placeholder for provided arguments. | 
						|
 * | 
						|
 * **Note:** This method doesn't set the "length" property of curried functions. | 
						|
 * | 
						|
 * @static | 
						|
 * @memberOf _ | 
						|
 * @since 2.0.0 | 
						|
 * @category Function | 
						|
 * @param {Function} func The function to curry. | 
						|
 * @param {number} [arity=func.length] The arity of `func`. | 
						|
 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. | 
						|
 * @returns {Function} Returns the new curried function. | 
						|
 * @example | 
						|
 * | 
						|
 * var abc = function(a, b, c) { | 
						|
 *   return [a, b, c]; | 
						|
 * }; | 
						|
 * | 
						|
 * var curried = _.curry(abc); | 
						|
 * | 
						|
 * curried(1)(2)(3); | 
						|
 * // => [1, 2, 3] | 
						|
 * | 
						|
 * curried(1, 2)(3); | 
						|
 * // => [1, 2, 3] | 
						|
 * | 
						|
 * curried(1, 2, 3); | 
						|
 * // => [1, 2, 3] | 
						|
 * | 
						|
 * // Curried with placeholders. | 
						|
 * curried(1)(_, 3)(2); | 
						|
 * // => [1, 2, 3] | 
						|
 */ | 
						|
function curry(func, arity, guard) { | 
						|
  arity = guard ? undefined : arity; | 
						|
  var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); | 
						|
  result.placeholder = curry.placeholder; | 
						|
  return result; | 
						|
} | 
						|
 | 
						|
// Assign default placeholders. | 
						|
curry.placeholder = {}; | 
						|
 | 
						|
module.exports = curry;
 | 
						|
 |