mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.0 KiB
36 lines
1.0 KiB
10 years ago
|
var baseMatches = require('./baseMatches'),
|
||
|
baseMatchesProperty = require('./baseMatchesProperty'),
|
||
|
bindCallback = require('./bindCallback'),
|
||
|
identity = require('../utility/identity'),
|
||
|
property = require('../utility/property');
|
||
|
|
||
|
/**
|
||
|
* The base implementation of `_.callback` which supports specifying the
|
||
|
* number of arguments to provide to `func`.
|
||
|
*
|
||
|
* @private
|
||
|
* @param {*} [func=_.identity] The value to convert to a callback.
|
||
|
* @param {*} [thisArg] The `this` binding of `func`.
|
||
|
* @param {number} [argCount] The number of arguments to provide to `func`.
|
||
|
* @returns {Function} Returns the callback.
|
||
|
*/
|
||
|
function baseCallback(func, thisArg, argCount) {
|
||
|
var type = typeof func;
|
||
|
if (type == 'function') {
|
||
|
return thisArg === undefined
|
||
|
? func
|
||
|
: bindCallback(func, thisArg, argCount);
|
||
|
}
|
||
|
if (func == null) {
|
||
|
return identity;
|
||
|
}
|
||
|
if (type == 'object') {
|
||
|
return baseMatches(func);
|
||
|
}
|
||
|
return thisArg === undefined
|
||
|
? property(func)
|
||
|
: baseMatchesProperty(func, thisArg);
|
||
|
}
|
||
|
|
||
|
module.exports = baseCallback;
|