curryRight.js (1499B)
1 var createWrap = require('./_createWrap'); 2 3 /** Used to compose bitmasks for function metadata. */ 4 var WRAP_CURRY_RIGHT_FLAG = 16; 5 6 /** 7 * This method is like `_.curry` except that arguments are applied to `func` 8 * in the manner of `_.partialRight` instead of `_.partial`. 9 * 10 * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic 11 * builds, may be used as a placeholder for provided arguments. 12 * 13 * **Note:** This method doesn't set the "length" property of curried functions. 14 * 15 * @static 16 * @memberOf _ 17 * @since 3.0.0 18 * @category Function 19 * @param {Function} func The function to curry. 20 * @param {number} [arity=func.length] The arity of `func`. 21 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 22 * @returns {Function} Returns the new curried function. 23 * @example 24 * 25 * var abc = function(a, b, c) { 26 * return [a, b, c]; 27 * }; 28 * 29 * var curried = _.curryRight(abc); 30 * 31 * curried(3)(2)(1); 32 * // => [1, 2, 3] 33 * 34 * curried(2, 3)(1); 35 * // => [1, 2, 3] 36 * 37 * curried(1, 2, 3); 38 * // => [1, 2, 3] 39 * 40 * // Curried with placeholders. 41 * curried(3)(1, _)(2); 42 * // => [1, 2, 3] 43 */ 44 function curryRight(func, arity, guard) { 45 arity = guard ? undefined : arity; 46 var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); 47 result.placeholder = curryRight.placeholder; 48 return result; 49 } 50 51 // Assign default placeholders. 52 curryRight.placeholder = {}; 53 54 module.exports = curryRight;