UNPKG

1.55 kBJavaScriptView Raw
1var baseRest = require('./_baseRest'),
2 createWrap = require('./_createWrap'),
3 getHolder = require('./_getHolder'),
4 replaceHolders = require('./_replaceHolders');
5
6/** Used to compose bitmasks for function metadata. */
7var 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 */
41var 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.
47partialRight.placeholder = {};
48
49module.exports = partialRight;