mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-02 08:07:50 +00:00
Bump to v3.10.0.
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
define(['../internal/createWrapper', '../internal/isIterateeCall'], function(createWrapper, isIterateeCall) {
|
||||
|
||||
/** Used as a safe reference for `undefined` in pre-ES5 environments. */
|
||||
var undefined;
|
||||
|
||||
/** Used to compose bitmasks for wrapper metadata. */
|
||||
var ARY_FLAG = 128;
|
||||
|
||||
@@ -24,10 +27,10 @@ define(['../internal/createWrapper', '../internal/isIterateeCall'], function(cre
|
||||
*/
|
||||
function ary(func, n, guard) {
|
||||
if (guard && isIterateeCall(func, n, guard)) {
|
||||
n = null;
|
||||
n = undefined;
|
||||
}
|
||||
n = (func && n == null) ? func.length : nativeMax(+n || 0, 0);
|
||||
return createWrapper(func, ARY_FLAG, null, null, null, null, n);
|
||||
return createWrapper(func, ARY_FLAG, undefined, undefined, undefined, undefined, n);
|
||||
}
|
||||
|
||||
return ary;
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
define([], function() {
|
||||
|
||||
/** Used as a safe reference for `undefined` in pre-ES5 environments. */
|
||||
var undefined;
|
||||
|
||||
/** Used as the `TypeError` message for "Functions" methods. */
|
||||
var FUNC_ERROR_TEXT = 'Expected a function';
|
||||
|
||||
@@ -35,7 +38,7 @@ define([], function() {
|
||||
result = func.apply(this, arguments);
|
||||
}
|
||||
if (n <= 1) {
|
||||
func = null;
|
||||
func = undefined;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
@@ -92,9 +92,9 @@ define(['../lang/isObject', '../date/now'], function(isObject, now) {
|
||||
var leading = true;
|
||||
trailing = false;
|
||||
} else if (isObject(options)) {
|
||||
leading = options.leading;
|
||||
leading = !!options.leading;
|
||||
maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);
|
||||
trailing = 'trailing' in options ? options.trailing : trailing;
|
||||
trailing = 'trailing' in options ? !!options.trailing : trailing;
|
||||
}
|
||||
|
||||
function cancel() {
|
||||
@@ -104,41 +104,35 @@ define(['../lang/isObject', '../date/now'], function(isObject, now) {
|
||||
if (maxTimeoutId) {
|
||||
clearTimeout(maxTimeoutId);
|
||||
}
|
||||
lastCalled = 0;
|
||||
maxTimeoutId = timeoutId = trailingCall = undefined;
|
||||
}
|
||||
|
||||
function complete(isCalled, id) {
|
||||
if (id) {
|
||||
clearTimeout(id);
|
||||
}
|
||||
maxTimeoutId = timeoutId = trailingCall = undefined;
|
||||
if (isCalled) {
|
||||
lastCalled = now();
|
||||
result = func.apply(thisArg, args);
|
||||
if (!timeoutId && !maxTimeoutId) {
|
||||
args = thisArg = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function delayed() {
|
||||
var remaining = wait - (now() - stamp);
|
||||
if (remaining <= 0 || remaining > wait) {
|
||||
if (maxTimeoutId) {
|
||||
clearTimeout(maxTimeoutId);
|
||||
}
|
||||
var isCalled = trailingCall;
|
||||
maxTimeoutId = timeoutId = trailingCall = undefined;
|
||||
if (isCalled) {
|
||||
lastCalled = now();
|
||||
result = func.apply(thisArg, args);
|
||||
if (!timeoutId && !maxTimeoutId) {
|
||||
args = thisArg = null;
|
||||
}
|
||||
}
|
||||
complete(trailingCall, maxTimeoutId);
|
||||
} else {
|
||||
timeoutId = setTimeout(delayed, remaining);
|
||||
}
|
||||
}
|
||||
|
||||
function maxDelayed() {
|
||||
if (timeoutId) {
|
||||
clearTimeout(timeoutId);
|
||||
}
|
||||
maxTimeoutId = timeoutId = trailingCall = undefined;
|
||||
if (trailing || (maxWait !== wait)) {
|
||||
lastCalled = now();
|
||||
result = func.apply(thisArg, args);
|
||||
if (!timeoutId && !maxTimeoutId) {
|
||||
args = thisArg = null;
|
||||
}
|
||||
}
|
||||
complete(trailing, timeoutId);
|
||||
}
|
||||
|
||||
function debounced() {
|
||||
@@ -178,7 +172,7 @@ define(['../lang/isObject', '../date/now'], function(isObject, now) {
|
||||
result = func.apply(thisArg, args);
|
||||
}
|
||||
if (isCalled && !timeoutId && !maxTimeoutId) {
|
||||
args = thisArg = null;
|
||||
args = thisArg = undefined;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ define(['../internal/MapCache'], function(MapCache) {
|
||||
*
|
||||
* **Note:** The cache is exposed as the `cache` property on the memoized
|
||||
* function. Its creation may be customized by replacing the `_.memoize.Cache`
|
||||
* constructor with one whose instances implement the [`Map`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object)
|
||||
* constructor with one whose instances implement the [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)
|
||||
* method interface of `get`, `has`, and `set`.
|
||||
*
|
||||
* @static
|
||||
|
||||
56
function/modArgs.js
Normal file
56
function/modArgs.js
Normal file
@@ -0,0 +1,56 @@
|
||||
define(['../internal/arrayEvery', '../internal/baseFlatten', '../internal/baseIsFunction', './restParam'], function(arrayEvery, baseFlatten, baseIsFunction, restParam) {
|
||||
|
||||
/** Used as the `TypeError` message for "Functions" methods. */
|
||||
var FUNC_ERROR_TEXT = 'Expected a function';
|
||||
|
||||
/* Native method references for those with the same name as other `lodash` methods. */
|
||||
var nativeMin = Math.min;
|
||||
|
||||
/**
|
||||
* Creates a function that runs each argument through a corresponding
|
||||
* transform function.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @category Function
|
||||
* @param {Function} func The function to wrap.
|
||||
* @param {...(Function|Function[])} [transforms] The functions to transform
|
||||
* arguments, specified as individual functions or arrays of functions.
|
||||
* @returns {Function} Returns the new function.
|
||||
* @example
|
||||
*
|
||||
* function doubled(n) {
|
||||
* return n * 2;
|
||||
* }
|
||||
*
|
||||
* function square(n) {
|
||||
* return n * n;
|
||||
* }
|
||||
*
|
||||
* var modded = _.modArgs(function(x, y) {
|
||||
* return [x, y];
|
||||
* }, square, doubled);
|
||||
*
|
||||
* modded(1, 2);
|
||||
* // => [1, 4]
|
||||
*
|
||||
* modded(5, 10);
|
||||
* // => [25, 20]
|
||||
*/
|
||||
var modArgs = restParam(function(func, transforms) {
|
||||
transforms = baseFlatten(transforms);
|
||||
if (typeof func != 'function' || !arrayEvery(transforms, baseIsFunction)) {
|
||||
throw new TypeError(FUNC_ERROR_TEXT);
|
||||
}
|
||||
var length = transforms.length;
|
||||
return restParam(function(args) {
|
||||
var index = nativeMin(args.length, length);
|
||||
while (index--) {
|
||||
args[index] = transforms[index](args[index]);
|
||||
}
|
||||
return func.apply(this, args);
|
||||
});
|
||||
});
|
||||
|
||||
return modArgs;
|
||||
});
|
||||
@@ -1,5 +1,8 @@
|
||||
define(['../internal/baseFlatten', '../internal/createWrapper', './restParam'], function(baseFlatten, createWrapper, restParam) {
|
||||
|
||||
/** Used as a safe reference for `undefined` in pre-ES5 environments. */
|
||||
var undefined;
|
||||
|
||||
/** Used to compose bitmasks for wrapper metadata. */
|
||||
var REARG_FLAG = 256;
|
||||
|
||||
@@ -32,7 +35,7 @@ define(['../internal/baseFlatten', '../internal/createWrapper', './restParam'],
|
||||
* // => [3, 6, 9]
|
||||
*/
|
||||
var rearg = restParam(function(func, indexes) {
|
||||
return createWrapper(func, REARG_FLAG, null, null, null, baseFlatten(indexes));
|
||||
return createWrapper(func, REARG_FLAG, undefined, undefined, undefined, baseFlatten(indexes));
|
||||
});
|
||||
|
||||
return rearg;
|
||||
|
||||
@@ -3,13 +3,6 @@ define(['./debounce', '../lang/isObject'], function(debounce, isObject) {
|
||||
/** Used as the `TypeError` message for "Functions" methods. */
|
||||
var FUNC_ERROR_TEXT = 'Expected a function';
|
||||
|
||||
/** Used as an internal `_.debounce` options object by `_.throttle`. */
|
||||
var debounceOptions = {
|
||||
'leading': false,
|
||||
'maxWait': 0,
|
||||
'trailing': false
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a throttled function that only invokes `func` at most once per
|
||||
* every `wait` milliseconds. The throttled function comes with a `cancel`
|
||||
@@ -62,10 +55,7 @@ define(['./debounce', '../lang/isObject'], function(debounce, isObject) {
|
||||
leading = 'leading' in options ? !!options.leading : leading;
|
||||
trailing = 'trailing' in options ? !!options.trailing : trailing;
|
||||
}
|
||||
debounceOptions.leading = leading;
|
||||
debounceOptions.maxWait = +wait;
|
||||
debounceOptions.trailing = trailing;
|
||||
return debounce(func, wait, debounceOptions);
|
||||
return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });
|
||||
}
|
||||
|
||||
return throttle;
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
define(['../internal/createWrapper', '../utility/identity'], function(createWrapper, identity) {
|
||||
|
||||
/** Used as a safe reference for `undefined` in pre-ES5 environments. */
|
||||
var undefined;
|
||||
|
||||
/** Used to compose bitmasks for wrapper metadata. */
|
||||
var PARTIAL_FLAG = 32;
|
||||
|
||||
@@ -26,7 +29,7 @@ define(['../internal/createWrapper', '../utility/identity'], function(createWrap
|
||||
*/
|
||||
function wrap(value, wrapper) {
|
||||
wrapper = wrapper == null ? identity : wrapper;
|
||||
return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []);
|
||||
return createWrapper(wrapper, PARTIAL_FLAG, undefined, [value], []);
|
||||
}
|
||||
|
||||
return wrap;
|
||||
|
||||
Reference in New Issue
Block a user