• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * lodash 3.0.1 (Custom Build) <https://lodash.com/>
3 * Build: `lodash modern modularize exports="npm" -o ./`
4 * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
5 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
6 * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7 * Available under MIT license <https://lodash.com/license>
8 */
9
10/**
11 * A specialized version of `baseCallback` which only supports `this` binding
12 * and specifying the number of arguments to provide to `func`.
13 *
14 * @private
15 * @param {Function} func The function to bind.
16 * @param {*} thisArg The `this` binding of `func`.
17 * @param {number} [argCount] The number of arguments to provide to `func`.
18 * @returns {Function} Returns the callback.
19 */
20function bindCallback(func, thisArg, argCount) {
21  if (typeof func != 'function') {
22    return identity;
23  }
24  if (thisArg === undefined) {
25    return func;
26  }
27  switch (argCount) {
28    case 1: return function(value) {
29      return func.call(thisArg, value);
30    };
31    case 3: return function(value, index, collection) {
32      return func.call(thisArg, value, index, collection);
33    };
34    case 4: return function(accumulator, value, index, collection) {
35      return func.call(thisArg, accumulator, value, index, collection);
36    };
37    case 5: return function(value, other, key, object, source) {
38      return func.call(thisArg, value, other, key, object, source);
39    };
40  }
41  return function() {
42    return func.apply(thisArg, arguments);
43  };
44}
45
46/**
47 * This method returns the first argument provided to it.
48 *
49 * @static
50 * @memberOf _
51 * @category Utility
52 * @param {*} value Any value.
53 * @returns {*} Returns `value`.
54 * @example
55 *
56 * var object = { 'user': 'fred' };
57 *
58 * _.identity(object) === object;
59 * // => true
60 */
61function identity(value) {
62  return value;
63}
64
65module.exports = bindCallback;
66