time-to-botec

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

partialRight.js (1552B)


      1 var baseRest = require('./_baseRest'),
      2     createWrap = require('./_createWrap'),
      3     getHolder = require('./_getHolder'),
      4     replaceHolders = require('./_replaceHolders');
      5 
      6 /** Used to compose bitmasks for function metadata. */
      7 var WRAP_PARTIAL_RIGHT_FLAG = 64;
      8 
      9 /**
     10  * This method is like `_.partial` except that partially applied arguments
     11  * are appended to the arguments it receives.
     12  *
     13  * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
     14  * builds, may be used as a placeholder for partially applied arguments.
     15  *
     16  * **Note:** This method doesn't set the "length" property of partially
     17  * applied functions.
     18  *
     19  * @static
     20  * @memberOf _
     21  * @since 1.0.0
     22  * @category Function
     23  * @param {Function} func The function to partially apply arguments to.
     24  * @param {...*} [partials] The arguments to be partially applied.
     25  * @returns {Function} Returns the new partially applied function.
     26  * @example
     27  *
     28  * function greet(greeting, name) {
     29  *   return greeting + ' ' + name;
     30  * }
     31  *
     32  * var greetFred = _.partialRight(greet, 'fred');
     33  * greetFred('hi');
     34  * // => 'hi fred'
     35  *
     36  * // Partially applied with placeholders.
     37  * var sayHelloTo = _.partialRight(greet, 'hello', _);
     38  * sayHelloTo('fred');
     39  * // => 'hello fred'
     40  */
     41 var partialRight = baseRest(function(func, partials) {
     42   var holders = replaceHolders(partials, getHolder(partialRight));
     43   return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
     44 });
     45 
     46 // Assign default placeholders.
     47 partialRight.placeholder = {};
     48 
     49 module.exports = partialRight;