mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-01-29 14:37:49 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5f4043617 | ||
|
|
891d0482c6 |
@@ -1,4 +1,4 @@
|
||||
# lodash-es v3.0.0
|
||||
# lodash-es v3.1.0
|
||||
|
||||
The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [ES](https://people.mozilla.org/~jorendorff/es6-draft.html) modules.
|
||||
|
||||
@@ -6,3 +6,5 @@ Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
|
||||
```bash
|
||||
$ lodash modularize modern exports=es -o ./
|
||||
```
|
||||
|
||||
See the [package source](https://github.com/lodash/lodash/tree/3.1.0-es) for more details.
|
||||
|
||||
@@ -57,14 +57,14 @@ var hasOwnProperty = objectProto.hasOwnProperty;
|
||||
* `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`,
|
||||
* `identity`, `includes`, `indexOf`, `isArguments`, `isArray`, `isBoolean`,
|
||||
* `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, `isFinite`,
|
||||
* `isFunction`, `isMatch` , `isNative`, `isNaN`, `isNull`, `isNumber`,
|
||||
* `isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`,
|
||||
* `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`,
|
||||
* `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`,
|
||||
* `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`,
|
||||
* `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`,
|
||||
* `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`,
|
||||
* `startsWith`, `template`, `trim`, `trimLeft`, `trimRight`, `trunc`,
|
||||
* `unescape`, `uniqueId`, `value`, and `words`
|
||||
* `startCase`, `startsWith`, `template`, `trim`, `trimLeft`, `trimRight`,
|
||||
* `trunc`, `unescape`, `uniqueId`, `value`, and `words`
|
||||
*
|
||||
* The wrapper function `sample` will return a wrapped value when `n` is provided,
|
||||
* otherwise an unwrapped value is returned.
|
||||
|
||||
@@ -25,6 +25,9 @@ import thru from './thru';
|
||||
function wrapperReverse() {
|
||||
var value = this.__wrapped__;
|
||||
if (value instanceof LazyWrapper) {
|
||||
if (this.__actions__.length) {
|
||||
value = new LazyWrapper(this);
|
||||
}
|
||||
return new LodashWrapper(value.reverse());
|
||||
}
|
||||
return this.thru(function(value) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import baseMatches from '../internal/baseMatches';
|
||||
import find from './find';
|
||||
import matches from '../utility/matches';
|
||||
|
||||
/**
|
||||
* Performs a deep comparison between each element in `collection` and the
|
||||
@@ -26,7 +26,7 @@ import matches from '../utility/matches';
|
||||
* // => 'fred'
|
||||
*/
|
||||
function findWhere(collection, source) {
|
||||
return find(collection, matches(source));
|
||||
return find(collection, baseMatches(source));
|
||||
}
|
||||
|
||||
export default findWhere;
|
||||
|
||||
@@ -23,7 +23,7 @@ import isArray from '../lang/isArray';
|
||||
* @returns {Array|Object|string} Returns `collection`.
|
||||
* @example
|
||||
*
|
||||
* _([1, 2, 3]).forEach(function(n) { console.log(n); });
|
||||
* _([1, 2, 3]).forEach(function(n) { console.log(n); }).value();
|
||||
* // => logs each value from left to right and returns the array
|
||||
*
|
||||
* _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, function(n, key) { console.log(n, key); });
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import baseProperty from '../internal/baseProperty';
|
||||
import map from './map';
|
||||
import property from '../utility/property';
|
||||
|
||||
/**
|
||||
* Gets the value of `key` from all elements in `collection`.
|
||||
@@ -25,7 +25,7 @@ import property from '../utility/property';
|
||||
* // => [36, 40] (iteration order is not guaranteed)
|
||||
*/
|
||||
function pluck(collection, key) {
|
||||
return map(collection, property(key));
|
||||
return map(collection, baseProperty(key + ''));
|
||||
}
|
||||
|
||||
export default pluck;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import baseMatches from '../internal/baseMatches';
|
||||
import filter from './filter';
|
||||
import matches from '../utility/matches';
|
||||
|
||||
/**
|
||||
* Performs a deep comparison between each element in `collection` and the
|
||||
@@ -29,7 +29,7 @@ import matches from '../utility/matches';
|
||||
* // => ['barney', 'fred']
|
||||
*/
|
||||
function where(collection, source) {
|
||||
return filter(collection, matches(source));
|
||||
return filter(collection, baseMatches(source));
|
||||
}
|
||||
|
||||
export default where;
|
||||
|
||||
@@ -35,7 +35,7 @@ var FUNC_ERROR_TEXT = 'Expected a function';
|
||||
* // => 'FRED'
|
||||
*
|
||||
* // modifying the result cache
|
||||
* upperCase.cache.set('fred, 'BARNEY');
|
||||
* upperCase.cache.set('fred', 'BARNEY');
|
||||
* upperCase('fred');
|
||||
* // => 'BARNEY'
|
||||
*
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import baseMatches from './baseMatches';
|
||||
import baseProperty from './baseProperty';
|
||||
import baseToString from './baseToString';
|
||||
import bindCallback from './bindCallback';
|
||||
import identity from '../utility/identity';
|
||||
import isBindable from './isBindable';
|
||||
@@ -27,8 +26,8 @@ function baseCallback(func, thisArg, argCount) {
|
||||
}
|
||||
// Handle "_.property" and "_.matches" style callback shorthands.
|
||||
return type == 'object'
|
||||
? baseMatches(func, !argCount)
|
||||
: baseProperty(argCount ? baseToString(func) : func);
|
||||
? baseMatches(func)
|
||||
: baseProperty(func + '');
|
||||
}
|
||||
|
||||
export default baseCallback;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import baseClone from './baseClone';
|
||||
import baseIsMatch from './baseIsMatch';
|
||||
import isStrictComparable from './isStrictComparable';
|
||||
import keys from '../object/keys';
|
||||
@@ -15,10 +14,9 @@ var hasOwnProperty = objectProto.hasOwnProperty;
|
||||
*
|
||||
* @private
|
||||
* @param {Object} source The object of property values to match.
|
||||
* @param {boolean} [isCloned] Specify cloning the source object.
|
||||
* @returns {Function} Returns the new function.
|
||||
*/
|
||||
function baseMatches(source, isCloned) {
|
||||
function baseMatches(source) {
|
||||
var props = keys(source),
|
||||
length = props.length;
|
||||
|
||||
@@ -32,9 +30,6 @@ function baseMatches(source, isCloned) {
|
||||
};
|
||||
}
|
||||
}
|
||||
if (isCloned) {
|
||||
source = baseClone(source, true);
|
||||
}
|
||||
var values = Array(length),
|
||||
strictCompareFlags = Array(length);
|
||||
|
||||
|
||||
@@ -47,6 +47,9 @@ function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stack
|
||||
? toPlainObject(value)
|
||||
: (isPlainObject(value) ? value : {});
|
||||
}
|
||||
else {
|
||||
isCommon = false;
|
||||
}
|
||||
}
|
||||
// Add the source value to the stack of traversed objects and associate
|
||||
// it with its merged value.
|
||||
|
||||
@@ -19,7 +19,8 @@ function baseSlice(array, start, end) {
|
||||
if (end < 0) {
|
||||
end += length;
|
||||
}
|
||||
length = start > end ? 0 : (end - start);
|
||||
length = start > end ? 0 : (end - start) >>> 0;
|
||||
start >>>= 0;
|
||||
|
||||
var result = Array(length);
|
||||
while (++index < length) {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import baseToString from './baseToString';
|
||||
import repeat from '../string/repeat';
|
||||
import root from './root';
|
||||
|
||||
@@ -27,7 +26,7 @@ function createPad(string, length, chars) {
|
||||
return '';
|
||||
}
|
||||
var padLength = length - strLength;
|
||||
chars = chars == null ? ' ' : baseToString(chars);
|
||||
chars = chars == null ? ' ' : (chars + '');
|
||||
return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import baseToString from './baseToString';
|
||||
|
||||
/** `Object#toString` result references. */
|
||||
var boolTag = '[object Boolean]',
|
||||
dateTag = '[object Date]',
|
||||
@@ -43,7 +41,7 @@ function equalByTag(object, other, tag) {
|
||||
case stringTag:
|
||||
// Coerce regexes to strings and treat strings primitives and string
|
||||
// objects as equal. See https://es5.github.io/#x15.10.6.4 for more details.
|
||||
return object == baseToString(other);
|
||||
return object == (other + '');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Used as the maximum length of an array-like value.
|
||||
* See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
|
||||
* See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
|
||||
* for more details.
|
||||
*/
|
||||
var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
|
||||
|
||||
@@ -20,7 +20,7 @@ function isIterateeCall(value, index, object) {
|
||||
var length = object.length,
|
||||
prereq = isLength(length) && isIndex(index, length);
|
||||
} else {
|
||||
prereq = type == 'string' && index in value;
|
||||
prereq = type == 'string' && index in object;
|
||||
}
|
||||
return prereq && object[index] === value;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Used as the maximum length of an array-like value.
|
||||
* See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
|
||||
* See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
|
||||
* for more details.
|
||||
*/
|
||||
var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
|
||||
@@ -8,6 +8,10 @@ var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;
|
||||
/**
|
||||
* Checks if `value` is a valid array-like length.
|
||||
*
|
||||
* **Note:** This function is based on ES `ToLength`. See the
|
||||
* [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)
|
||||
* for more details.
|
||||
*
|
||||
* @private
|
||||
* @param {*} value The value to check.
|
||||
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
|
||||
|
||||
@@ -9,11 +9,14 @@ import LazyWrapper from './LazyWrapper';
|
||||
* @returns {Object} Returns the new reversed `LazyWrapper` object.
|
||||
*/
|
||||
function lazyReverse() {
|
||||
var filtered = this.filtered,
|
||||
result = filtered ? new LazyWrapper(this) : this.clone();
|
||||
|
||||
result.dir = this.dir * -1;
|
||||
result.filtered = filtered;
|
||||
if (this.filtered) {
|
||||
var result = new LazyWrapper(this);
|
||||
result.dir = -1;
|
||||
result.filtered = true;
|
||||
} else {
|
||||
result = this.clone();
|
||||
result.dir *= -1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,12 +24,12 @@ function lazyValue() {
|
||||
}
|
||||
var dir = this.dir,
|
||||
isRight = dir < 0,
|
||||
length = array.length,
|
||||
view = getView(0, length, this.views),
|
||||
view = getView(0, array.length, this.views),
|
||||
start = view.start,
|
||||
end = view.end,
|
||||
length = end - start,
|
||||
dropCount = this.dropCount,
|
||||
takeCount = nativeMin(end - start, this.takeCount - dropCount),
|
||||
takeCount = nativeMin(length, this.takeCount - dropCount),
|
||||
index = isRight ? end : start - 1,
|
||||
iteratees = this.iteratees,
|
||||
iterLength = iteratees ? iteratees.length : 0,
|
||||
@@ -65,7 +65,7 @@ function lazyValue() {
|
||||
result[resIndex++] = value;
|
||||
}
|
||||
}
|
||||
return isRight ? result.reverse() : result;
|
||||
return result;
|
||||
}
|
||||
|
||||
export default lazyValue;
|
||||
|
||||
24
lodash.js
24
lodash.js
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @license
|
||||
* lodash 3.0.0 (Custom Build) <https://lodash.com/>
|
||||
* lodash 3.1.0 (Custom Build) <https://lodash.com/>
|
||||
* Build: `lodash modularize modern exports="es" -o ./`
|
||||
* Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
|
||||
* Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
|
||||
@@ -23,6 +23,8 @@ import arrayEach from './internal/arrayEach';
|
||||
import baseCallback from './internal/baseCallback';
|
||||
import baseForOwn from './internal/baseForOwn';
|
||||
import baseFunctions from './internal/baseFunctions';
|
||||
import baseMatches from './internal/baseMatches';
|
||||
import baseProperty from './internal/baseProperty';
|
||||
import isArray from './lang/isArray';
|
||||
import isObject from './lang/isObject';
|
||||
import keys from './object/keys';
|
||||
@@ -30,14 +32,12 @@ import lazyClone from './internal/lazyClone';
|
||||
import lazyReverse from './internal/lazyReverse';
|
||||
import lazyValue from './internal/lazyValue';
|
||||
import lodash from './chain/lodash';
|
||||
import matches from './utility/matches';
|
||||
import _mixin from './utility/mixin';
|
||||
import property from './utility/property';
|
||||
import support from './support';
|
||||
import thru from './chain/thru';
|
||||
|
||||
/** Used as the semantic version number. */
|
||||
var VERSION = '3.0.0';
|
||||
var VERSION = '3.1.0';
|
||||
|
||||
/** Used to indicate the type of lazy iteratees. */
|
||||
var LAZY_FILTER_FLAG = 0,
|
||||
@@ -121,7 +121,7 @@ lodash.keys = keys;
|
||||
lodash.keysIn = object.keysIn;
|
||||
lodash.map = collection.map;
|
||||
lodash.mapValues = object.mapValues;
|
||||
lodash.matches = matches;
|
||||
lodash.matches = utility.matches;
|
||||
lodash.memoize = func.memoize;
|
||||
lodash.merge = object.merge;
|
||||
lodash.mixin = mixin;
|
||||
@@ -134,7 +134,7 @@ lodash.partialRight = func.partialRight;
|
||||
lodash.partition = collection.partition;
|
||||
lodash.pick = object.pick;
|
||||
lodash.pluck = collection.pluck;
|
||||
lodash.property = property;
|
||||
lodash.property = utility.property;
|
||||
lodash.propertyOf = utility.propertyOf;
|
||||
lodash.pull = array.pull;
|
||||
lodash.pullAt = array.pullAt;
|
||||
@@ -252,6 +252,7 @@ lodash.snakeCase = string.snakeCase;
|
||||
lodash.some = collection.some;
|
||||
lodash.sortedIndex = array.sortedIndex;
|
||||
lodash.sortedLastIndex = array.sortedLastIndex;
|
||||
lodash.startCase = string.startCase;
|
||||
lodash.startsWith = string.startsWith;
|
||||
lodash.template = string.template;
|
||||
lodash.trim = string.trim;
|
||||
@@ -376,10 +377,10 @@ arrayEach(['initial', 'rest'], function(methodName, index) {
|
||||
// Add `LazyWrapper` methods for `_.pluck` and `_.where`.
|
||||
arrayEach(['pluck', 'where'], function(methodName, index) {
|
||||
var operationName = index ? 'filter' : 'map',
|
||||
createCallback = index ? matches : property;
|
||||
createCallback = index ? baseMatches : baseProperty;
|
||||
|
||||
LazyWrapper.prototype[methodName] = function(value) {
|
||||
return this[operationName](createCallback(value));
|
||||
return this[operationName](createCallback(index ? value : (value + '')));
|
||||
};
|
||||
});
|
||||
|
||||
@@ -416,7 +417,8 @@ LazyWrapper.prototype.slice = function(start, end) {
|
||||
|
||||
// Add `LazyWrapper` methods to `lodash.prototype`.
|
||||
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
|
||||
var retUnwrapped = /^(?:first|last)$/.test(methodName);
|
||||
var lodashFunc = lodash[methodName],
|
||||
retUnwrapped = /^(?:first|last)$/.test(methodName);
|
||||
|
||||
lodash.prototype[methodName] = function() {
|
||||
var value = this.__wrapped__,
|
||||
@@ -429,12 +431,12 @@ baseForOwn(LazyWrapper.prototype, function(func, methodName) {
|
||||
if (retUnwrapped && !chainAll) {
|
||||
return onlyLazy
|
||||
? func.call(value)
|
||||
: lodash[methodName](this.value());
|
||||
: lodashFunc.call(lodash, this.value());
|
||||
}
|
||||
var interceptor = function(value) {
|
||||
var otherArgs = [value];
|
||||
push.apply(otherArgs, args);
|
||||
return lodash[methodName].apply(lodash, otherArgs);
|
||||
return lodashFunc.apply(lodash, otherArgs);
|
||||
};
|
||||
if (isLazy || isArray(value)) {
|
||||
var wrapper = onlyLazy ? value : new LazyWrapper(this),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lodash-es",
|
||||
"version": "3.0.0",
|
||||
"version": "3.1.0",
|
||||
"description": "The modern build of lodash exported as ES modules.",
|
||||
"homepage": "https://lodash.com/custom-builds",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -11,6 +11,7 @@ import padRight from './string/padRight';
|
||||
import parseInt from './string/parseInt';
|
||||
import repeat from './string/repeat';
|
||||
import snakeCase from './string/snakeCase';
|
||||
import startCase from './string/startCase';
|
||||
import startsWith from './string/startsWith';
|
||||
import template from './string/template';
|
||||
import templateSettings from './string/templateSettings';
|
||||
@@ -35,6 +36,7 @@ export default {
|
||||
'parseInt': parseInt,
|
||||
'repeat': repeat,
|
||||
'snakeCase': snakeCase,
|
||||
'startCase': startCase,
|
||||
'startsWith': startsWith,
|
||||
'template': template,
|
||||
'templateSettings': templateSettings,
|
||||
|
||||
@@ -22,7 +22,7 @@ import createCompounder from '../internal/createCompounder';
|
||||
*/
|
||||
var camelCase = createCompounder(function(result, word, index) {
|
||||
word = word.toLowerCase();
|
||||
return index ? (result + word.charAt(0).toUpperCase() + word.slice(1)) : word;
|
||||
return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word);
|
||||
});
|
||||
|
||||
export default camelCase;
|
||||
|
||||
@@ -2,7 +2,7 @@ import createCompounder from '../internal/createCompounder';
|
||||
|
||||
/**
|
||||
* Converts `string` to kebab case (a.k.a. spinal case).
|
||||
* See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Computers) for
|
||||
* See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for
|
||||
* more details.
|
||||
*
|
||||
* @static
|
||||
|
||||
@@ -14,10 +14,10 @@ import createCompounder from '../internal/createCompounder';
|
||||
* _.snakeCase('Foo Bar');
|
||||
* // => 'foo_bar'
|
||||
*
|
||||
* _.snakeCase('--foo-bar');
|
||||
* _.snakeCase('fooBar');
|
||||
* // => 'foo_bar'
|
||||
*
|
||||
* _.snakeCase('fooBar');
|
||||
* _.snakeCase('--foo-bar');
|
||||
* // => 'foo_bar'
|
||||
*/
|
||||
var snakeCase = createCompounder(function(result, word, index) {
|
||||
|
||||
28
string/startCase.js
Normal file
28
string/startCase.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import createCompounder from '../internal/createCompounder';
|
||||
|
||||
/**
|
||||
* Converts `string` to start case.
|
||||
* See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage)
|
||||
* for more details.
|
||||
*
|
||||
* @static
|
||||
* @memberOf _
|
||||
* @category String
|
||||
* @param {string} [string=''] The string to convert.
|
||||
* @returns {string} Returns the start cased string.
|
||||
* @example
|
||||
*
|
||||
* _.startCase('--foo-bar');
|
||||
* // => 'Foo Bar'
|
||||
*
|
||||
* _.startCase('fooBar');
|
||||
* // => 'Foo Bar'
|
||||
*
|
||||
* _.startCase('__foo_bar__');
|
||||
* // => 'Foo Bar'
|
||||
*/
|
||||
var startCase = createCompounder(function(result, word, index) {
|
||||
return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1));
|
||||
});
|
||||
|
||||
export default startCase;
|
||||
@@ -35,7 +35,7 @@ function trim(string, chars, guard) {
|
||||
if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
|
||||
return string.slice(trimmedLeftIndex(string), trimmedRightIndex(string) + 1);
|
||||
}
|
||||
chars = baseToString(chars);
|
||||
chars = (chars + '');
|
||||
return string.slice(charsLeftIndex(string, chars), charsRightIndex(string, chars) + 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ function trimLeft(string, chars, guard) {
|
||||
if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
|
||||
return string.slice(trimmedLeftIndex(string))
|
||||
}
|
||||
return string.slice(charsLeftIndex(string, baseToString(chars)));
|
||||
return string.slice(charsLeftIndex(string, (chars + '')));
|
||||
}
|
||||
|
||||
export default trimLeft;
|
||||
|
||||
@@ -30,7 +30,7 @@ function trimRight(string, chars, guard) {
|
||||
if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
|
||||
return string.slice(0, trimmedRightIndex(string) + 1)
|
||||
}
|
||||
return string.slice(0, charsRightIndex(string, baseToString(chars)) + 1);
|
||||
return string.slice(0, charsRightIndex(string, (chars + '')) + 1);
|
||||
}
|
||||
|
||||
export default trimRight;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import baseCallback from '../internal/baseCallback';
|
||||
import isIterateeCall from '../internal/isIterateeCall';
|
||||
import isObjectLike from '../internal/isObjectLike';
|
||||
import matches from './matches';
|
||||
|
||||
/**
|
||||
* Creates a function bound to an optional `thisArg`. If `func` is a property
|
||||
@@ -40,7 +42,9 @@ function callback(func, thisArg, guard) {
|
||||
if (guard && isIterateeCall(func, thisArg, guard)) {
|
||||
thisArg = null;
|
||||
}
|
||||
return baseCallback(func, thisArg);
|
||||
return isObjectLike(func)
|
||||
? matches(func)
|
||||
: baseCallback(func, thisArg);
|
||||
}
|
||||
|
||||
export default callback;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import baseClone from '../internal/baseClone';
|
||||
import baseMatches from '../internal/baseMatches';
|
||||
|
||||
/**
|
||||
@@ -26,7 +27,7 @@ import baseMatches from '../internal/baseMatches';
|
||||
* // => { 'user': 'barney', 'age': 36 }
|
||||
*/
|
||||
function matches(source) {
|
||||
return baseMatches(source, true);
|
||||
return baseMatches(baseClone(source, true));
|
||||
}
|
||||
|
||||
export default matches;
|
||||
|
||||
Reference in New Issue
Block a user