lodash-rails 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -4
- data/lib/lodash/rails/version.rb +1 -1
- data/vendor/assets/javascripts/lodash.js +642 -222
- data/vendor/assets/javascripts/lodash.min.js +81 -78
- metadata +4 -6
- data/vendor/assets/javascripts/lodash.compat.js +0 -11061
- data/vendor/assets/javascripts/lodash.compat.min.js +0 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65466937463572ed6cc01088daa13ada4dd3c6ae
|
4
|
+
data.tar.gz: 3371d3bfc449a68a53034027fed13bbaa4af0c07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ab1afec36e5853e710330452ed00db00f03eb119fb50ce8064ff8ae81871cd092dc2770ef39838571b7ec515fe473ca12380b9c53c9fc2ef72d1eb369248a45
|
7
|
+
data.tar.gz: 5171e281f3b0616ddce94dc6fe38e67460c609a667165148bdd11b73d49378c3c66c6d7bc88a982da77a8e80f5f1f7675ea374f2087c38aed21277e288f36b49
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# lodash-rails
|
2
2
|
|
3
|
-
[
|
3
|
+
[lodash](http://lodash.com/) for the Rails asset pipeline.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,11 +18,9 @@ Add the necessary library to `app/assets/javascripts/application.js`:
|
|
18
18
|
|
19
19
|
## What's included?
|
20
20
|
|
21
|
-
|
21
|
+
lodash 3.2.0:
|
22
22
|
|
23
23
|
* lodash.js
|
24
24
|
* lodash.min.js
|
25
|
-
* lodash.compat.js
|
26
|
-
* lodash.compat.min.js
|
27
25
|
|
28
26
|
Copyright Richard Hubers, released under the MIT License.
|
data/lib/lodash/rails/version.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
2
|
* @license
|
3
|
-
* lodash 3.
|
3
|
+
* lodash 3.2.0 (Custom Build) <https://lodash.com/>
|
4
4
|
* Build: `lodash modern -o ./lodash.js`
|
5
5
|
* Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
|
6
6
|
* Based on Underscore.js 1.7.0 <http://underscorejs.org/LICENSE>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
var undefined;
|
14
14
|
|
15
15
|
/** Used as the semantic version number. */
|
16
|
-
var VERSION = '3.
|
16
|
+
var VERSION = '3.2.0';
|
17
17
|
|
18
18
|
/** Used to compose bitmasks for wrapper metadata. */
|
19
19
|
var BIND_FLAG = 1,
|
@@ -728,7 +728,6 @@
|
|
728
728
|
setTimeout = context.setTimeout,
|
729
729
|
splice = arrayProto.splice,
|
730
730
|
Uint8Array = isNative(Uint8Array = context.Uint8Array) && Uint8Array,
|
731
|
-
unshift = arrayProto.unshift,
|
732
731
|
WeakMap = isNative(WeakMap = context.WeakMap) && WeakMap;
|
733
732
|
|
734
733
|
/** Used to clone array buffers. */
|
@@ -780,7 +779,7 @@
|
|
780
779
|
/*------------------------------------------------------------------------*/
|
781
780
|
|
782
781
|
/**
|
783
|
-
* Creates a `lodash` object which wraps `value` to enable
|
782
|
+
* Creates a `lodash` object which wraps `value` to enable implicit chaining.
|
784
783
|
* Methods that operate on and return arrays, collections, and functions can
|
785
784
|
* be chained together. Methods that return a boolean or single value will
|
786
785
|
* automatically end the chain returning the unwrapped value. Explicit chaining
|
@@ -799,29 +798,31 @@
|
|
799
798
|
* `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, `splice`,
|
800
799
|
* and `unshift`
|
801
800
|
*
|
802
|
-
* The wrapper
|
803
|
-
* `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
|
804
|
-
* `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
|
805
|
-
* `take`, `takeRight`, `takeRightWhile`, `takeWhile`,
|
801
|
+
* The wrapper methods that support shortcut fusion are:
|
802
|
+
* `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`,
|
803
|
+
* `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`,
|
804
|
+
* `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`,
|
805
|
+
* and `where`
|
806
806
|
*
|
807
|
-
* The chainable wrapper
|
807
|
+
* The chainable wrapper methods are:
|
808
808
|
* `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`,
|
809
|
-
* `callback`, `chain`, `chunk`, `compact`, `concat`, `constant`,
|
810
|
-
* `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
|
811
|
-
* `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `
|
812
|
-
* `
|
813
|
-
* `
|
814
|
-
* `
|
815
|
-
* `
|
816
|
-
* `
|
817
|
-
* `
|
818
|
-
* `
|
819
|
-
* `
|
820
|
-
* `
|
821
|
-
* `
|
822
|
-
* `
|
823
|
-
*
|
824
|
-
*
|
809
|
+
* `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`,
|
810
|
+
* `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`,
|
811
|
+
* `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`,
|
812
|
+
* `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`,
|
813
|
+
* `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`,
|
814
|
+
* `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`,
|
815
|
+
* `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`, `merge`,
|
816
|
+
* `mixin`, `negate`, `noop`, `omit`, `once`, `pairs`, `partial`, `partialRight`,
|
817
|
+
* `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`,
|
818
|
+
* `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`,
|
819
|
+
* `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `splice`, `spread`,
|
820
|
+
* `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, `throttle`,
|
821
|
+
* `thru`, `times`, `toArray`, `toPlainObject`, `transform`, `union`, `uniq`,
|
822
|
+
* `unshift`, `unzip`, `values`, `valuesIn`, `where`, `without`, `wrap`, `xor`,
|
823
|
+
* `zip`, and `zipObject`
|
824
|
+
*
|
825
|
+
* The wrapper methods that are **not** chainable by default are:
|
825
826
|
* `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`,
|
826
827
|
* `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`,
|
827
828
|
* `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`,
|
@@ -836,14 +837,14 @@
|
|
836
837
|
* `startCase`, `startsWith`, `template`, `trim`, `trimLeft`, `trimRight`,
|
837
838
|
* `trunc`, `unescape`, `uniqueId`, `value`, and `words`
|
838
839
|
*
|
839
|
-
* The wrapper
|
840
|
+
* The wrapper method `sample` will return a wrapped value when `n` is provided,
|
840
841
|
* otherwise an unwrapped value is returned.
|
841
842
|
*
|
842
843
|
* @name _
|
843
844
|
* @constructor
|
844
845
|
* @category Chain
|
845
846
|
* @param {*} value The value to wrap in a `lodash` instance.
|
846
|
-
* @returns {Object} Returns
|
847
|
+
* @returns {Object} Returns the new `lodash` wrapper instance.
|
847
848
|
* @example
|
848
849
|
*
|
849
850
|
* var wrapped = _([1, 2, 3]);
|
@@ -862,12 +863,12 @@
|
|
862
863
|
* // => true
|
863
864
|
*/
|
864
865
|
function lodash(value) {
|
865
|
-
if (isObjectLike(value) && !isArray(value)) {
|
866
|
+
if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
|
866
867
|
if (value instanceof LodashWrapper) {
|
867
868
|
return value;
|
868
869
|
}
|
869
|
-
if (hasOwnProperty.call(value, '__wrapped__')) {
|
870
|
-
return
|
870
|
+
if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) {
|
871
|
+
return wrapperClone(value);
|
871
872
|
}
|
872
873
|
}
|
873
874
|
return new LodashWrapper(value);
|
@@ -882,9 +883,9 @@
|
|
882
883
|
* @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value.
|
883
884
|
*/
|
884
885
|
function LodashWrapper(value, chainAll, actions) {
|
886
|
+
this.__wrapped__ = value;
|
885
887
|
this.__actions__ = actions || [];
|
886
888
|
this.__chain__ = !!chainAll;
|
887
|
-
this.__wrapped__ = value;
|
888
889
|
}
|
889
890
|
|
890
891
|
/**
|
@@ -1017,14 +1018,14 @@
|
|
1017
1018
|
* @param {*} value The value to wrap.
|
1018
1019
|
*/
|
1019
1020
|
function LazyWrapper(value) {
|
1020
|
-
this.
|
1021
|
-
this.
|
1022
|
-
this.
|
1023
|
-
this.
|
1024
|
-
this.
|
1025
|
-
this.
|
1026
|
-
this.
|
1027
|
-
this.
|
1021
|
+
this.__wrapped__ = value;
|
1022
|
+
this.__actions__ = null;
|
1023
|
+
this.__dir__ = 1;
|
1024
|
+
this.__dropCount__ = 0;
|
1025
|
+
this.__filtered__ = false;
|
1026
|
+
this.__iteratees__ = null;
|
1027
|
+
this.__takeCount__ = POSITIVE_INFINITY;
|
1028
|
+
this.__views__ = null;
|
1028
1029
|
}
|
1029
1030
|
|
1030
1031
|
/**
|
@@ -1036,18 +1037,18 @@
|
|
1036
1037
|
* @returns {Object} Returns the cloned `LazyWrapper` object.
|
1037
1038
|
*/
|
1038
1039
|
function lazyClone() {
|
1039
|
-
var actions = this.
|
1040
|
-
iteratees = this.
|
1041
|
-
views = this.
|
1042
|
-
result = new LazyWrapper(this.
|
1043
|
-
|
1044
|
-
result.
|
1045
|
-
result.
|
1046
|
-
result.
|
1047
|
-
result.
|
1048
|
-
result.
|
1049
|
-
result.
|
1050
|
-
result.
|
1040
|
+
var actions = this.__actions__,
|
1041
|
+
iteratees = this.__iteratees__,
|
1042
|
+
views = this.__views__,
|
1043
|
+
result = new LazyWrapper(this.__wrapped__);
|
1044
|
+
|
1045
|
+
result.__actions__ = actions ? arrayCopy(actions) : null;
|
1046
|
+
result.__dir__ = this.__dir__;
|
1047
|
+
result.__dropCount__ = this.__dropCount__;
|
1048
|
+
result.__filtered__ = this.__filtered__;
|
1049
|
+
result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null;
|
1050
|
+
result.__takeCount__ = this.__takeCount__;
|
1051
|
+
result.__views__ = views ? arrayCopy(views) : null;
|
1051
1052
|
return result;
|
1052
1053
|
}
|
1053
1054
|
|
@@ -1060,13 +1061,13 @@
|
|
1060
1061
|
* @returns {Object} Returns the new reversed `LazyWrapper` object.
|
1061
1062
|
*/
|
1062
1063
|
function lazyReverse() {
|
1063
|
-
if (this.
|
1064
|
+
if (this.__filtered__) {
|
1064
1065
|
var result = new LazyWrapper(this);
|
1065
|
-
result.
|
1066
|
-
result.
|
1066
|
+
result.__dir__ = -1;
|
1067
|
+
result.__filtered__ = true;
|
1067
1068
|
} else {
|
1068
1069
|
result = this.clone();
|
1069
|
-
result.
|
1070
|
+
result.__dir__ *= -1;
|
1070
1071
|
}
|
1071
1072
|
return result;
|
1072
1073
|
}
|
@@ -1080,20 +1081,20 @@
|
|
1080
1081
|
* @returns {*} Returns the unwrapped value.
|
1081
1082
|
*/
|
1082
1083
|
function lazyValue() {
|
1083
|
-
var array = this.
|
1084
|
+
var array = this.__wrapped__.value();
|
1084
1085
|
if (!isArray(array)) {
|
1085
|
-
return baseWrapperValue(array, this.
|
1086
|
+
return baseWrapperValue(array, this.__actions__);
|
1086
1087
|
}
|
1087
|
-
var dir = this.
|
1088
|
+
var dir = this.__dir__,
|
1088
1089
|
isRight = dir < 0,
|
1089
|
-
view = getView(0, array.length, this.
|
1090
|
+
view = getView(0, array.length, this.__views__),
|
1090
1091
|
start = view.start,
|
1091
1092
|
end = view.end,
|
1092
1093
|
length = end - start,
|
1093
|
-
dropCount = this.
|
1094
|
-
takeCount = nativeMin(length, this.
|
1094
|
+
dropCount = this.__dropCount__,
|
1095
|
+
takeCount = nativeMin(length, this.__takeCount__),
|
1095
1096
|
index = isRight ? end : start - 1,
|
1096
|
-
iteratees = this.
|
1097
|
+
iteratees = this.__iteratees__,
|
1097
1098
|
iterLength = iteratees ? iteratees.length : 0,
|
1098
1099
|
resIndex = 0,
|
1099
1100
|
result = [];
|
@@ -1538,7 +1539,7 @@
|
|
1538
1539
|
return baseCopy(source, object, props);
|
1539
1540
|
}
|
1540
1541
|
var index = -1,
|
1541
|
-
length = props.length
|
1542
|
+
length = props.length;
|
1542
1543
|
|
1543
1544
|
while (++index < length) {
|
1544
1545
|
var key = props[index],
|
@@ -1645,10 +1646,12 @@
|
|
1645
1646
|
if (func == null) {
|
1646
1647
|
return identity;
|
1647
1648
|
}
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1651
|
-
|
1649
|
+
if (type == 'object') {
|
1650
|
+
return baseMatches(func);
|
1651
|
+
}
|
1652
|
+
return typeof thisArg == 'undefined'
|
1653
|
+
? baseProperty(func + '')
|
1654
|
+
: baseMatchesProperty(func + '', thisArg);
|
1652
1655
|
}
|
1653
1656
|
|
1654
1657
|
/**
|
@@ -1749,7 +1752,7 @@
|
|
1749
1752
|
* @returns {number} Returns the timer id.
|
1750
1753
|
*/
|
1751
1754
|
function baseDelay(func, wait, args, fromIndex) {
|
1752
|
-
if (
|
1755
|
+
if (typeof func != 'function') {
|
1753
1756
|
throw new TypeError(FUNC_ERROR_TEXT);
|
1754
1757
|
}
|
1755
1758
|
return setTimeout(function() { func.apply(undefined, baseSlice(args, fromIndex)); }, wait);
|
@@ -1869,6 +1872,36 @@
|
|
1869
1872
|
return result;
|
1870
1873
|
}
|
1871
1874
|
|
1875
|
+
/**
|
1876
|
+
* The base implementation of `_.fill` without an iteratee call guard.
|
1877
|
+
*
|
1878
|
+
* @private
|
1879
|
+
* @param {Array} array The array to fill.
|
1880
|
+
* @param {*} value The value to fill `array` with.
|
1881
|
+
* @param {number} [start=0] The start position.
|
1882
|
+
* @param {number} [end=array.length] The end position.
|
1883
|
+
* @returns {Array} Returns `array`.
|
1884
|
+
*/
|
1885
|
+
function baseFill(array, value, start, end) {
|
1886
|
+
var length = array.length;
|
1887
|
+
|
1888
|
+
start = start == null ? 0 : (+start || 0);
|
1889
|
+
if (start < 0) {
|
1890
|
+
start = -start > length ? 0 : (length + start);
|
1891
|
+
}
|
1892
|
+
end = (typeof end == 'undefined' || end > length) ? length : (+end || 0);
|
1893
|
+
if (end < 0) {
|
1894
|
+
end += length;
|
1895
|
+
}
|
1896
|
+
length = start > end ? 0 : end >>> 0;
|
1897
|
+
start >>>= 0;
|
1898
|
+
|
1899
|
+
while (start < length) {
|
1900
|
+
array[start++] = value;
|
1901
|
+
}
|
1902
|
+
return array;
|
1903
|
+
}
|
1904
|
+
|
1872
1905
|
/**
|
1873
1906
|
* The base implementation of `_.filter` without support for callback
|
1874
1907
|
* shorthands or `this` binding.
|
@@ -2201,7 +2234,7 @@
|
|
2201
2234
|
* shorthands or `this` binding.
|
2202
2235
|
*
|
2203
2236
|
* @private
|
2204
|
-
* @param {Object}
|
2237
|
+
* @param {Object} object The object to inspect.
|
2205
2238
|
* @param {Array} props The source property names to match.
|
2206
2239
|
* @param {Array} values The source values to match.
|
2207
2240
|
* @param {Array} strictCompareFlags Strict comparison flags for source values.
|
@@ -2263,8 +2296,7 @@
|
|
2263
2296
|
}
|
2264
2297
|
|
2265
2298
|
/**
|
2266
|
-
* The base implementation of `_.matches` which
|
2267
|
-
* `source` should be cloned.
|
2299
|
+
* The base implementation of `_.matches` which does not clone `source`.
|
2268
2300
|
*
|
2269
2301
|
* @private
|
2270
2302
|
* @param {Object} source The object of property values to match.
|
@@ -2297,6 +2329,26 @@
|
|
2297
2329
|
};
|
2298
2330
|
}
|
2299
2331
|
|
2332
|
+
/**
|
2333
|
+
* The base implementation of `_.matchesProperty` which does not coerce `key`
|
2334
|
+
* to a string.
|
2335
|
+
*
|
2336
|
+
* @private
|
2337
|
+
* @param {string} key The key of the property to get.
|
2338
|
+
* @param {*} value The value to compare.
|
2339
|
+
* @returns {Function} Returns the new function.
|
2340
|
+
*/
|
2341
|
+
function baseMatchesProperty(key, value) {
|
2342
|
+
if (isStrictComparable(value)) {
|
2343
|
+
return function(object) {
|
2344
|
+
return object != null && object[key] === value;
|
2345
|
+
};
|
2346
|
+
}
|
2347
|
+
return function(object) {
|
2348
|
+
return object != null && baseIsEqual(value, object[key], null, true);
|
2349
|
+
};
|
2350
|
+
}
|
2351
|
+
|
2300
2352
|
/**
|
2301
2353
|
* The base implementation of `_.merge` without support for argument juggling,
|
2302
2354
|
* multiple sources, and `this` binding `customizer` functions.
|
@@ -2459,7 +2511,7 @@
|
|
2459
2511
|
eachFunc(collection, function(value, index, collection) {
|
2460
2512
|
accumulator = initFromCollection
|
2461
2513
|
? (initFromCollection = false, value)
|
2462
|
-
: iteratee(accumulator, value, index, collection)
|
2514
|
+
: iteratee(accumulator, value, index, collection);
|
2463
2515
|
});
|
2464
2516
|
return accumulator;
|
2465
2517
|
}
|
@@ -2835,8 +2887,7 @@
|
|
2835
2887
|
/**
|
2836
2888
|
* Creates a function that aggregates a collection, creating an accumulator
|
2837
2889
|
* object composed from the results of running each element in the collection
|
2838
|
-
* through an iteratee.
|
2839
|
-
* object. If `initializer` is provided initializes the accumulator object.
|
2890
|
+
* through an iteratee.
|
2840
2891
|
*
|
2841
2892
|
* @private
|
2842
2893
|
* @param {Function} setter The function to set keys and values of the accumulator object.
|
@@ -3173,7 +3224,7 @@
|
|
3173
3224
|
*/
|
3174
3225
|
function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
|
3175
3226
|
var isBindKey = bitmask & BIND_KEY_FLAG;
|
3176
|
-
if (!isBindKey &&
|
3227
|
+
if (!isBindKey && typeof func != 'function') {
|
3177
3228
|
throw new TypeError(FUNC_ERROR_TEXT);
|
3178
3229
|
}
|
3179
3230
|
var length = partials ? partials.length : 0;
|
@@ -3203,9 +3254,9 @@
|
|
3203
3254
|
if (bitmask == BIND_FLAG) {
|
3204
3255
|
var result = createBindWrapper(newData[0], newData[2]);
|
3205
3256
|
} else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) {
|
3206
|
-
result = createPartialWrapper.apply(
|
3257
|
+
result = createPartialWrapper.apply(undefined, newData);
|
3207
3258
|
} else {
|
3208
|
-
result = createHybridWrapper.apply(
|
3259
|
+
result = createHybridWrapper.apply(undefined, newData);
|
3209
3260
|
}
|
3210
3261
|
var setter = data ? baseSetData : setData;
|
3211
3262
|
return setter(result, newData);
|
@@ -3893,6 +3944,19 @@
|
|
3893
3944
|
return isObject(value) ? value : Object(value);
|
3894
3945
|
}
|
3895
3946
|
|
3947
|
+
/**
|
3948
|
+
* Creates a clone of `wrapper`.
|
3949
|
+
*
|
3950
|
+
* @private
|
3951
|
+
* @param {Object} wrapper The wrapper to clone.
|
3952
|
+
* @returns {Object} Returns the cloned wrapper.
|
3953
|
+
*/
|
3954
|
+
function wrapperClone(wrapper) {
|
3955
|
+
return wrapper instanceof LazyWrapper
|
3956
|
+
? wrapper.clone()
|
3957
|
+
: new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__));
|
3958
|
+
}
|
3959
|
+
|
3896
3960
|
/*------------------------------------------------------------------------*/
|
3897
3961
|
|
3898
3962
|
/**
|
@@ -3904,7 +3968,7 @@
|
|
3904
3968
|
* @memberOf _
|
3905
3969
|
* @category Array
|
3906
3970
|
* @param {Array} array The array to process.
|
3907
|
-
* @param {
|
3971
|
+
* @param {number} [size=1] The length of each chunk.
|
3908
3972
|
* @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
|
3909
3973
|
* @returns {Array} Returns the new array containing chunks.
|
3910
3974
|
* @example
|
@@ -3999,7 +4063,6 @@
|
|
3999
4063
|
*
|
4000
4064
|
* @static
|
4001
4065
|
* @memberOf _
|
4002
|
-
* @type Function
|
4003
4066
|
* @category Array
|
4004
4067
|
* @param {Array} array The array to query.
|
4005
4068
|
* @param {number} [n=1] The number of elements to drop.
|
@@ -4035,7 +4098,6 @@
|
|
4035
4098
|
*
|
4036
4099
|
* @static
|
4037
4100
|
* @memberOf _
|
4038
|
-
* @type Function
|
4039
4101
|
* @category Array
|
4040
4102
|
* @param {Array} array The array to query.
|
4041
4103
|
* @param {number} [n=1] The number of elements to drop.
|
@@ -4075,13 +4137,16 @@
|
|
4075
4137
|
* If a property name is provided for `predicate` the created "_.property"
|
4076
4138
|
* style callback returns the property value of the given element.
|
4077
4139
|
*
|
4140
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
4141
|
+
* style callback returns `true` for elements that have a matching property
|
4142
|
+
* value, else `false`.
|
4143
|
+
*
|
4078
4144
|
* If an object is provided for `predicate` the created "_.matches" style
|
4079
|
-
* callback returns `true` for elements that
|
4145
|
+
* callback returns `true` for elements that match the properties of the given
|
4080
4146
|
* object, else `false`.
|
4081
4147
|
*
|
4082
4148
|
* @static
|
4083
4149
|
* @memberOf _
|
4084
|
-
* @type Function
|
4085
4150
|
* @category Array
|
4086
4151
|
* @param {Array} array The array to query.
|
4087
4152
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
@@ -4094,18 +4159,22 @@
|
|
4094
4159
|
* // => [1]
|
4095
4160
|
*
|
4096
4161
|
* var users = [
|
4097
|
-
* { 'user': 'barney', '
|
4098
|
-
* { 'user': 'fred', '
|
4099
|
-
* { 'user': 'pebbles', '
|
4162
|
+
* { 'user': 'barney', 'age': 36, 'active': true },
|
4163
|
+
* { 'user': 'fred', 'age': 40, 'active': false },
|
4164
|
+
* { 'user': 'pebbles', 'age': 1, 'active': false }
|
4100
4165
|
* ];
|
4101
4166
|
*
|
4102
|
-
* // using the "_.property" callback shorthand
|
4103
|
-
* _.pluck(_.dropRightWhile(users, 'active'), 'user');
|
4104
|
-
* // => ['barney']
|
4105
|
-
*
|
4106
4167
|
* // using the "_.matches" callback shorthand
|
4107
|
-
* _.pluck(_.dropRightWhile(users, { '
|
4168
|
+
* _.pluck(_.dropRightWhile(users, { 'age': 1, 'active': false }), 'user');
|
4108
4169
|
* // => ['barney', 'fred']
|
4170
|
+
*
|
4171
|
+
* // using the "_.matchesProperty" callback shorthand
|
4172
|
+
* _.pluck(_.dropRightWhile(users, 'active', false), 'user');
|
4173
|
+
* // => ['barney']
|
4174
|
+
*
|
4175
|
+
* // using the "_.property" callback shorthand
|
4176
|
+
* _.pluck(_.dropRightWhile(users, 'active'), 'user');
|
4177
|
+
* // => ['barney', 'fred', 'pebbles']
|
4109
4178
|
*/
|
4110
4179
|
function dropRightWhile(array, predicate, thisArg) {
|
4111
4180
|
var length = array ? array.length : 0;
|
@@ -4125,13 +4194,16 @@
|
|
4125
4194
|
* If a property name is provided for `predicate` the created "_.property"
|
4126
4195
|
* style callback returns the property value of the given element.
|
4127
4196
|
*
|
4197
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
4198
|
+
* style callback returns `true` for elements that have a matching property
|
4199
|
+
* value, else `false`.
|
4200
|
+
*
|
4128
4201
|
* If an object is provided for `predicate` the created "_.matches" style
|
4129
4202
|
* callback returns `true` for elements that have the properties of the given
|
4130
4203
|
* object, else `false`.
|
4131
4204
|
*
|
4132
4205
|
* @static
|
4133
4206
|
* @memberOf _
|
4134
|
-
* @type Function
|
4135
4207
|
* @category Array
|
4136
4208
|
* @param {Array} array The array to query.
|
4137
4209
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
@@ -4144,18 +4216,22 @@
|
|
4144
4216
|
* // => [3]
|
4145
4217
|
*
|
4146
4218
|
* var users = [
|
4147
|
-
* { 'user': 'barney', '
|
4148
|
-
* { 'user': 'fred', '
|
4149
|
-
* { 'user': 'pebbles', '
|
4219
|
+
* { 'user': 'barney', 'age': 36, 'active': false },
|
4220
|
+
* { 'user': 'fred', 'age': 40, 'active': false },
|
4221
|
+
* { 'user': 'pebbles', 'age': 1, 'active': true }
|
4150
4222
|
* ];
|
4151
4223
|
*
|
4152
|
-
* // using the "_.
|
4153
|
-
* _.pluck(_.dropWhile(users, 'active'), 'user');
|
4224
|
+
* // using the "_.matches" callback shorthand
|
4225
|
+
* _.pluck(_.dropWhile(users, { 'age': 36, 'active': false }), 'user');
|
4154
4226
|
* // => ['fred', 'pebbles']
|
4155
4227
|
*
|
4156
|
-
* // using the "_.
|
4157
|
-
* _.pluck(_.dropWhile(users,
|
4228
|
+
* // using the "_.matchesProperty" callback shorthand
|
4229
|
+
* _.pluck(_.dropWhile(users, 'active', false), 'user');
|
4158
4230
|
* // => ['pebbles']
|
4231
|
+
*
|
4232
|
+
* // using the "_.property" callback shorthand
|
4233
|
+
* _.pluck(_.dropWhile(users, 'active'), 'user');
|
4234
|
+
* // => ['barney', 'fred', 'pebbles']
|
4159
4235
|
*/
|
4160
4236
|
function dropWhile(array, predicate, thisArg) {
|
4161
4237
|
var length = array ? array.length : 0;
|
@@ -4168,6 +4244,33 @@
|
|
4168
4244
|
return baseSlice(array, index);
|
4169
4245
|
}
|
4170
4246
|
|
4247
|
+
/**
|
4248
|
+
* Fills elements of `array` with `value` from `start` up to, but not
|
4249
|
+
* including, `end`.
|
4250
|
+
*
|
4251
|
+
* **Note:** This method mutates `array`.
|
4252
|
+
*
|
4253
|
+
* @static
|
4254
|
+
* @memberOf _
|
4255
|
+
* @category Array
|
4256
|
+
* @param {Array} array The array to fill.
|
4257
|
+
* @param {*} value The value to fill `array` with.
|
4258
|
+
* @param {number} [start=0] The start position.
|
4259
|
+
* @param {number} [end=array.length] The end position.
|
4260
|
+
* @returns {Array} Returns `array`.
|
4261
|
+
*/
|
4262
|
+
function fill(array, value, start, end) {
|
4263
|
+
var length = array ? array.length : 0;
|
4264
|
+
if (!length) {
|
4265
|
+
return [];
|
4266
|
+
}
|
4267
|
+
if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
|
4268
|
+
start = 0;
|
4269
|
+
end = length;
|
4270
|
+
}
|
4271
|
+
return baseFill(array, value, start, end);
|
4272
|
+
}
|
4273
|
+
|
4171
4274
|
/**
|
4172
4275
|
* This method is like `_.find` except that it returns the index of the first
|
4173
4276
|
* element `predicate` returns truthy for, instead of the element itself.
|
@@ -4175,6 +4278,10 @@
|
|
4175
4278
|
* If a property name is provided for `predicate` the created "_.property"
|
4176
4279
|
* style callback returns the property value of the given element.
|
4177
4280
|
*
|
4281
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
4282
|
+
* style callback returns `true` for elements that have a matching property
|
4283
|
+
* value, else `false`.
|
4284
|
+
*
|
4178
4285
|
* If an object is provided for `predicate` the created "_.matches" style
|
4179
4286
|
* callback returns `true` for elements that have the properties of the given
|
4180
4287
|
* object, else `false`.
|
@@ -4200,7 +4307,11 @@
|
|
4200
4307
|
* // => 0
|
4201
4308
|
*
|
4202
4309
|
* // using the "_.matches" callback shorthand
|
4203
|
-
* _.findIndex(users, { 'age':
|
4310
|
+
* _.findIndex(users, { 'age': 40, 'active': true });
|
4311
|
+
* // => 1
|
4312
|
+
*
|
4313
|
+
* // using the "_.matchesProperty" callback shorthand
|
4314
|
+
* _.findIndex(users, 'age', 1);
|
4204
4315
|
* // => 2
|
4205
4316
|
*
|
4206
4317
|
* // using the "_.property" callback shorthand
|
@@ -4227,6 +4338,10 @@
|
|
4227
4338
|
* If a property name is provided for `predicate` the created "_.property"
|
4228
4339
|
* style callback returns the property value of the given element.
|
4229
4340
|
*
|
4341
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
4342
|
+
* style callback returns `true` for elements that have a matching property
|
4343
|
+
* value, else `false`.
|
4344
|
+
*
|
4230
4345
|
* If an object is provided for `predicate` the created "_.matches" style
|
4231
4346
|
* callback returns `true` for elements that have the properties of the given
|
4232
4347
|
* object, else `false`.
|
@@ -4252,7 +4367,11 @@
|
|
4252
4367
|
* // => 2
|
4253
4368
|
*
|
4254
4369
|
* // using the "_.matches" callback shorthand
|
4255
|
-
* _.findLastIndex(users, { 'age':
|
4370
|
+
* _.findLastIndex(users, { 'age': 36, 'active': true });
|
4371
|
+
* // => 0
|
4372
|
+
*
|
4373
|
+
* // using the "_.matchesProperty" callback shorthand
|
4374
|
+
* _.findLastIndex(users, 'age', 40);
|
4256
4375
|
* // => 1
|
4257
4376
|
*
|
4258
4377
|
* // using the "_.property" callback shorthand
|
@@ -4610,6 +4729,10 @@
|
|
4610
4729
|
* If a property name is provided for `predicate` the created "_.property"
|
4611
4730
|
* style callback returns the property value of the given element.
|
4612
4731
|
*
|
4732
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
4733
|
+
* style callback returns `true` for elements that have a matching property
|
4734
|
+
* value, else `false`.
|
4735
|
+
*
|
4613
4736
|
* If an object is provided for `predicate` the created "_.matches" style
|
4614
4737
|
* callback returns `true` for elements that have the properties of the given
|
4615
4738
|
* object, else `false`.
|
@@ -4707,6 +4830,10 @@
|
|
4707
4830
|
* If a property name is provided for `predicate` the created "_.property"
|
4708
4831
|
* style callback returns the property value of the given element.
|
4709
4832
|
*
|
4833
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
4834
|
+
* style callback returns `true` for elements that have a matching property
|
4835
|
+
* value, else `false`.
|
4836
|
+
*
|
4710
4837
|
* If an object is provided for `predicate` the created "_.matches" style
|
4711
4838
|
* callback returns `true` for elements that have the properties of the given
|
4712
4839
|
* object, else `false`.
|
@@ -4782,7 +4909,6 @@
|
|
4782
4909
|
*
|
4783
4910
|
* @static
|
4784
4911
|
* @memberOf _
|
4785
|
-
* @type Function
|
4786
4912
|
* @category Array
|
4787
4913
|
* @param {Array} array The array to query.
|
4788
4914
|
* @param {number} [n=1] The number of elements to take.
|
@@ -4818,7 +4944,6 @@
|
|
4818
4944
|
*
|
4819
4945
|
* @static
|
4820
4946
|
* @memberOf _
|
4821
|
-
* @type Function
|
4822
4947
|
* @category Array
|
4823
4948
|
* @param {Array} array The array to query.
|
4824
4949
|
* @param {number} [n=1] The number of elements to take.
|
@@ -4858,13 +4983,16 @@
|
|
4858
4983
|
* If a property name is provided for `predicate` the created "_.property"
|
4859
4984
|
* style callback returns the property value of the given element.
|
4860
4985
|
*
|
4986
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
4987
|
+
* style callback returns `true` for elements that have a matching property
|
4988
|
+
* value, else `false`.
|
4989
|
+
*
|
4861
4990
|
* If an object is provided for `predicate` the created "_.matches" style
|
4862
4991
|
* callback returns `true` for elements that have the properties of the given
|
4863
4992
|
* object, else `false`.
|
4864
4993
|
*
|
4865
4994
|
* @static
|
4866
4995
|
* @memberOf _
|
4867
|
-
* @type Function
|
4868
4996
|
* @category Array
|
4869
4997
|
* @param {Array} array The array to query.
|
4870
4998
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
@@ -4877,18 +5005,22 @@
|
|
4877
5005
|
* // => [2, 3]
|
4878
5006
|
*
|
4879
5007
|
* var users = [
|
4880
|
-
* { 'user': 'barney', '
|
4881
|
-
* { 'user': 'fred', '
|
4882
|
-
* { 'user': 'pebbles', '
|
5008
|
+
* { 'user': 'barney', 'age': 36, 'active': true },
|
5009
|
+
* { 'user': 'fred', 'age': 40, 'active': false },
|
5010
|
+
* { 'user': 'pebbles', 'age': 1, 'active': false }
|
4883
5011
|
* ];
|
4884
5012
|
*
|
4885
|
-
* // using the "_.property" callback shorthand
|
4886
|
-
* _.pluck(_.takeRightWhile(users, 'active'), 'user');
|
4887
|
-
* // => ['fred', 'pebbles']
|
4888
|
-
*
|
4889
5013
|
* // using the "_.matches" callback shorthand
|
4890
|
-
* _.pluck(_.takeRightWhile(users, { '
|
5014
|
+
* _.pluck(_.takeRightWhile(users, { 'age': 1, 'active': true }), 'user');
|
4891
5015
|
* // => ['pebbles']
|
5016
|
+
*
|
5017
|
+
* // using the "_.matchesProperty" callback shorthand
|
5018
|
+
* _.pluck(_.takeRightWhile(users, 'active', false), 'user');
|
5019
|
+
* // => ['fred', 'pebbles']
|
5020
|
+
*
|
5021
|
+
* // using the "_.property" callback shorthand
|
5022
|
+
* _.pluck(_.takeRightWhile(users, 'active'), 'user');
|
5023
|
+
* // => []
|
4892
5024
|
*/
|
4893
5025
|
function takeRightWhile(array, predicate, thisArg) {
|
4894
5026
|
var length = array ? array.length : 0;
|
@@ -4908,13 +5040,16 @@
|
|
4908
5040
|
* If a property name is provided for `predicate` the created "_.property"
|
4909
5041
|
* style callback returns the property value of the given element.
|
4910
5042
|
*
|
5043
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
5044
|
+
* style callback returns `true` for elements that have a matching property
|
5045
|
+
* value, else `false`.
|
5046
|
+
*
|
4911
5047
|
* If an object is provided for `predicate` the created "_.matches" style
|
4912
5048
|
* callback returns `true` for elements that have the properties of the given
|
4913
5049
|
* object, else `false`.
|
4914
5050
|
*
|
4915
5051
|
* @static
|
4916
5052
|
* @memberOf _
|
4917
|
-
* @type Function
|
4918
5053
|
* @category Array
|
4919
5054
|
* @param {Array} array The array to query.
|
4920
5055
|
* @param {Function|Object|string} [predicate=_.identity] The function invoked
|
@@ -4927,18 +5062,22 @@
|
|
4927
5062
|
* // => [1, 2]
|
4928
5063
|
*
|
4929
5064
|
* var users = [
|
4930
|
-
* { 'user': 'barney', '
|
4931
|
-
* { 'user': 'fred', '
|
4932
|
-
* { 'user': 'pebbles', '
|
5065
|
+
* { 'user': 'barney', 'age': 36, 'active': false },
|
5066
|
+
* { 'user': 'fred', 'age': 40, 'active': false },
|
5067
|
+
* { 'user': 'pebbles', 'age': 1, 'active': true }
|
4933
5068
|
* ];
|
4934
5069
|
*
|
4935
|
-
* // using the "_.
|
4936
|
-
* _.pluck(_.takeWhile(users, 'active'), 'user');
|
5070
|
+
* // using the "_.matches" callback shorthand
|
5071
|
+
* _.pluck(_.takeWhile(users, { 'age': 36, 'active': true }), 'user');
|
4937
5072
|
* // => ['barney']
|
4938
5073
|
*
|
4939
|
-
* // using the "_.
|
4940
|
-
* _.pluck(_.takeWhile(users,
|
5074
|
+
* // using the "_.matchesProperty" callback shorthand
|
5075
|
+
* _.pluck(_.takeWhile(users, 'active', false), 'user');
|
4941
5076
|
* // => ['barney', 'fred']
|
5077
|
+
*
|
5078
|
+
* // using the "_.property" callback shorthand
|
5079
|
+
* _.pluck(_.takeWhile(users, 'active'), 'user');
|
5080
|
+
* // => []
|
4942
5081
|
*/
|
4943
5082
|
function takeWhile(array, predicate, thisArg) {
|
4944
5083
|
var length = array ? array.length : 0;
|
@@ -4985,6 +5124,10 @@
|
|
4985
5124
|
* If a property name is provided for `predicate` the created "_.property"
|
4986
5125
|
* style callback returns the property value of the given element.
|
4987
5126
|
*
|
5127
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
5128
|
+
* style callback returns `true` for elements that have a matching property
|
5129
|
+
* value, else `false`.
|
5130
|
+
*
|
4988
5131
|
* If an object is provided for `predicate` the created "_.matches" style
|
4989
5132
|
* callback returns `true` for elements that have the properties of the given
|
4990
5133
|
* object, else `false`.
|
@@ -5199,7 +5342,7 @@
|
|
5199
5342
|
* @memberOf _
|
5200
5343
|
* @category Chain
|
5201
5344
|
* @param {*} value The value to wrap.
|
5202
|
-
* @returns {Object} Returns the new `lodash`
|
5345
|
+
* @returns {Object} Returns the new `lodash` wrapper instance.
|
5203
5346
|
* @example
|
5204
5347
|
*
|
5205
5348
|
* var users = [
|
@@ -5275,7 +5418,7 @@
|
|
5275
5418
|
* @name chain
|
5276
5419
|
* @memberOf _
|
5277
5420
|
* @category Chain
|
5278
|
-
* @returns {
|
5421
|
+
* @returns {Object} Returns the new `lodash` wrapper instance.
|
5279
5422
|
* @example
|
5280
5423
|
*
|
5281
5424
|
* var users = [
|
@@ -5298,6 +5441,76 @@
|
|
5298
5441
|
return chain(this);
|
5299
5442
|
}
|
5300
5443
|
|
5444
|
+
/**
|
5445
|
+
* Executes the chained sequence and returns the wrapped result.
|
5446
|
+
*
|
5447
|
+
* @name commit
|
5448
|
+
* @memberOf _
|
5449
|
+
* @category Chain
|
5450
|
+
* @returns {Object} Returns the new `lodash` wrapper instance.
|
5451
|
+
* @example
|
5452
|
+
*
|
5453
|
+
* var array = [1, 2];
|
5454
|
+
* var wrapper = _(array).push(3);
|
5455
|
+
*
|
5456
|
+
* console.log(array);
|
5457
|
+
* // => [1, 2]
|
5458
|
+
*
|
5459
|
+
* wrapper = wrapper.commit();
|
5460
|
+
* console.log(array);
|
5461
|
+
* // => [1, 2, 3]
|
5462
|
+
*
|
5463
|
+
* wrapper.last();
|
5464
|
+
* // => 3
|
5465
|
+
*
|
5466
|
+
* console.log(array);
|
5467
|
+
* // => [1, 2, 3]
|
5468
|
+
*/
|
5469
|
+
function wrapperCommit() {
|
5470
|
+
return new LodashWrapper(this.value(), this.__chain__);
|
5471
|
+
}
|
5472
|
+
|
5473
|
+
/**
|
5474
|
+
* Creates a clone of the chained sequence planting `value` as the wrapped value.
|
5475
|
+
*
|
5476
|
+
* @name plant
|
5477
|
+
* @memberOf _
|
5478
|
+
* @category Chain
|
5479
|
+
* @returns {Object} Returns the new `lodash` wrapper instance.
|
5480
|
+
* @example
|
5481
|
+
*
|
5482
|
+
* var array = [1, 2];
|
5483
|
+
* var wrapper = _(array).map(function(value) {
|
5484
|
+
* return Math.pow(value, 2);
|
5485
|
+
* });
|
5486
|
+
*
|
5487
|
+
* var other = [3, 4];
|
5488
|
+
* var otherWrapper = wrapper.plant(other);
|
5489
|
+
*
|
5490
|
+
* otherWrapper.value();
|
5491
|
+
* // => [9, 16]
|
5492
|
+
*
|
5493
|
+
* wrapper.value();
|
5494
|
+
* // => [1, 4]
|
5495
|
+
*/
|
5496
|
+
function wrapperPlant(value) {
|
5497
|
+
var result,
|
5498
|
+
parent = this;
|
5499
|
+
|
5500
|
+
while (parent instanceof LodashWrapper) {
|
5501
|
+
var clone = wrapperClone(parent);
|
5502
|
+
if (result) {
|
5503
|
+
previous.__wrapped__ = clone;
|
5504
|
+
} else {
|
5505
|
+
result = clone;
|
5506
|
+
}
|
5507
|
+
var previous = clone;
|
5508
|
+
parent = parent.__wrapped__;
|
5509
|
+
}
|
5510
|
+
previous.__wrapped__ = value;
|
5511
|
+
return result;
|
5512
|
+
}
|
5513
|
+
|
5301
5514
|
/**
|
5302
5515
|
* Reverses the wrapped array so the first element becomes the last, the
|
5303
5516
|
* second element becomes the second to last, and so on.
|
@@ -5307,7 +5520,7 @@
|
|
5307
5520
|
* @name reverse
|
5308
5521
|
* @memberOf _
|
5309
5522
|
* @category Chain
|
5310
|
-
* @returns {Object} Returns the new reversed `lodash`
|
5523
|
+
* @returns {Object} Returns the new reversed `lodash` wrapper instance.
|
5311
5524
|
* @example
|
5312
5525
|
*
|
5313
5526
|
* var array = [1, 2, 3];
|
@@ -5324,7 +5537,7 @@
|
|
5324
5537
|
if (this.__actions__.length) {
|
5325
5538
|
value = new LazyWrapper(this);
|
5326
5539
|
}
|
5327
|
-
return new LodashWrapper(value.reverse());
|
5540
|
+
return new LodashWrapper(value.reverse(), this.__chain__);
|
5328
5541
|
}
|
5329
5542
|
return this.thru(function(value) {
|
5330
5543
|
return value.reverse();
|
@@ -5352,7 +5565,7 @@
|
|
5352
5565
|
*
|
5353
5566
|
* @name value
|
5354
5567
|
* @memberOf _
|
5355
|
-
* @alias toJSON, valueOf
|
5568
|
+
* @alias run, toJSON, valueOf
|
5356
5569
|
* @category Chain
|
5357
5570
|
* @returns {*} Returns the resolved unwrapped value.
|
5358
5571
|
* @example
|
@@ -5455,6 +5668,10 @@
|
|
5455
5668
|
* If a property name is provided for `predicate` the created "_.property"
|
5456
5669
|
* style callback returns the property value of the given element.
|
5457
5670
|
*
|
5671
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
5672
|
+
* style callback returns `true` for elements that have a matching property
|
5673
|
+
* value, else `false`.
|
5674
|
+
*
|
5458
5675
|
* If an object is provided for `predicate` the created "_.matches" style
|
5459
5676
|
* callback returns `true` for elements that have the properties of the given
|
5460
5677
|
* object, else `false`.
|
@@ -5491,6 +5708,10 @@
|
|
5491
5708
|
* If a property name is provided for `predicate` the created "_.property"
|
5492
5709
|
* style callback returns the property value of the given element.
|
5493
5710
|
*
|
5711
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
5712
|
+
* style callback returns `true` for elements that have a matching property
|
5713
|
+
* value, else `false`.
|
5714
|
+
*
|
5494
5715
|
* If an object is provided for `predicate` the created "_.matches" style
|
5495
5716
|
* callback returns `true` for elements that have the properties of the given
|
5496
5717
|
* object, else `false`.
|
@@ -5512,16 +5733,20 @@
|
|
5512
5733
|
* // => false
|
5513
5734
|
*
|
5514
5735
|
* var users = [
|
5515
|
-
* { 'user': 'barney', 'age': 36 },
|
5516
|
-
* { 'user': 'fred', 'age': 40 }
|
5736
|
+
* { 'user': 'barney', 'age': 36, 'active': false },
|
5737
|
+
* { 'user': 'fred', 'age': 40, 'active': false }
|
5517
5738
|
* ];
|
5518
5739
|
*
|
5519
|
-
* // using the "_.
|
5520
|
-
* _.every(users, 'age');
|
5740
|
+
* // using the "_.matches" callback shorthand
|
5741
|
+
* _.every(users, { 'age': 36, 'active': false });
|
5742
|
+
* // => false
|
5743
|
+
*
|
5744
|
+
* // using the "_.matchesProperty" callback shorthand
|
5745
|
+
* _.every(users, 'active', false);
|
5521
5746
|
* // => true
|
5522
5747
|
*
|
5523
|
-
* // using the "_.
|
5524
|
-
* _.every(users,
|
5748
|
+
* // using the "_.property" callback shorthand
|
5749
|
+
* _.every(users, 'active');
|
5525
5750
|
* // => false
|
5526
5751
|
*/
|
5527
5752
|
function every(collection, predicate, thisArg) {
|
@@ -5540,6 +5765,10 @@
|
|
5540
5765
|
* If a property name is provided for `predicate` the created "_.property"
|
5541
5766
|
* style callback returns the property value of the given element.
|
5542
5767
|
*
|
5768
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
5769
|
+
* style callback returns `true` for elements that have a matching property
|
5770
|
+
* value, else `false`.
|
5771
|
+
*
|
5543
5772
|
* If an object is provided for `predicate` the created "_.matches" style
|
5544
5773
|
* callback returns `true` for elements that have the properties of the given
|
5545
5774
|
* object, else `false`.
|
@@ -5560,16 +5789,20 @@
|
|
5560
5789
|
* // => [2, 4]
|
5561
5790
|
*
|
5562
5791
|
* var users = [
|
5563
|
-
* { 'user': 'barney', 'age': 36, 'active':
|
5564
|
-
* { 'user': 'fred', 'age': 40, 'active':
|
5792
|
+
* { 'user': 'barney', 'age': 36, 'active': true },
|
5793
|
+
* { 'user': 'fred', 'age': 40, 'active': false }
|
5565
5794
|
* ];
|
5566
5795
|
*
|
5567
|
-
* // using the "_.
|
5568
|
-
* _.pluck(_.filter(users, 'active'), 'user');
|
5796
|
+
* // using the "_.matches" callback shorthand
|
5797
|
+
* _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user');
|
5798
|
+
* // => ['barney']
|
5799
|
+
*
|
5800
|
+
* // using the "_.matchesProperty" callback shorthand
|
5801
|
+
* _.pluck(_.filter(users, 'active', false), 'user');
|
5569
5802
|
* // => ['fred']
|
5570
5803
|
*
|
5571
|
-
* // using the "_.
|
5572
|
-
* _.pluck(_.filter(users,
|
5804
|
+
* // using the "_.property" callback shorthand
|
5805
|
+
* _.pluck(_.filter(users, 'active'), 'user');
|
5573
5806
|
* // => ['barney']
|
5574
5807
|
*/
|
5575
5808
|
function filter(collection, predicate, thisArg) {
|
@@ -5586,6 +5819,10 @@
|
|
5586
5819
|
* If a property name is provided for `predicate` the created "_.property"
|
5587
5820
|
* style callback returns the property value of the given element.
|
5588
5821
|
*
|
5822
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
5823
|
+
* style callback returns `true` for elements that have a matching property
|
5824
|
+
* value, else `false`.
|
5825
|
+
*
|
5589
5826
|
* If an object is provided for `predicate` the created "_.matches" style
|
5590
5827
|
* callback returns `true` for elements that have the properties of the given
|
5591
5828
|
* object, else `false`.
|
@@ -5603,21 +5840,25 @@
|
|
5603
5840
|
* @example
|
5604
5841
|
*
|
5605
5842
|
* var users = [
|
5606
|
-
* { 'user': 'barney', 'age': 36, 'active':
|
5607
|
-
* { 'user': 'fred', 'age': 40, 'active':
|
5608
|
-
* { 'user': 'pebbles', 'age': 1, 'active':
|
5843
|
+
* { 'user': 'barney', 'age': 36, 'active': true },
|
5844
|
+
* { 'user': 'fred', 'age': 40, 'active': false },
|
5845
|
+
* { 'user': 'pebbles', 'age': 1, 'active': true }
|
5609
5846
|
* ];
|
5610
5847
|
*
|
5611
5848
|
* _.result(_.find(users, function(chr) { return chr.age < 40; }), 'user');
|
5612
5849
|
* // => 'barney'
|
5613
5850
|
*
|
5614
5851
|
* // using the "_.matches" callback shorthand
|
5615
|
-
* _.result(_.find(users, { 'age': 1 }), 'user');
|
5852
|
+
* _.result(_.find(users, { 'age': 1, 'active': true }), 'user');
|
5616
5853
|
* // => 'pebbles'
|
5617
5854
|
*
|
5855
|
+
* // using the "_.matchesProperty" callback shorthand
|
5856
|
+
* _.result(_.find(users, 'active', false), 'user');
|
5857
|
+
* // => 'fred'
|
5858
|
+
*
|
5618
5859
|
* // using the "_.property" callback shorthand
|
5619
5860
|
* _.result(_.find(users, 'active'), 'user');
|
5620
|
-
* // => '
|
5861
|
+
* // => 'barney'
|
5621
5862
|
*/
|
5622
5863
|
function find(collection, predicate, thisArg) {
|
5623
5864
|
if (isArray(collection)) {
|
@@ -5656,6 +5897,11 @@
|
|
5656
5897
|
* source object, returning the first element that has equivalent property
|
5657
5898
|
* values.
|
5658
5899
|
*
|
5900
|
+
* **Note:** This method supports comparing arrays, booleans, `Date` objects,
|
5901
|
+
* numbers, `Object` objects, regexes, and strings. Objects are compared by
|
5902
|
+
* their own, not inherited, enumerable properties. For comparing a single
|
5903
|
+
* own or inherited property value see `_.matchesProperty`.
|
5904
|
+
*
|
5659
5905
|
* @static
|
5660
5906
|
* @memberOf _
|
5661
5907
|
* @category Collection
|
@@ -5665,14 +5911,14 @@
|
|
5665
5911
|
* @example
|
5666
5912
|
*
|
5667
5913
|
* var users = [
|
5668
|
-
* { 'user': 'barney', 'age': 36, '
|
5669
|
-
* { 'user': 'fred', 'age': 40, '
|
5914
|
+
* { 'user': 'barney', 'age': 36, 'active': true },
|
5915
|
+
* { 'user': 'fred', 'age': 40, 'active': false }
|
5670
5916
|
* ];
|
5671
5917
|
*
|
5672
|
-
* _.result(_.findWhere(users, { '
|
5918
|
+
* _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user');
|
5673
5919
|
* // => 'barney'
|
5674
5920
|
*
|
5675
|
-
* _.result(_.findWhere(users, { 'age': 40 }), 'user');
|
5921
|
+
* _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user');
|
5676
5922
|
* // => 'fred'
|
5677
5923
|
*/
|
5678
5924
|
function findWhere(collection, source) {
|
@@ -5744,6 +5990,10 @@
|
|
5744
5990
|
* If a property name is provided for `predicate` the created "_.property"
|
5745
5991
|
* style callback returns the property value of the given element.
|
5746
5992
|
*
|
5993
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
5994
|
+
* style callback returns `true` for elements that have a matching property
|
5995
|
+
* value, else `false`.
|
5996
|
+
*
|
5747
5997
|
* If an object is provided for `predicate` the created "_.matches" style
|
5748
5998
|
* callback returns `true` for elements that have the properties of the given
|
5749
5999
|
* object, else `false`.
|
@@ -5787,6 +6037,10 @@
|
|
5787
6037
|
* If a property name is provided for `predicate` the created "_.property"
|
5788
6038
|
* style callback returns the property value of the given element.
|
5789
6039
|
*
|
6040
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6041
|
+
* style callback returns `true` for elements that have a matching property
|
6042
|
+
* value, else `false`.
|
6043
|
+
*
|
5790
6044
|
* If an object is provided for `predicate` the created "_.matches" style
|
5791
6045
|
* callback returns `true` for elements that have the properties of the given
|
5792
6046
|
* object, else `false`.
|
@@ -5854,10 +6108,23 @@
|
|
5854
6108
|
* If a property name is provided for `predicate` the created "_.property"
|
5855
6109
|
* style callback returns the property value of the given element.
|
5856
6110
|
*
|
6111
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6112
|
+
* style callback returns `true` for elements that have a matching property
|
6113
|
+
* value, else `false`.
|
6114
|
+
*
|
5857
6115
|
* If an object is provided for `predicate` the created "_.matches" style
|
5858
6116
|
* callback returns `true` for elements that have the properties of the given
|
5859
6117
|
* object, else `false`.
|
5860
6118
|
*
|
6119
|
+
* Many lodash methods are guarded to work as interatees for methods like
|
6120
|
+
* `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
|
6121
|
+
*
|
6122
|
+
* The guarded methods are:
|
6123
|
+
* `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`,
|
6124
|
+
* `dropRight`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`, `slice`,
|
6125
|
+
* `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`, `trimRight`,
|
6126
|
+
* `trunc`, `random`, `range`, `sample`, `uniq`, and `words`
|
6127
|
+
*
|
5861
6128
|
* @static
|
5862
6129
|
* @memberOf _
|
5863
6130
|
* @alias collect
|
@@ -5901,6 +6168,10 @@
|
|
5901
6168
|
* If a property name is provided for `predicate` the created "_.property"
|
5902
6169
|
* style callback returns the property value of the given element.
|
5903
6170
|
*
|
6171
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6172
|
+
* style callback returns `true` for elements that have a matching property
|
6173
|
+
* value, else `false`.
|
6174
|
+
*
|
5904
6175
|
* If an object is provided for `predicate` the created "_.matches" style
|
5905
6176
|
* callback returns `true` for elements that have the properties of the given
|
5906
6177
|
* object, else `false`.
|
@@ -5946,6 +6217,10 @@
|
|
5946
6217
|
* If a property name is provided for `predicate` the created "_.property"
|
5947
6218
|
* style callback returns the property value of the given element.
|
5948
6219
|
*
|
6220
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6221
|
+
* style callback returns `true` for elements that have a matching property
|
6222
|
+
* value, else `false`.
|
6223
|
+
*
|
5949
6224
|
* If an object is provided for `predicate` the created "_.matches" style
|
5950
6225
|
* callback returns `true` for elements that have the properties of the given
|
5951
6226
|
* object, else `false`.
|
@@ -5990,6 +6265,10 @@
|
|
5990
6265
|
* If a property name is provided for `predicate` the created "_.property"
|
5991
6266
|
* style callback returns the property value of the given element.
|
5992
6267
|
*
|
6268
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6269
|
+
* style callback returns `true` for elements that have a matching property
|
6270
|
+
* value, else `false`.
|
6271
|
+
*
|
5993
6272
|
* If an object is provided for `predicate` the created "_.matches" style
|
5994
6273
|
* callback returns `true` for elements that have the properties of the given
|
5995
6274
|
* object, else `false`.
|
@@ -6017,12 +6296,18 @@
|
|
6017
6296
|
* { 'user': 'pebbles', 'age': 1, 'active': false }
|
6018
6297
|
* ];
|
6019
6298
|
*
|
6299
|
+
* var mapper = function(array) { return _.pluck(array, 'user'); };
|
6300
|
+
*
|
6020
6301
|
* // using the "_.matches" callback shorthand
|
6021
|
-
* _.map(_.partition(users, { 'age': 1
|
6302
|
+
* _.map(_.partition(users, { 'age': 1, 'active': false }), mapper);
|
6022
6303
|
* // => [['pebbles'], ['barney', 'fred']]
|
6023
6304
|
*
|
6305
|
+
* // using the "_.matchesProperty" callback shorthand
|
6306
|
+
* _.map(_.partition(users, 'active', false), mapper);
|
6307
|
+
* // => [['barney', 'pebbles'], ['fred']]
|
6308
|
+
*
|
6024
6309
|
* // using the "_.property" callback shorthand
|
6025
|
-
* _.map(_.partition(users, 'active'),
|
6310
|
+
* _.map(_.partition(users, 'active'), mapper);
|
6026
6311
|
* // => [['fred'], ['barney', 'pebbles']]
|
6027
6312
|
*/
|
6028
6313
|
var partition = createAggregator(function(result, value, key) {
|
@@ -6053,7 +6338,7 @@
|
|
6053
6338
|
* // => [36, 40] (iteration order is not guaranteed)
|
6054
6339
|
*/
|
6055
6340
|
function pluck(collection, key) {
|
6056
|
-
return map(collection, baseProperty(key
|
6341
|
+
return map(collection, baseProperty(key));
|
6057
6342
|
}
|
6058
6343
|
|
6059
6344
|
/**
|
@@ -6064,6 +6349,12 @@
|
|
6064
6349
|
* value. The `iteratee` is bound to `thisArg`and invoked with four arguments;
|
6065
6350
|
* (accumulator, value, index|key, collection).
|
6066
6351
|
*
|
6352
|
+
* Many lodash methods are guarded to work as interatees for methods like
|
6353
|
+
* `_.reduce`, `_.reduceRight`, and `_.transform`.
|
6354
|
+
*
|
6355
|
+
* The guarded methods are:
|
6356
|
+
* `assign`, `defaults`, `merge`, and `sortAllBy`
|
6357
|
+
*
|
6067
6358
|
* @static
|
6068
6359
|
* @memberOf _
|
6069
6360
|
* @alias foldl, inject
|
@@ -6120,6 +6411,10 @@
|
|
6120
6411
|
* If a property name is provided for `predicate` the created "_.property"
|
6121
6412
|
* style callback returns the property value of the given element.
|
6122
6413
|
*
|
6414
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6415
|
+
* style callback returns `true` for elements that have a matching property
|
6416
|
+
* value, else `false`.
|
6417
|
+
*
|
6123
6418
|
* If an object is provided for `predicate` the created "_.matches" style
|
6124
6419
|
* callback returns `true` for elements that have the properties of the given
|
6125
6420
|
* object, else `false`.
|
@@ -6143,13 +6438,17 @@
|
|
6143
6438
|
* { 'user': 'fred', 'age': 40, 'active': true }
|
6144
6439
|
* ];
|
6145
6440
|
*
|
6146
|
-
* // using the "_.
|
6147
|
-
* _.pluck(_.reject(users, 'active'), 'user');
|
6441
|
+
* // using the "_.matches" callback shorthand
|
6442
|
+
* _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user');
|
6148
6443
|
* // => ['barney']
|
6149
6444
|
*
|
6150
|
-
* // using the "_.
|
6151
|
-
* _.pluck(_.reject(users,
|
6445
|
+
* // using the "_.matchesProperty" callback shorthand
|
6446
|
+
* _.pluck(_.reject(users, 'active', false), 'user');
|
6152
6447
|
* // => ['fred']
|
6448
|
+
*
|
6449
|
+
* // using the "_.property" callback shorthand
|
6450
|
+
* _.pluck(_.reject(users, 'active'), 'user');
|
6451
|
+
* // => ['barney']
|
6153
6452
|
*/
|
6154
6453
|
function reject(collection, predicate, thisArg) {
|
6155
6454
|
var func = isArray(collection) ? arrayFilter : baseFilter;
|
@@ -6254,6 +6553,10 @@
|
|
6254
6553
|
* If a property name is provided for `predicate` the created "_.property"
|
6255
6554
|
* style callback returns the property value of the given element.
|
6256
6555
|
*
|
6556
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6557
|
+
* style callback returns `true` for elements that have a matching property
|
6558
|
+
* value, else `false`.
|
6559
|
+
*
|
6257
6560
|
* If an object is provided for `predicate` the created "_.matches" style
|
6258
6561
|
* callback returns `true` for elements that have the properties of the given
|
6259
6562
|
* object, else `false`.
|
@@ -6279,13 +6582,17 @@
|
|
6279
6582
|
* { 'user': 'fred', 'age': 40, 'active': true }
|
6280
6583
|
* ];
|
6281
6584
|
*
|
6585
|
+
* // using the "_.matches" callback shorthand
|
6586
|
+
* _.some(users, { 'age': 1, 'active': true });
|
6587
|
+
* // => false
|
6588
|
+
*
|
6589
|
+
* // using the "_.matchesProperty" callback shorthand
|
6590
|
+
* _.some(users, 'active', false);
|
6591
|
+
* // => true
|
6592
|
+
*
|
6282
6593
|
* // using the "_.property" callback shorthand
|
6283
6594
|
* _.some(users, 'active');
|
6284
6595
|
* // => true
|
6285
|
-
*
|
6286
|
-
* // using the "_.matches" callback shorthand
|
6287
|
-
* _.some(users, { 'age': 1 });
|
6288
|
-
* // => false
|
6289
6596
|
*/
|
6290
6597
|
function some(collection, predicate, thisArg) {
|
6291
6598
|
var func = isArray(collection) ? arraySome : baseSome;
|
@@ -6305,6 +6612,10 @@
|
|
6305
6612
|
* If a property name is provided for `predicate` the created "_.property"
|
6306
6613
|
* style callback returns the property value of the given element.
|
6307
6614
|
*
|
6615
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
6616
|
+
* style callback returns `true` for elements that have a matching property
|
6617
|
+
* value, else `false`.
|
6618
|
+
*
|
6308
6619
|
* If an object is provided for `predicate` the created "_.matches" style
|
6309
6620
|
* callback returns `true` for elements that have the properties of the given
|
6310
6621
|
* object, else `false`.
|
@@ -6384,7 +6695,7 @@
|
|
6384
6695
|
props = baseFlatten(args, false, false, 1),
|
6385
6696
|
result = isLength(length) ? Array(length) : [];
|
6386
6697
|
|
6387
|
-
baseEach(collection, function(value
|
6698
|
+
baseEach(collection, function(value) {
|
6388
6699
|
var length = props.length,
|
6389
6700
|
criteria = Array(length);
|
6390
6701
|
|
@@ -6401,6 +6712,11 @@
|
|
6401
6712
|
* source object, returning an array of all elements that have equivalent
|
6402
6713
|
* property values.
|
6403
6714
|
*
|
6715
|
+
* **Note:** This method supports comparing arrays, booleans, `Date` objects,
|
6716
|
+
* numbers, `Object` objects, regexes, and strings. Objects are compared by
|
6717
|
+
* their own, not inherited, enumerable properties. For comparing a single
|
6718
|
+
* own or inherited property value see `_.matchesProperty`.
|
6719
|
+
*
|
6404
6720
|
* @static
|
6405
6721
|
* @memberOf _
|
6406
6722
|
* @category Collection
|
@@ -6410,18 +6726,15 @@
|
|
6410
6726
|
* @example
|
6411
6727
|
*
|
6412
6728
|
* var users = [
|
6413
|
-
* { 'user': 'barney', 'age': 36, '
|
6414
|
-
* { 'user': 'fred', 'age': 40, '
|
6729
|
+
* { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] },
|
6730
|
+
* { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] }
|
6415
6731
|
* ];
|
6416
6732
|
*
|
6417
|
-
* _.pluck(_.where(users, { 'age': 36 }), 'user');
|
6733
|
+
* _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user');
|
6418
6734
|
* // => ['barney']
|
6419
6735
|
*
|
6420
6736
|
* _.pluck(_.where(users, { 'pets': ['dino'] }), 'user');
|
6421
6737
|
* // => ['fred']
|
6422
|
-
*
|
6423
|
-
* _.pluck(_.where(users, { 'status': 'busy' }), 'user');
|
6424
|
-
* // => ['barney', 'fred']
|
6425
6738
|
*/
|
6426
6739
|
function where(collection, source) {
|
6427
6740
|
return filter(collection, baseMatches(source));
|
@@ -6471,8 +6784,8 @@
|
|
6471
6784
|
* // => logs 'done saving!' after the two async saves have completed
|
6472
6785
|
*/
|
6473
6786
|
function after(n, func) {
|
6474
|
-
if (
|
6475
|
-
if (
|
6787
|
+
if (typeof func != 'function') {
|
6788
|
+
if (typeof n == 'function') {
|
6476
6789
|
var temp = n;
|
6477
6790
|
n = func;
|
6478
6791
|
func = temp;
|
@@ -6530,8 +6843,8 @@
|
|
6530
6843
|
*/
|
6531
6844
|
function before(n, func) {
|
6532
6845
|
var result;
|
6533
|
-
if (
|
6534
|
-
if (
|
6846
|
+
if (typeof func != 'function') {
|
6847
|
+
if (typeof n == 'function') {
|
6535
6848
|
var temp = n;
|
6536
6849
|
n = func;
|
6537
6850
|
func = temp;
|
@@ -6853,7 +7166,7 @@
|
|
6853
7166
|
maxWait = false,
|
6854
7167
|
trailing = true;
|
6855
7168
|
|
6856
|
-
if (
|
7169
|
+
if (typeof func != 'function') {
|
6857
7170
|
throw new TypeError(FUNC_ERROR_TEXT);
|
6858
7171
|
}
|
6859
7172
|
wait = wait < 0 ? 0 : wait;
|
@@ -7023,7 +7336,7 @@
|
|
7023
7336
|
length = funcs.length;
|
7024
7337
|
|
7025
7338
|
if (!length) {
|
7026
|
-
return function() {};
|
7339
|
+
return function() { return arguments[0]; };
|
7027
7340
|
}
|
7028
7341
|
if (!arrayEvery(funcs, isFunction)) {
|
7029
7342
|
throw new TypeError(FUNC_ERROR_TEXT);
|
@@ -7068,7 +7381,7 @@
|
|
7068
7381
|
fromIndex = funcs.length - 1;
|
7069
7382
|
|
7070
7383
|
if (fromIndex < 0) {
|
7071
|
-
return function() {};
|
7384
|
+
return function() { return arguments[0]; };
|
7072
7385
|
}
|
7073
7386
|
if (!arrayEvery(funcs, isFunction)) {
|
7074
7387
|
throw new TypeError(FUNC_ERROR_TEXT);
|
@@ -7138,7 +7451,7 @@
|
|
7138
7451
|
* // => { 'user': 'barney' }
|
7139
7452
|
*/
|
7140
7453
|
function memoize(func, resolver) {
|
7141
|
-
if (
|
7454
|
+
if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
|
7142
7455
|
throw new TypeError(FUNC_ERROR_TEXT);
|
7143
7456
|
}
|
7144
7457
|
var memoized = function() {
|
@@ -7176,7 +7489,7 @@
|
|
7176
7489
|
* // => [1, 3, 5]
|
7177
7490
|
*/
|
7178
7491
|
function negate(predicate) {
|
7179
|
-
if (
|
7492
|
+
if (typeof predicate != 'function') {
|
7180
7493
|
throw new TypeError(FUNC_ERROR_TEXT);
|
7181
7494
|
}
|
7182
7495
|
return function() {
|
@@ -7191,7 +7504,6 @@
|
|
7191
7504
|
*
|
7192
7505
|
* @static
|
7193
7506
|
* @memberOf _
|
7194
|
-
* @type Function
|
7195
7507
|
* @category Function
|
7196
7508
|
* @param {Function} func The function to restrict.
|
7197
7509
|
* @returns {Function} Returns the new restricted function.
|
@@ -7314,6 +7626,45 @@
|
|
7314
7626
|
return createWrapper(func, REARG_FLAG, null, null, null, indexes);
|
7315
7627
|
}
|
7316
7628
|
|
7629
|
+
/**
|
7630
|
+
* Creates a function that invokes `func` with the `this` binding of the
|
7631
|
+
* created function and the array of arguments provided to the created
|
7632
|
+
* function much like [Function#apply](http://es5.github.io/#x15.3.4.3).
|
7633
|
+
*
|
7634
|
+
* @static
|
7635
|
+
* @memberOf _
|
7636
|
+
* @category Function
|
7637
|
+
* @param {Function} func The function to spread arguments over.
|
7638
|
+
* @returns {*} Returns the new function.
|
7639
|
+
* @example
|
7640
|
+
*
|
7641
|
+
* var spread = _.spread(function(who, what) {
|
7642
|
+
* return who + ' says ' + what;
|
7643
|
+
* });
|
7644
|
+
*
|
7645
|
+
* spread(['Fred', 'hello']);
|
7646
|
+
* // => 'Fred says hello'
|
7647
|
+
*
|
7648
|
+
* // with a Promise
|
7649
|
+
* var numbers = Promise.all([
|
7650
|
+
* Promise.resolve(40),
|
7651
|
+
* Promise.resolve(36)
|
7652
|
+
* ]);
|
7653
|
+
*
|
7654
|
+
* numbers.then(_.spread(function(x, y) {
|
7655
|
+
* return x + y;
|
7656
|
+
* }));
|
7657
|
+
* // => a Promise of 76
|
7658
|
+
*/
|
7659
|
+
function spread(func) {
|
7660
|
+
if (typeof func != 'function') {
|
7661
|
+
throw new TypeError(FUNC_ERROR_TEXT);
|
7662
|
+
}
|
7663
|
+
return function(array) {
|
7664
|
+
return func.apply(this, array);
|
7665
|
+
};
|
7666
|
+
}
|
7667
|
+
|
7317
7668
|
/**
|
7318
7669
|
* Creates a function that only invokes `func` at most once per every `wait`
|
7319
7670
|
* milliseconds. The created function comes with a `cancel` method to cancel
|
@@ -7356,7 +7707,7 @@
|
|
7356
7707
|
var leading = true,
|
7357
7708
|
trailing = true;
|
7358
7709
|
|
7359
|
-
if (
|
7710
|
+
if (typeof func != 'function') {
|
7360
7711
|
throw new TypeError(FUNC_ERROR_TEXT);
|
7361
7712
|
}
|
7362
7713
|
if (options === false) {
|
@@ -7662,7 +8013,8 @@
|
|
7662
8013
|
* arguments; (value, other [, index|key]).
|
7663
8014
|
*
|
7664
8015
|
* **Note:** This method supports comparing arrays, booleans, `Date` objects,
|
7665
|
-
* numbers, `Object` objects, regexes, and strings.
|
8016
|
+
* numbers, `Object` objects, regexes, and strings. Objects are compared by
|
8017
|
+
* their own, not inherited, enumerable properties. Functions and DOM nodes
|
7666
8018
|
* are **not** supported. Provide a customizer function to extend support
|
7667
8019
|
* for comparing other values.
|
7668
8020
|
*
|
@@ -7832,7 +8184,7 @@
|
|
7832
8184
|
* @static
|
7833
8185
|
* @memberOf _
|
7834
8186
|
* @category Lang
|
7835
|
-
* @param {Object}
|
8187
|
+
* @param {Object} object The object to inspect.
|
7836
8188
|
* @param {Object} source The object of property values to match.
|
7837
8189
|
* @param {Function} [customizer] The function to customize comparing values.
|
7838
8190
|
* @param {*} [thisArg] The `this` binding of `customizer`.
|
@@ -8261,6 +8613,10 @@
|
|
8261
8613
|
* If a property name is provided for `predicate` the created "_.property"
|
8262
8614
|
* style callback returns the property value of the given element.
|
8263
8615
|
*
|
8616
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
8617
|
+
* style callback returns `true` for elements that have a matching property
|
8618
|
+
* value, else `false`.
|
8619
|
+
*
|
8264
8620
|
* If an object is provided for `predicate` the created "_.matches" style
|
8265
8621
|
* callback returns `true` for elements that have the properties of the given
|
8266
8622
|
* object, else `false`.
|
@@ -8286,9 +8642,13 @@
|
|
8286
8642
|
* // => 'barney' (iteration order is not guaranteed)
|
8287
8643
|
*
|
8288
8644
|
* // using the "_.matches" callback shorthand
|
8289
|
-
* _.findKey(users, { 'age': 1 });
|
8645
|
+
* _.findKey(users, { 'age': 1, 'active': true });
|
8290
8646
|
* // => 'pebbles'
|
8291
8647
|
*
|
8648
|
+
* // using the "_.matchesProperty" callback shorthand
|
8649
|
+
* _.findKey(users, 'active', false);
|
8650
|
+
* // => 'fred'
|
8651
|
+
*
|
8292
8652
|
* // using the "_.property" callback shorthand
|
8293
8653
|
* _.findKey(users, 'active');
|
8294
8654
|
* // => 'barney'
|
@@ -8305,6 +8665,10 @@
|
|
8305
8665
|
* If a property name is provided for `predicate` the created "_.property"
|
8306
8666
|
* style callback returns the property value of the given element.
|
8307
8667
|
*
|
8668
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
8669
|
+
* style callback returns `true` for elements that have a matching property
|
8670
|
+
* value, else `false`.
|
8671
|
+
*
|
8308
8672
|
* If an object is provided for `predicate` the created "_.matches" style
|
8309
8673
|
* callback returns `true` for elements that have the properties of the given
|
8310
8674
|
* object, else `false`.
|
@@ -8330,9 +8694,13 @@
|
|
8330
8694
|
* // => returns `pebbles` assuming `_.findKey` returns `barney`
|
8331
8695
|
*
|
8332
8696
|
* // using the "_.matches" callback shorthand
|
8333
|
-
* _.findLastKey(users, { 'age': 36 });
|
8697
|
+
* _.findLastKey(users, { 'age': 36, 'active': true });
|
8334
8698
|
* // => 'barney'
|
8335
8699
|
*
|
8700
|
+
* // using the "_.matchesProperty" callback shorthand
|
8701
|
+
* _.findLastKey(users, 'active', false);
|
8702
|
+
* // => 'fred'
|
8703
|
+
*
|
8336
8704
|
* // using the "_.property" callback shorthand
|
8337
8705
|
* _.findLastKey(users, 'active');
|
8338
8706
|
* // => 'pebbles'
|
@@ -8620,7 +8988,7 @@
|
|
8620
8988
|
|
8621
8989
|
var Ctor = object.constructor,
|
8622
8990
|
index = -1,
|
8623
|
-
isProto = typeof Ctor == 'function' && Ctor.prototype
|
8991
|
+
isProto = typeof Ctor == 'function' && Ctor.prototype === object,
|
8624
8992
|
result = Array(length),
|
8625
8993
|
skipIndexes = length > 0;
|
8626
8994
|
|
@@ -8645,6 +9013,10 @@
|
|
8645
9013
|
* If a property name is provided for `iteratee` the created "_.property"
|
8646
9014
|
* style callback returns the property value of the given element.
|
8647
9015
|
*
|
9016
|
+
* If value is also provided for `thisArg` the created "_.matchesProperty"
|
9017
|
+
* style callback returns `true` for elements that have a matching property
|
9018
|
+
* value, else `false`.
|
9019
|
+
*
|
8648
9020
|
* If an object is provided for `iteratee` the created "_.matches" style
|
8649
9021
|
* callback returns `true` for elements that have the properties of the given
|
8650
9022
|
* object, else `false`.
|
@@ -8913,7 +9285,7 @@
|
|
8913
9285
|
if (isArr) {
|
8914
9286
|
accumulator = isArray(object) ? new Ctor : [];
|
8915
9287
|
} else {
|
8916
|
-
accumulator = baseCreate(
|
9288
|
+
accumulator = baseCreate(isFunction(Ctor) && Ctor.prototype);
|
8917
9289
|
}
|
8918
9290
|
} else {
|
8919
9291
|
accumulator = {};
|
@@ -9743,7 +10115,7 @@
|
|
9743
10115
|
return string;
|
9744
10116
|
}
|
9745
10117
|
if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
|
9746
|
-
return string.slice(trimmedLeftIndex(string))
|
10118
|
+
return string.slice(trimmedLeftIndex(string));
|
9747
10119
|
}
|
9748
10120
|
return string.slice(charsLeftIndex(string, (chars + '')));
|
9749
10121
|
}
|
@@ -9773,7 +10145,7 @@
|
|
9773
10145
|
return string;
|
9774
10146
|
}
|
9775
10147
|
if (guard ? isIterateeCall(value, chars, guard) : chars == null) {
|
9776
|
-
return string.slice(0, trimmedRightIndex(string) + 1)
|
10148
|
+
return string.slice(0, trimmedRightIndex(string) + 1);
|
9777
10149
|
}
|
9778
10150
|
return string.slice(0, charsRightIndex(string, (chars + '')) + 1);
|
9779
10151
|
}
|
@@ -9916,8 +10288,8 @@
|
|
9916
10288
|
/*------------------------------------------------------------------------*/
|
9917
10289
|
|
9918
10290
|
/**
|
9919
|
-
* Attempts to invoke `func`, returning either the result or the caught
|
9920
|
-
*
|
10291
|
+
* Attempts to invoke `func`, returning either the result or the caught error
|
10292
|
+
* object. Any additional arguments are provided to `func` when it is invoked.
|
9921
10293
|
*
|
9922
10294
|
* @static
|
9923
10295
|
* @memberOf _
|
@@ -9927,9 +10299,9 @@
|
|
9927
10299
|
* @example
|
9928
10300
|
*
|
9929
10301
|
* // avoid throwing errors for invalid selectors
|
9930
|
-
* var elements = _.attempt(function() {
|
10302
|
+
* var elements = _.attempt(function(selector) {
|
9931
10303
|
* return document.querySelectorAll(selector);
|
9932
|
-
* });
|
10304
|
+
* }, '>_>');
|
9933
10305
|
*
|
9934
10306
|
* if (_.isError(elements)) {
|
9935
10307
|
* elements = [];
|
@@ -9937,17 +10309,18 @@
|
|
9937
10309
|
*/
|
9938
10310
|
function attempt(func) {
|
9939
10311
|
try {
|
9940
|
-
return func();
|
10312
|
+
return func.apply(undefined, baseSlice(arguments, 1));
|
9941
10313
|
} catch(e) {
|
9942
|
-
return isError(e) ? e : Error(e);
|
10314
|
+
return isError(e) ? e : new Error(e);
|
9943
10315
|
}
|
9944
10316
|
}
|
9945
10317
|
|
9946
10318
|
/**
|
9947
|
-
* Creates a function
|
9948
|
-
*
|
9949
|
-
*
|
9950
|
-
*
|
10319
|
+
* Creates a function that invokes `func` with the `this` binding of `thisArg`
|
10320
|
+
* and arguments of the created function. If `func` is a property name the
|
10321
|
+
* created callback returns the property value for a given element. If `func`
|
10322
|
+
* is an object the created callback returns `true` for elements that contain
|
10323
|
+
* the equivalent object properties, otherwise it returns `false`.
|
9951
10324
|
*
|
9952
10325
|
* @static
|
9953
10326
|
* @memberOf _
|
@@ -10031,6 +10404,11 @@
|
|
10031
10404
|
* and `source`, returning `true` if the given object has equivalent property
|
10032
10405
|
* values, else `false`.
|
10033
10406
|
*
|
10407
|
+
* **Note:** This method supports comparing arrays, booleans, `Date` objects,
|
10408
|
+
* numbers, `Object` objects, regexes, and strings. Objects are compared by
|
10409
|
+
* their own, not inherited, enumerable properties. For comparing a single
|
10410
|
+
* own or inherited property value see `_.matchesProperty`.
|
10411
|
+
*
|
10034
10412
|
* @static
|
10035
10413
|
* @memberOf _
|
10036
10414
|
* @category Utility
|
@@ -10039,22 +10417,48 @@
|
|
10039
10417
|
* @example
|
10040
10418
|
*
|
10041
10419
|
* var users = [
|
10042
|
-
* { 'user': '
|
10043
|
-
* { 'user': '
|
10420
|
+
* { 'user': 'barney', 'age': 36, 'active': true },
|
10421
|
+
* { 'user': 'fred', 'age': 40, 'active': false }
|
10044
10422
|
* ];
|
10045
10423
|
*
|
10046
|
-
*
|
10047
|
-
*
|
10048
|
-
* _.filter(users, matchesAge);
|
10049
|
-
* // => [{ 'user': 'barney', 'age': 36 }]
|
10050
|
-
*
|
10051
|
-
* _.find(users, matchesAge);
|
10052
|
-
* // => { 'user': 'barney', 'age': 36 }
|
10424
|
+
* _.filter(users, _.matches({ 'age': 40, 'active': false }));
|
10425
|
+
* // => [{ 'user': 'fred', 'age': 40, 'active': false }]
|
10053
10426
|
*/
|
10054
10427
|
function matches(source) {
|
10055
10428
|
return baseMatches(baseClone(source, true));
|
10056
10429
|
}
|
10057
10430
|
|
10431
|
+
/**
|
10432
|
+
* Creates a function which compares the property value of `key` on a given
|
10433
|
+
* object to `value`.
|
10434
|
+
*
|
10435
|
+
* **Note:** This method supports comparing arrays, booleans, `Date` objects,
|
10436
|
+
* numbers, `Object` objects, regexes, and strings. Objects are compared by
|
10437
|
+
* their own, not inherited, enumerable properties.
|
10438
|
+
*
|
10439
|
+
* @static
|
10440
|
+
* @memberOf _
|
10441
|
+
* @category Utility
|
10442
|
+
* @param {string} key The key of the property to get.
|
10443
|
+
* @param {*} value The value to compare.
|
10444
|
+
* @returns {Function} Returns the new function.
|
10445
|
+
* @example
|
10446
|
+
*
|
10447
|
+
* var users = [
|
10448
|
+
* { 'user': 'barney', 'age': 36 },
|
10449
|
+
* { 'user': 'fred', 'age': 40 },
|
10450
|
+
* { 'user': 'pebbles', 'age': 1 }
|
10451
|
+
* ];
|
10452
|
+
*
|
10453
|
+
* var matchFred = _.matchesProperty('user', 'fred');
|
10454
|
+
*
|
10455
|
+
* _.find(users, matchFred);
|
10456
|
+
* // => { 'user': 'fred', 'age': 40 }
|
10457
|
+
*/
|
10458
|
+
function matchesProperty(key, value) {
|
10459
|
+
return baseMatchesProperty(key + '', baseClone(value, true));
|
10460
|
+
}
|
10461
|
+
|
10058
10462
|
/**
|
10059
10463
|
* Adds all own enumerable function properties of a source object to the
|
10060
10464
|
* destination object. If `object` is a function then methods are added to
|
@@ -10077,6 +10481,9 @@
|
|
10077
10481
|
* });
|
10078
10482
|
* }
|
10079
10483
|
*
|
10484
|
+
* // use `_.runInContext` to avoid potential conflicts (esp. in Node.js)
|
10485
|
+
* var _ = require('lodash').runInContext();
|
10486
|
+
*
|
10080
10487
|
* _.mixin({ 'vowels': vowels });
|
10081
10488
|
* _.vowels('fred');
|
10082
10489
|
* // => ['e']
|
@@ -10351,7 +10758,11 @@
|
|
10351
10758
|
/*------------------------------------------------------------------------*/
|
10352
10759
|
|
10353
10760
|
// Ensure `new LodashWrapper` is an instance of `lodash`.
|
10354
|
-
LodashWrapper.prototype = lodash.prototype;
|
10761
|
+
LodashWrapper.prototype = baseCreate(lodash.prototype);
|
10762
|
+
|
10763
|
+
// Ensure `new LazyWraper` is an instance of `LodashWrapper`
|
10764
|
+
LazyWrapper.prototype = baseCreate(LodashWrapper.prototype);
|
10765
|
+
LazyWrapper.prototype.constructor = LazyWrapper;
|
10355
10766
|
|
10356
10767
|
// Add functions to the `Map` cache.
|
10357
10768
|
MapCache.prototype['delete'] = mapDelete;
|
@@ -10392,6 +10803,7 @@
|
|
10392
10803
|
lodash.dropRight = dropRight;
|
10393
10804
|
lodash.dropRightWhile = dropRightWhile;
|
10394
10805
|
lodash.dropWhile = dropWhile;
|
10806
|
+
lodash.fill = fill;
|
10395
10807
|
lodash.filter = filter;
|
10396
10808
|
lodash.flatten = flatten;
|
10397
10809
|
lodash.flattenDeep = flattenDeep;
|
@@ -10415,6 +10827,7 @@
|
|
10415
10827
|
lodash.map = map;
|
10416
10828
|
lodash.mapValues = mapValues;
|
10417
10829
|
lodash.matches = matches;
|
10830
|
+
lodash.matchesProperty = matchesProperty;
|
10418
10831
|
lodash.memoize = memoize;
|
10419
10832
|
lodash.merge = merge;
|
10420
10833
|
lodash.mixin = mixin;
|
@@ -10440,6 +10853,7 @@
|
|
10440
10853
|
lodash.slice = slice;
|
10441
10854
|
lodash.sortBy = sortBy;
|
10442
10855
|
lodash.sortByAll = sortByAll;
|
10856
|
+
lodash.spread = spread;
|
10443
10857
|
lodash.take = take;
|
10444
10858
|
lodash.takeRight = takeRight;
|
10445
10859
|
lodash.takeRightWhile = takeRightWhile;
|
@@ -10613,14 +11027,15 @@
|
|
10613
11027
|
|
10614
11028
|
// Add `LazyWrapper` methods that accept an `iteratee` value.
|
10615
11029
|
arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
|
10616
|
-
var isFilter = index == LAZY_FILTER_FLAG
|
11030
|
+
var isFilter = index == LAZY_FILTER_FLAG,
|
11031
|
+
isWhile = index == LAZY_WHILE_FLAG;
|
10617
11032
|
|
10618
11033
|
LazyWrapper.prototype[methodName] = function(iteratee, thisArg) {
|
10619
11034
|
var result = this.clone(),
|
10620
|
-
filtered = result.
|
10621
|
-
iteratees = result.
|
11035
|
+
filtered = result.__filtered__,
|
11036
|
+
iteratees = result.__iteratees__ || (result.__iteratees__ = []);
|
10622
11037
|
|
10623
|
-
result.
|
11038
|
+
result.__filtered__ = filtered || isFilter || (isWhile && result.__dir__ < 0);
|
10624
11039
|
iteratees.push({ 'iteratee': getCallback(iteratee, thisArg, 3), 'type': index });
|
10625
11040
|
return result;
|
10626
11041
|
};
|
@@ -10628,19 +11043,19 @@
|
|
10628
11043
|
|
10629
11044
|
// Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
|
10630
11045
|
arrayEach(['drop', 'take'], function(methodName, index) {
|
10631
|
-
var countName = methodName + '
|
11046
|
+
var countName = '__' + methodName + 'Count__',
|
10632
11047
|
whileName = methodName + 'While';
|
10633
11048
|
|
10634
11049
|
LazyWrapper.prototype[methodName] = function(n) {
|
10635
|
-
n = n == null ? 1 : nativeMax(
|
11050
|
+
n = n == null ? 1 : nativeMax(floor(n) || 0, 0);
|
10636
11051
|
|
10637
11052
|
var result = this.clone();
|
10638
|
-
if (result.
|
11053
|
+
if (result.__filtered__) {
|
10639
11054
|
var value = result[countName];
|
10640
11055
|
result[countName] = index ? nativeMin(value, n) : (value + n);
|
10641
11056
|
} else {
|
10642
|
-
var views = result.
|
10643
|
-
views.push({ 'size': n, 'type': methodName + (result.
|
11057
|
+
var views = result.__views__ || (result.__views__ = []);
|
11058
|
+
views.push({ 'size': n, 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') });
|
10644
11059
|
}
|
10645
11060
|
return result;
|
10646
11061
|
};
|
@@ -10656,7 +11071,7 @@
|
|
10656
11071
|
|
10657
11072
|
// Add `LazyWrapper` methods for `_.first` and `_.last`.
|
10658
11073
|
arrayEach(['first', 'last'], function(methodName, index) {
|
10659
|
-
var takeName = 'take' + (index ? 'Right': '');
|
11074
|
+
var takeName = 'take' + (index ? 'Right' : '');
|
10660
11075
|
|
10661
11076
|
LazyWrapper.prototype[methodName] = function() {
|
10662
11077
|
return this[takeName](1).value()[0];
|
@@ -10678,19 +11093,18 @@
|
|
10678
11093
|
createCallback = index ? baseMatches : baseProperty;
|
10679
11094
|
|
10680
11095
|
LazyWrapper.prototype[methodName] = function(value) {
|
10681
|
-
return this[operationName](createCallback(
|
11096
|
+
return this[operationName](createCallback(value));
|
10682
11097
|
};
|
10683
11098
|
});
|
10684
11099
|
|
10685
|
-
LazyWrapper.prototype.
|
10686
|
-
|
10687
|
-
|
10688
|
-
isRight = this.dir < 0;
|
11100
|
+
LazyWrapper.prototype.compact = function() {
|
11101
|
+
return this.filter(identity);
|
11102
|
+
};
|
10689
11103
|
|
11104
|
+
LazyWrapper.prototype.dropWhile = function(iteratee, thisArg) {
|
11105
|
+
var done;
|
10690
11106
|
iteratee = getCallback(iteratee, thisArg, 3);
|
10691
11107
|
return this.filter(function(value, index, array) {
|
10692
|
-
done = done && (isRight ? index < lastIndex : index > lastIndex);
|
10693
|
-
lastIndex = index;
|
10694
11108
|
return done || (done = !iteratee(value, index, array));
|
10695
11109
|
});
|
10696
11110
|
};
|
@@ -10713,6 +11127,10 @@
|
|
10713
11127
|
return result;
|
10714
11128
|
};
|
10715
11129
|
|
11130
|
+
LazyWrapper.prototype.toArray = function() {
|
11131
|
+
return this.drop(0);
|
11132
|
+
};
|
11133
|
+
|
10716
11134
|
// Add `LazyWrapper` methods to `lodash.prototype`.
|
10717
11135
|
baseForOwn(LazyWrapper.prototype, function(func, methodName) {
|
10718
11136
|
var lodashFunc = lodash[methodName],
|
@@ -10740,8 +11158,8 @@
|
|
10740
11158
|
var wrapper = onlyLazy ? value : new LazyWrapper(this),
|
10741
11159
|
result = func.apply(wrapper, args);
|
10742
11160
|
|
10743
|
-
if (!retUnwrapped && (isHybrid || result.
|
10744
|
-
var actions = result.
|
11161
|
+
if (!retUnwrapped && (isHybrid || result.__actions__)) {
|
11162
|
+
var actions = result.__actions__ || (result.__actions__ = []);
|
10745
11163
|
actions.push({ 'func': thru, 'args': [interceptor], 'thisArg': lodash });
|
10746
11164
|
}
|
10747
11165
|
return new LodashWrapper(result, chainAll);
|
@@ -10774,9 +11192,11 @@
|
|
10774
11192
|
|
10775
11193
|
// Add chaining functions to the lodash wrapper.
|
10776
11194
|
lodash.prototype.chain = wrapperChain;
|
11195
|
+
lodash.prototype.commit = wrapperCommit;
|
11196
|
+
lodash.prototype.plant = wrapperPlant;
|
10777
11197
|
lodash.prototype.reverse = wrapperReverse;
|
10778
11198
|
lodash.prototype.toString = wrapperToString;
|
10779
|
-
lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
|
11199
|
+
lodash.prototype.run = lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
|
10780
11200
|
|
10781
11201
|
// Add function aliases to the lodash wrapper.
|
10782
11202
|
lodash.prototype.collect = lodash.prototype.map;
|