time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

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;