lodash-rails 1.0.0.rc.2 → 1.0.0.rc.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -1
- data/lib/lodash/rails/version.rb +1 -1
- data/vendor/assets/javascripts/lodash.js +231 -166
- data/vendor/assets/javascripts/lodash.min.js +39 -38
- metadata +2 -2
data/README.md
CHANGED
data/lib/lodash/rails/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Lo-Dash 1.0.0-rc.
|
2
|
+
* Lo-Dash 1.0.0-rc.3 <http://lodash.com>
|
3
3
|
* (c) 2012 John-David Dalton <http://allyoucanleet.com/>
|
4
4
|
* Based on Underscore.js 1.4.3 <http://underscorejs.org>
|
5
5
|
* (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
|
@@ -116,8 +116,7 @@
|
|
116
116
|
stringClass = '[object String]';
|
117
117
|
|
118
118
|
/** Detect various environments */
|
119
|
-
var
|
120
|
-
isIeOpera = !!window.attachEvent,
|
119
|
+
var isIeOpera = !!window.attachEvent,
|
121
120
|
isV8 = nativeBind && !/\n|true/.test(nativeBind + isIeOpera);
|
122
121
|
|
123
122
|
/* Detect if `Function#bind` exists and is inferred to be fast (all but V8) */
|
@@ -151,20 +150,23 @@
|
|
151
150
|
arrayRef.splice.call(hasObjectSpliceBug, 0, 1), hasObjectSpliceBug[0]);
|
152
151
|
|
153
152
|
/** Detect if an `arguments` object's indexes are non-enumerable (IE < 9) */
|
154
|
-
var
|
153
|
+
var nonEnumArgs = true;
|
155
154
|
|
156
155
|
(function() {
|
157
156
|
var props = [];
|
158
157
|
function ctor() { this.x = 1; }
|
159
158
|
ctor.prototype = { 'valueOf': 1, 'y': 1 };
|
160
159
|
for (var prop in new ctor) { props.push(prop); }
|
161
|
-
for (prop in arguments) {
|
160
|
+
for (prop in arguments) { nonEnumArgs = !prop; }
|
162
161
|
|
163
162
|
hasDontEnumBug = !/valueOf/.test(props);
|
164
163
|
iteratesOwnLast = props[0] != 'x';
|
165
164
|
}(1));
|
166
165
|
|
167
|
-
/** Detect if
|
166
|
+
/** Detect if `arguments` objects are `Object` objects (all but Opera < 10.5) */
|
167
|
+
var argsAreObjects = arguments.constructor == Object;
|
168
|
+
|
169
|
+
/** Detect if `arguments` objects [[Class]] is unresolvable (Firefox < 4, IE < 9) */
|
168
170
|
var noArgsClass = !isArguments(arguments);
|
169
171
|
|
170
172
|
/**
|
@@ -243,7 +245,29 @@
|
|
243
245
|
/*--------------------------------------------------------------------------*/
|
244
246
|
|
245
247
|
/**
|
246
|
-
*
|
248
|
+
* Creates a `lodash` object, that wraps the given `value`, to enable
|
249
|
+
* method chaining.
|
250
|
+
*
|
251
|
+
* The chainable wrapper functions are:
|
252
|
+
* `after`, `assign`, `bind`, `bindAll`, `bindKey`, `chain`, `compact`, `compose`,
|
253
|
+
* `concat`, `countBy`, `debounce`, `defaults`, `defer`, `delay`, `difference`,
|
254
|
+
* `filter`, `flatten`, `forEach`, `forIn`, `forOwn`, `functions`, `groupBy`,
|
255
|
+
* `initial`, `intersection`, `invert`, `invoke`, `keys`, `map`, `max`, `memoize`,
|
256
|
+
* `merge`, `min`, `object`, `omit`, `once`, `pairs`, `partial`, `pick`, `pluck`,
|
257
|
+
* `push`, `range`, `reject`, `rest`, `reverse`, `shuffle`, `slice`, `sort`,
|
258
|
+
* `sortBy`, `splice`, `tap`, `throttle`, `times`, `toArray`, `union`, `uniq`,
|
259
|
+
* `unshift`, `values`, `where`, `without`, `wrap`, and `zip`
|
260
|
+
*
|
261
|
+
* The non-chainable wrapper functions are:
|
262
|
+
* `clone`, `cloneDeep`, `contains`, `escape`, `every`, `find`, `has`, `identity`,
|
263
|
+
* `indexOf`, `isArguments`, `isArray`, `isBoolean`, `isDate`, `isElement`, `isEmpty`,
|
264
|
+
* `isEqual`, `isFinite`, `isFunction`, `isNaN`, `isNull`, `isNumber`, `isObject`,
|
265
|
+
* `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, `join`, `lastIndexOf`,
|
266
|
+
* `mixin`, `noConflict`, `pop`, `random`, `reduce`, `reduceRight`, `result`,
|
267
|
+
* `shift`, `size`, `some`, `sortedIndex`, `template`, `unescape`, and `uniqueId`
|
268
|
+
*
|
269
|
+
* The wrapper functions `first` and `last` return wrapped values when `n` is
|
270
|
+
* passed, otherwise they return unwrapped values.
|
247
271
|
*
|
248
272
|
* @name _
|
249
273
|
* @constructor
|
@@ -313,25 +337,6 @@
|
|
313
337
|
|
314
338
|
/*--------------------------------------------------------------------------*/
|
315
339
|
|
316
|
-
/**
|
317
|
-
* Creates a function from the given `args` and `body` strings.
|
318
|
-
*
|
319
|
-
* @private
|
320
|
-
* @param {String} args The comma separated function arguments.
|
321
|
-
* @param {String} body The function body.
|
322
|
-
* @returns {Function} The new function.
|
323
|
-
*/
|
324
|
-
function createFunction(args, body) {
|
325
|
-
// the newline, in `'\n}'`, is required to avoid errors if `body` ends
|
326
|
-
// with a single line comment
|
327
|
-
return window.eval('(function(' + args + ') {' + body + '\n})');
|
328
|
-
}
|
329
|
-
// use `eval` to avoid Firefox's unoptimized `Function` constructor
|
330
|
-
// http://bugzil.la/804933
|
331
|
-
if (isIeOpera || isV8 || !isFirefox) {
|
332
|
-
createFunction = Function;
|
333
|
-
}
|
334
|
-
|
335
340
|
/**
|
336
341
|
* The template used to create iterator functions.
|
337
342
|
*
|
@@ -373,7 +378,7 @@
|
|
373
378
|
|
374
379
|
// object iteration:
|
375
380
|
// add support for iterating over `arguments` objects if needed
|
376
|
-
' <% } else if (
|
381
|
+
' <% } else if (nonEnumArgs) { %>\n' +
|
377
382
|
' var length = iteratee.length; index = -1;\n' +
|
378
383
|
' if (length && isArguments(iteratee)) {\n' +
|
379
384
|
' while (++index < length) {\n' +
|
@@ -436,7 +441,7 @@
|
|
436
441
|
' }' +
|
437
442
|
' <% } %>' +
|
438
443
|
' <% } %>' +
|
439
|
-
' <% if (arrayLoop ||
|
444
|
+
' <% if (arrayLoop || nonEnumArgs) { %>\n}<% } %>\n' +
|
440
445
|
|
441
446
|
// add code to the bottom of the iteration function
|
442
447
|
'<%= bottom %>;\n' +
|
@@ -455,9 +460,9 @@
|
|
455
460
|
};
|
456
461
|
|
457
462
|
/**
|
458
|
-
* Reusable iterator options shared by `
|
463
|
+
* Reusable iterator options shared by `each`, `forIn`, and `forOwn`.
|
459
464
|
*/
|
460
|
-
var
|
465
|
+
var eachIteratorOptions = {
|
461
466
|
'args': 'collection, callback, thisArg',
|
462
467
|
'top': "callback = callback && typeof thisArg == 'undefined' ? callback : createCallback(callback, thisArg)",
|
463
468
|
'arrayLoop': 'if (callback(iteratee[index], index, collection) === false) return result',
|
@@ -611,9 +616,11 @@
|
|
611
616
|
* @param {Function|String} [func=identity|property] The function called per
|
612
617
|
* iteration or property name to query.
|
613
618
|
* @param {Mixed} [thisArg] The `this` binding of `callback`.
|
619
|
+
* @param {Object} [accumulating] Used to indicate that the callback should
|
620
|
+
* accept an `accumulator` argument.
|
614
621
|
* @returns {Function} Returns a callback function.
|
615
622
|
*/
|
616
|
-
function createCallback(func, thisArg) {
|
623
|
+
function createCallback(func, thisArg, accumulating) {
|
617
624
|
if (!func) {
|
618
625
|
return identity;
|
619
626
|
}
|
@@ -623,6 +630,11 @@
|
|
623
630
|
};
|
624
631
|
}
|
625
632
|
if (typeof thisArg != 'undefined') {
|
633
|
+
if (accumulating) {
|
634
|
+
return function(accumulator, value, index, object) {
|
635
|
+
return func.call(thisArg, accumulator, value, index, object);
|
636
|
+
};
|
637
|
+
}
|
626
638
|
return function(value, index, object) {
|
627
639
|
return func.call(thisArg, value, index, object);
|
628
640
|
};
|
@@ -651,7 +663,7 @@
|
|
651
663
|
'hasDontEnumBug': hasDontEnumBug,
|
652
664
|
'isKeysFast': isKeysFast,
|
653
665
|
'objectLoop': '',
|
654
|
-
'
|
666
|
+
'nonEnumArgs': nonEnumArgs,
|
655
667
|
'noCharByIndex': noCharByIndex,
|
656
668
|
'shadowed': shadowed,
|
657
669
|
'top': '',
|
@@ -668,7 +680,7 @@
|
|
668
680
|
data.firstArg = /^[^,]+/.exec(args)[0];
|
669
681
|
|
670
682
|
// create the function factory
|
671
|
-
var factory =
|
683
|
+
var factory = Function(
|
672
684
|
'createCallback, hasOwnProperty, isArguments, isString, objectTypes, ' +
|
673
685
|
'nativeKeys, propertyIsEnumerable',
|
674
686
|
'return function(' + args + ') {\n' + iteratorTemplate(data) + '\n}'
|
@@ -680,6 +692,21 @@
|
|
680
692
|
);
|
681
693
|
}
|
682
694
|
|
695
|
+
/**
|
696
|
+
* A function compiled to iterate `arguments` objects, arrays, objects, and
|
697
|
+
* strings consistenly across environments, executing the `callback` for each
|
698
|
+
* element in the `collection`. The `callback` is bound to `thisArg` and invoked
|
699
|
+
* with three arguments; (value, index|key, collection). Callbacks may exit
|
700
|
+
* iteration early by explicitly returning `false`.
|
701
|
+
*
|
702
|
+
* @private
|
703
|
+
* @param {Array|Object|String} collection The collection to iterate over.
|
704
|
+
* @param {Function} [callback=identity] The function called per iteration.
|
705
|
+
* @param {Mixed} [thisArg] The `this` binding of `callback`.
|
706
|
+
* @returns {Array|Object|String} Returns `collection`.
|
707
|
+
*/
|
708
|
+
var each = createIterator(eachIteratorOptions);
|
709
|
+
|
683
710
|
/**
|
684
711
|
* Used by `template` to escape characters for inclusion in compiled
|
685
712
|
* string literals.
|
@@ -839,7 +866,7 @@
|
|
839
866
|
* });
|
840
867
|
* // => alerts 'name' and 'bark' (order is not guaranteed)
|
841
868
|
*/
|
842
|
-
var forIn = createIterator(
|
869
|
+
var forIn = createIterator(eachIteratorOptions, forOwnIteratorOptions, {
|
843
870
|
'useHas': false
|
844
871
|
});
|
845
872
|
|
@@ -863,7 +890,7 @@
|
|
863
890
|
* });
|
864
891
|
* // => alerts '0', '1', and 'length' (order is not guaranteed)
|
865
892
|
*/
|
866
|
-
var forOwn = createIterator(
|
893
|
+
var forOwn = createIterator(eachIteratorOptions, forOwnIteratorOptions);
|
867
894
|
|
868
895
|
/**
|
869
896
|
* A fallback implementation of `isPlainObject` that checks if a given `value`
|
@@ -943,14 +970,8 @@
|
|
943
970
|
/*--------------------------------------------------------------------------*/
|
944
971
|
|
945
972
|
/**
|
946
|
-
* Creates a clone of `value`. If `deep` is `true`,
|
947
|
-
*
|
948
|
-
* DOM nodes are **not** cloned. The enumerable properties of `arguments` objects
|
949
|
-
* and objects created by constructors other than `Object` are cloned to plain
|
950
|
-
* `Object` objects.
|
951
|
-
*
|
952
|
-
* Note: Lo-Dash's deep clone functionality is loosely based on the structured clone algorithm.
|
953
|
-
* See http://www.w3.org/TR/html5/common-dom-interfaces.html#internal-structured-cloning-algorithm.
|
973
|
+
* Creates a clone of `value`. If `deep` is `true`, nested objects will also
|
974
|
+
* be cloned, otherwise they will be assigned by reference.
|
954
975
|
*
|
955
976
|
* @static
|
956
977
|
* @memberOf _
|
@@ -971,9 +992,6 @@
|
|
971
992
|
* { 'name': 'curly', 'age': 60 }
|
972
993
|
* ];
|
973
994
|
*
|
974
|
-
* _.clone({ 'name': 'moe' });
|
975
|
-
* // => { 'name': 'moe' }
|
976
|
-
*
|
977
995
|
* var shallow = _.clone(stooges);
|
978
996
|
* shallow[0] === stooges[0];
|
979
997
|
* // => true
|
@@ -1052,6 +1070,35 @@
|
|
1052
1070
|
return result;
|
1053
1071
|
}
|
1054
1072
|
|
1073
|
+
/**
|
1074
|
+
* Creates a deep clone of `value`. Functions and DOM nodes are **not** cloned.
|
1075
|
+
* The enumerable properties of `arguments` objects and objects created by
|
1076
|
+
* constructors other than `Object` are cloned to plain `Object` objects.
|
1077
|
+
*
|
1078
|
+
* Note: This function is loosely based on the structured clone algorithm.
|
1079
|
+
* See http://www.w3.org/TR/html5/common-dom-interfaces.html#internal-structured-cloning-algorithm.
|
1080
|
+
*
|
1081
|
+
* @static
|
1082
|
+
* @memberOf _
|
1083
|
+
* @category Objects
|
1084
|
+
* @param {Mixed} value The value to deep clone.
|
1085
|
+
* @returns {Mixed} Returns the deep cloned `value`.
|
1086
|
+
* @example
|
1087
|
+
*
|
1088
|
+
* var stooges = [
|
1089
|
+
* { 'name': 'moe', 'age': 40 },
|
1090
|
+
* { 'name': 'larry', 'age': 50 },
|
1091
|
+
* { 'name': 'curly', 'age': 60 }
|
1092
|
+
* ];
|
1093
|
+
*
|
1094
|
+
* var deep = _.cloneDeep(stooges);
|
1095
|
+
* deep[0] === stooges[0];
|
1096
|
+
* // => false
|
1097
|
+
*/
|
1098
|
+
function cloneDeep(value) {
|
1099
|
+
return clone(value, true);
|
1100
|
+
}
|
1101
|
+
|
1055
1102
|
/**
|
1056
1103
|
* Assigns own enumerable properties of source object(s) to the `destination`
|
1057
1104
|
* object for all `destination` properties that resolve to `null`/`undefined`.
|
@@ -1156,7 +1203,9 @@
|
|
1156
1203
|
* // => true
|
1157
1204
|
*/
|
1158
1205
|
var isArray = nativeIsArray || function(value) {
|
1159
|
-
|
1206
|
+
// `instanceof` may cause a memory leak in IE 7 if `value` is a host object
|
1207
|
+
// http://ajaxian.com/archives/working-aroung-the-instanceof-memory-leak
|
1208
|
+
return (argsAreObjects && value instanceof Array) || toString.call(value) == arrayClass;
|
1160
1209
|
};
|
1161
1210
|
|
1162
1211
|
/**
|
@@ -1190,7 +1239,7 @@
|
|
1190
1239
|
* // => true
|
1191
1240
|
*/
|
1192
1241
|
function isDate(value) {
|
1193
|
-
return toString.call(value) == dateClass;
|
1242
|
+
return value instanceof Date || toString.call(value) == dateClass;
|
1194
1243
|
}
|
1195
1244
|
|
1196
1245
|
/**
|
@@ -1327,8 +1376,8 @@
|
|
1327
1376
|
return false;
|
1328
1377
|
}
|
1329
1378
|
// in older versions of Opera, `arguments` objects have `Array` constructors
|
1330
|
-
var ctorA =
|
1331
|
-
ctorB =
|
1379
|
+
var ctorA = !argsAreObjects && isArguments(a) ? Object : a.constructor,
|
1380
|
+
ctorB = !argsAreObjects && isArguments(b) ? Object : b.constructor;
|
1332
1381
|
|
1333
1382
|
// non `Object` object instances with different constructors are not equal
|
1334
1383
|
if (ctorA != ctorB && !(
|
@@ -1448,7 +1497,7 @@
|
|
1448
1497
|
// fallback for older versions of Chrome and Safari
|
1449
1498
|
if (isFunction(/x/)) {
|
1450
1499
|
isFunction = function(value) {
|
1451
|
-
return toString.call(value) == funcClass;
|
1500
|
+
return value instanceof Function || toString.call(value) == funcClass;
|
1452
1501
|
};
|
1453
1502
|
}
|
1454
1503
|
|
@@ -1598,7 +1647,7 @@
|
|
1598
1647
|
* // => true
|
1599
1648
|
*/
|
1600
1649
|
function isRegExp(value) {
|
1601
|
-
return toString.call(value) == regexpClass;
|
1650
|
+
return value instanceof RegExp || toString.call(value) == regexpClass;
|
1602
1651
|
}
|
1603
1652
|
|
1604
1653
|
/**
|
@@ -1913,7 +1962,7 @@
|
|
1913
1962
|
: indexOf(collection, target, fromIndex)
|
1914
1963
|
) > -1;
|
1915
1964
|
} else {
|
1916
|
-
|
1965
|
+
each(collection, function(value) {
|
1917
1966
|
if (++index >= fromIndex) {
|
1918
1967
|
return !(result = value === target);
|
1919
1968
|
}
|
@@ -1951,6 +2000,7 @@
|
|
1951
2000
|
function countBy(collection, callback, thisArg) {
|
1952
2001
|
var result = {};
|
1953
2002
|
callback = createCallback(callback, thisArg);
|
2003
|
+
|
1954
2004
|
forEach(collection, function(value, key, collection) {
|
1955
2005
|
key = callback(value, key, collection);
|
1956
2006
|
(hasOwnProperty.call(result, key) ? result[key]++ : result[key] = 1);
|
@@ -1991,7 +2041,7 @@
|
|
1991
2041
|
}
|
1992
2042
|
}
|
1993
2043
|
} else {
|
1994
|
-
|
2044
|
+
each(collection, function(value, index, collection) {
|
1995
2045
|
return (result = !!callback(value, index, collection));
|
1996
2046
|
});
|
1997
2047
|
}
|
@@ -2031,7 +2081,7 @@
|
|
2031
2081
|
}
|
2032
2082
|
}
|
2033
2083
|
} else {
|
2034
|
-
|
2084
|
+
each(collection, function(value, index, collection) {
|
2035
2085
|
if (callback(value, index, collection)) {
|
2036
2086
|
result.push(value);
|
2037
2087
|
}
|
@@ -2063,6 +2113,7 @@
|
|
2063
2113
|
function find(collection, callback, thisArg) {
|
2064
2114
|
var result;
|
2065
2115
|
callback = createCallback(callback, thisArg);
|
2116
|
+
|
2066
2117
|
forEach(collection, function(value, index, collection) {
|
2067
2118
|
if (callback(value, index, collection)) {
|
2068
2119
|
result = value;
|
@@ -2094,7 +2145,21 @@
|
|
2094
2145
|
* _.forEach({ 'one': 1, 'two': 2, 'three': 3 }, alert);
|
2095
2146
|
* // => alerts each number value (order is not guaranteed)
|
2096
2147
|
*/
|
2097
|
-
|
2148
|
+
function forEach(collection, callback, thisArg) {
|
2149
|
+
if (callback && typeof thisArg == 'undefined' && isArray(collection)) {
|
2150
|
+
var index = -1,
|
2151
|
+
length = collection.length;
|
2152
|
+
|
2153
|
+
while (++index < length) {
|
2154
|
+
if (callback(collection[index], index, collection) === false) {
|
2155
|
+
break;
|
2156
|
+
}
|
2157
|
+
}
|
2158
|
+
} else {
|
2159
|
+
each(collection, callback, thisArg);
|
2160
|
+
}
|
2161
|
+
return collection;
|
2162
|
+
}
|
2098
2163
|
|
2099
2164
|
/**
|
2100
2165
|
* Creates an object composed of keys returned from running each element of
|
@@ -2125,6 +2190,7 @@
|
|
2125
2190
|
function groupBy(collection, callback, thisArg) {
|
2126
2191
|
var result = {};
|
2127
2192
|
callback = createCallback(callback, thisArg);
|
2193
|
+
|
2128
2194
|
forEach(collection, function(value, key, collection) {
|
2129
2195
|
key = callback(value, key, collection);
|
2130
2196
|
(hasOwnProperty.call(result, key) ? result[key] : result[key] = []).push(value);
|
@@ -2197,7 +2263,7 @@
|
|
2197
2263
|
result[index] = callback(collection[index], index, collection);
|
2198
2264
|
}
|
2199
2265
|
} else {
|
2200
|
-
|
2266
|
+
each(collection, function(value, key, collection) {
|
2201
2267
|
result[++index] = callback(value, key, collection);
|
2202
2268
|
});
|
2203
2269
|
}
|
@@ -2239,7 +2305,7 @@
|
|
2239
2305
|
? charAtCallback
|
2240
2306
|
: createCallback(callback, thisArg);
|
2241
2307
|
|
2242
|
-
|
2308
|
+
each(collection, function(value, index, collection) {
|
2243
2309
|
var current = callback(value, index, collection);
|
2244
2310
|
if (current > computed) {
|
2245
2311
|
computed = current;
|
@@ -2285,7 +2351,7 @@
|
|
2285
2351
|
? charAtCallback
|
2286
2352
|
: createCallback(callback, thisArg);
|
2287
2353
|
|
2288
|
-
|
2354
|
+
each(collection, function(value, index, collection) {
|
2289
2355
|
var current = callback(value, index, collection);
|
2290
2356
|
if (current < computed) {
|
2291
2357
|
computed = current;
|
@@ -2349,12 +2415,25 @@
|
|
2349
2415
|
*/
|
2350
2416
|
function reduce(collection, callback, accumulator, thisArg) {
|
2351
2417
|
var noaccum = arguments.length < 3;
|
2352
|
-
callback
|
2353
|
-
|
2354
|
-
|
2355
|
-
|
2356
|
-
|
2357
|
-
|
2418
|
+
callback = createCallback(callback, thisArg, indicatorObject);
|
2419
|
+
|
2420
|
+
if (isArray(collection)) {
|
2421
|
+
var index = -1,
|
2422
|
+
length = collection.length;
|
2423
|
+
|
2424
|
+
if (noaccum) {
|
2425
|
+
accumulator = collection[++index];
|
2426
|
+
}
|
2427
|
+
while (++index < length) {
|
2428
|
+
accumulator = callback(accumulator, collection[index], index, collection);
|
2429
|
+
}
|
2430
|
+
} else {
|
2431
|
+
each(collection, function(value, index, collection) {
|
2432
|
+
accumulator = noaccum
|
2433
|
+
? (noaccum = false, value)
|
2434
|
+
: callback(accumulator, value, index, collection)
|
2435
|
+
});
|
2436
|
+
}
|
2358
2437
|
return accumulator;
|
2359
2438
|
}
|
2360
2439
|
|
@@ -2387,12 +2466,12 @@
|
|
2387
2466
|
} else if (noCharByIndex && isString(collection)) {
|
2388
2467
|
iteratee = collection.split('');
|
2389
2468
|
}
|
2390
|
-
callback
|
2469
|
+
callback = createCallback(callback, thisArg, indicatorObject);
|
2391
2470
|
forEach(collection, function(value, index, collection) {
|
2392
2471
|
index = props ? props[--length] : --length;
|
2393
2472
|
accumulator = noaccum
|
2394
2473
|
? (noaccum = false, iteratee[index])
|
2395
|
-
: callback
|
2474
|
+
: callback(accumulator, iteratee[index], index, collection);
|
2396
2475
|
});
|
2397
2476
|
return accumulator;
|
2398
2477
|
}
|
@@ -2506,7 +2585,7 @@
|
|
2506
2585
|
}
|
2507
2586
|
}
|
2508
2587
|
} else {
|
2509
|
-
|
2588
|
+
each(collection, function(value, index, collection) {
|
2510
2589
|
return !(result = callback(value, index, collection));
|
2511
2590
|
});
|
2512
2591
|
}
|
@@ -2541,6 +2620,7 @@
|
|
2541
2620
|
function sortBy(collection, callback, thisArg) {
|
2542
2621
|
var result = [];
|
2543
2622
|
callback = createCallback(callback, thisArg);
|
2623
|
+
|
2544
2624
|
forEach(collection, function(value, index, collection) {
|
2545
2625
|
result.push({
|
2546
2626
|
'criteria': callback(value, index, collection),
|
@@ -2817,8 +2897,8 @@
|
|
2817
2897
|
* @memberOf _
|
2818
2898
|
* @category Arrays
|
2819
2899
|
* @param {Array} [array1, array2, ...] Arrays to process.
|
2820
|
-
* @returns {Array} Returns a new array of unique elements
|
2821
|
-
*
|
2900
|
+
* @returns {Array} Returns a new array of unique elements that are present
|
2901
|
+
* in **all** of the arrays.
|
2822
2902
|
* @example
|
2823
2903
|
*
|
2824
2904
|
* _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]);
|
@@ -2827,20 +2907,35 @@
|
|
2827
2907
|
function intersection(array) {
|
2828
2908
|
var args = arguments,
|
2829
2909
|
argsLength = args.length,
|
2830
|
-
cache = {},
|
2831
|
-
|
2910
|
+
cache = { '0': {} },
|
2911
|
+
index = -1,
|
2912
|
+
length = array ? array.length : 0,
|
2913
|
+
isLarge = length >= 100,
|
2914
|
+
result = [],
|
2915
|
+
seen = result;
|
2832
2916
|
|
2833
|
-
|
2834
|
-
|
2835
|
-
|
2836
|
-
|
2837
|
-
|
2838
|
-
|
2917
|
+
outer:
|
2918
|
+
while (++index < length) {
|
2919
|
+
var value = array[index];
|
2920
|
+
if (isLarge) {
|
2921
|
+
var key = value + '';
|
2922
|
+
var inited = hasOwnProperty.call(cache[0], key)
|
2923
|
+
? !(seen = cache[0][key])
|
2924
|
+
: (seen = cache[0][key] = []);
|
2925
|
+
}
|
2926
|
+
if (inited || indexOf(seen, value) < 0) {
|
2927
|
+
if (isLarge) {
|
2928
|
+
seen.push(value);
|
2929
|
+
}
|
2930
|
+
var argsIndex = argsLength;
|
2931
|
+
while (--argsIndex) {
|
2932
|
+
if (!(cache[argsIndex] || (cache[argsIndex] = cachedContains(args[argsIndex], 0, 100)))(value)) {
|
2933
|
+
continue outer;
|
2839
2934
|
}
|
2840
2935
|
}
|
2841
2936
|
result.push(value);
|
2842
2937
|
}
|
2843
|
-
}
|
2938
|
+
}
|
2844
2939
|
return result;
|
2845
2940
|
}
|
2846
2941
|
|
@@ -3051,9 +3146,10 @@
|
|
3051
3146
|
var low = 0,
|
3052
3147
|
high = array ? array.length : low;
|
3053
3148
|
|
3054
|
-
// explicitly reference `identity` for better
|
3149
|
+
// explicitly reference `identity` for better inlining in Firefox
|
3055
3150
|
callback = callback ? createCallback(callback, thisArg) : identity;
|
3056
3151
|
value = callback(value);
|
3152
|
+
|
3057
3153
|
while (low < high) {
|
3058
3154
|
var mid = (low + high) >>> 1;
|
3059
3155
|
callback(array[mid]) < value
|
@@ -3125,7 +3221,7 @@
|
|
3125
3221
|
isSorted = false;
|
3126
3222
|
}
|
3127
3223
|
// init value cache for large arrays
|
3128
|
-
var isLarge = !isSorted && length
|
3224
|
+
var isLarge = !isSorted && length >= 75;
|
3129
3225
|
if (isLarge) {
|
3130
3226
|
var cache = {};
|
3131
3227
|
}
|
@@ -3138,13 +3234,14 @@
|
|
3138
3234
|
computed = callback ? callback(value, index, array) : value;
|
3139
3235
|
|
3140
3236
|
if (isLarge) {
|
3141
|
-
|
3142
|
-
|
3143
|
-
|
3237
|
+
var key = computed + '';
|
3238
|
+
var inited = hasOwnProperty.call(cache, key)
|
3239
|
+
? !(seen = cache[key])
|
3240
|
+
: (seen = cache[key] = []);
|
3144
3241
|
}
|
3145
3242
|
if (isSorted
|
3146
3243
|
? !index || seen[seen.length - 1] !== computed
|
3147
|
-
: indexOf(seen, computed) < 0
|
3244
|
+
: inited || indexOf(seen, computed) < 0
|
3148
3245
|
) {
|
3149
3246
|
if (callback || isLarge) {
|
3150
3247
|
seen.push(computed);
|
@@ -3655,8 +3752,6 @@
|
|
3655
3752
|
/**
|
3656
3753
|
* This function returns the first argument passed to it.
|
3657
3754
|
*
|
3658
|
-
* Note: This function is used throughout Lo-Dash as a default callback.
|
3659
|
-
*
|
3660
3755
|
* @static
|
3661
3756
|
* @memberOf _
|
3662
3757
|
* @category Utilities
|
@@ -3958,7 +4053,7 @@
|
|
3958
4053
|
: '';
|
3959
4054
|
|
3960
4055
|
try {
|
3961
|
-
result =
|
4056
|
+
result = Function('_', 'return ' + source + sourceURL)(lodash);
|
3962
4057
|
} catch(e) {
|
3963
4058
|
e.source = source;
|
3964
4059
|
throw e;
|
@@ -4049,32 +4144,6 @@
|
|
4049
4144
|
|
4050
4145
|
/*--------------------------------------------------------------------------*/
|
4051
4146
|
|
4052
|
-
/**
|
4053
|
-
* Wraps the value in a `lodash` wrapper object.
|
4054
|
-
*
|
4055
|
-
* @static
|
4056
|
-
* @memberOf _
|
4057
|
-
* @category Chaining
|
4058
|
-
* @param {Mixed} value The value to wrap.
|
4059
|
-
* @returns {Object} Returns the wrapper object.
|
4060
|
-
* @example
|
4061
|
-
*
|
4062
|
-
* var stooges = [
|
4063
|
-
* { 'name': 'moe', 'age': 40 },
|
4064
|
-
* { 'name': 'larry', 'age': 50 },
|
4065
|
-
* { 'name': 'curly', 'age': 60 }
|
4066
|
-
* ];
|
4067
|
-
*
|
4068
|
-
* var youngest = _.chain(stooges)
|
4069
|
-
* .sortBy(function(stooge) { return stooge.age; })
|
4070
|
-
* .map(function(stooge) { return stooge.name + ' is ' + stooge.age; })
|
4071
|
-
* .first();
|
4072
|
-
* // => 'moe is 40'
|
4073
|
-
*/
|
4074
|
-
function chain(value) {
|
4075
|
-
return new lodash(value);
|
4076
|
-
}
|
4077
|
-
|
4078
4147
|
/**
|
4079
4148
|
* Invokes `interceptor` with the `value` as the first argument, and then
|
4080
4149
|
* returns `value`. The purpose of this method is to "tap into" a method chain,
|
@@ -4101,28 +4170,6 @@
|
|
4101
4170
|
return value;
|
4102
4171
|
}
|
4103
4172
|
|
4104
|
-
/**
|
4105
|
-
* This function returns the wrapper object.
|
4106
|
-
*
|
4107
|
-
* Note: This function is defined to ensure the existing wrapper object is
|
4108
|
-
* returned, instead of creating a new wrapper object like the `_.chain`
|
4109
|
-
* method does.
|
4110
|
-
*
|
4111
|
-
* @name chain
|
4112
|
-
* @deprecated
|
4113
|
-
* @memberOf _
|
4114
|
-
* @category Chaining
|
4115
|
-
* @returns {Mixed} Returns the wrapper object.
|
4116
|
-
* @example
|
4117
|
-
*
|
4118
|
-
* var wrapped = _([1, 2, 3]);
|
4119
|
-
* wrapped === wrapped.chain();
|
4120
|
-
* // => true
|
4121
|
-
*/
|
4122
|
-
function wrapperChain() {
|
4123
|
-
return this;
|
4124
|
-
}
|
4125
|
-
|
4126
4173
|
/**
|
4127
4174
|
* Produces the `toString` result of the wrapped value.
|
4128
4175
|
*
|
@@ -4136,7 +4183,7 @@
|
|
4136
4183
|
* // => '1,2,3'
|
4137
4184
|
*/
|
4138
4185
|
function wrapperToString() {
|
4139
|
-
return
|
4186
|
+
return this.__wrapped__ + '';
|
4140
4187
|
}
|
4141
4188
|
|
4142
4189
|
/**
|
@@ -4159,12 +4206,18 @@
|
|
4159
4206
|
/*--------------------------------------------------------------------------*/
|
4160
4207
|
|
4161
4208
|
// add functions that return wrapped values when chaining
|
4209
|
+
lodash.after = after;
|
4162
4210
|
lodash.assign = assign;
|
4211
|
+
lodash.bind = bind;
|
4163
4212
|
lodash.bindAll = bindAll;
|
4164
|
-
lodash.
|
4213
|
+
lodash.bindKey = bindKey;
|
4165
4214
|
lodash.compact = compact;
|
4215
|
+
lodash.compose = compose;
|
4166
4216
|
lodash.countBy = countBy;
|
4217
|
+
lodash.debounce = debounce;
|
4167
4218
|
lodash.defaults = defaults;
|
4219
|
+
lodash.defer = defer;
|
4220
|
+
lodash.delay = delay;
|
4168
4221
|
lodash.difference = difference;
|
4169
4222
|
lodash.filter = filter;
|
4170
4223
|
lodash.flatten = flatten;
|
@@ -4180,11 +4233,14 @@
|
|
4180
4233
|
lodash.keys = keys;
|
4181
4234
|
lodash.map = map;
|
4182
4235
|
lodash.max = max;
|
4236
|
+
lodash.memoize = memoize;
|
4183
4237
|
lodash.merge = merge;
|
4184
4238
|
lodash.min = min;
|
4185
4239
|
lodash.object = object;
|
4186
4240
|
lodash.omit = omit;
|
4241
|
+
lodash.once = once;
|
4187
4242
|
lodash.pairs = pairs;
|
4243
|
+
lodash.partial = partial;
|
4188
4244
|
lodash.pick = pick;
|
4189
4245
|
lodash.pluck = pluck;
|
4190
4246
|
lodash.range = range;
|
@@ -4193,6 +4249,7 @@
|
|
4193
4249
|
lodash.shuffle = shuffle;
|
4194
4250
|
lodash.sortBy = sortBy;
|
4195
4251
|
lodash.tap = tap;
|
4252
|
+
lodash.throttle = throttle;
|
4196
4253
|
lodash.times = times;
|
4197
4254
|
lodash.toArray = toArray;
|
4198
4255
|
lodash.union = union;
|
@@ -4200,6 +4257,7 @@
|
|
4200
4257
|
lodash.values = values;
|
4201
4258
|
lodash.where = where;
|
4202
4259
|
lodash.without = without;
|
4260
|
+
lodash.wrap = wrap;
|
4203
4261
|
lodash.zip = zip;
|
4204
4262
|
|
4205
4263
|
// add aliases
|
@@ -4218,15 +4276,9 @@
|
|
4218
4276
|
/*--------------------------------------------------------------------------*/
|
4219
4277
|
|
4220
4278
|
// add functions that return unwrapped values when chaining
|
4221
|
-
lodash.after = after;
|
4222
|
-
lodash.bind = bind;
|
4223
|
-
lodash.bindKey = bindKey;
|
4224
4279
|
lodash.clone = clone;
|
4225
|
-
lodash.
|
4280
|
+
lodash.cloneDeep = cloneDeep;
|
4226
4281
|
lodash.contains = contains;
|
4227
|
-
lodash.debounce = debounce;
|
4228
|
-
lodash.defer = defer;
|
4229
|
-
lodash.delay = delay;
|
4230
4282
|
lodash.escape = escape;
|
4231
4283
|
lodash.every = every;
|
4232
4284
|
lodash.find = find;
|
@@ -4251,11 +4303,8 @@
|
|
4251
4303
|
lodash.isString = isString;
|
4252
4304
|
lodash.isUndefined = isUndefined;
|
4253
4305
|
lodash.lastIndexOf = lastIndexOf;
|
4254
|
-
lodash.memoize = memoize;
|
4255
4306
|
lodash.mixin = mixin;
|
4256
4307
|
lodash.noConflict = noConflict;
|
4257
|
-
lodash.once = once;
|
4258
|
-
lodash.partial = partial;
|
4259
4308
|
lodash.random = random;
|
4260
4309
|
lodash.reduce = reduce;
|
4261
4310
|
lodash.reduceRight = reduceRight;
|
@@ -4264,10 +4313,8 @@
|
|
4264
4313
|
lodash.some = some;
|
4265
4314
|
lodash.sortedIndex = sortedIndex;
|
4266
4315
|
lodash.template = template;
|
4267
|
-
lodash.throttle = throttle;
|
4268
4316
|
lodash.unescape = unescape;
|
4269
4317
|
lodash.uniqueId = uniqueId;
|
4270
|
-
lodash.wrap = wrap;
|
4271
4318
|
|
4272
4319
|
// add aliases
|
4273
4320
|
lodash.all = every;
|
@@ -4316,42 +4363,60 @@
|
|
4316
4363
|
* @memberOf _
|
4317
4364
|
* @type String
|
4318
4365
|
*/
|
4319
|
-
lodash.VERSION = '1.0.0-rc.
|
4366
|
+
lodash.VERSION = '1.0.0-rc.3';
|
4320
4367
|
|
4321
4368
|
// add "Chaining" functions to the wrapper
|
4322
|
-
lodash.prototype.chain = wrapperChain;
|
4323
4369
|
lodash.prototype.toString = wrapperToString;
|
4324
4370
|
lodash.prototype.value = wrapperValueOf;
|
4325
4371
|
lodash.prototype.valueOf = wrapperValueOf;
|
4326
4372
|
|
4327
|
-
// add
|
4328
|
-
|
4373
|
+
// add `Array` functions that return unwrapped values
|
4374
|
+
each(['join', 'pop', 'shift'], function(methodName) {
|
4329
4375
|
var func = arrayRef[methodName];
|
4330
4376
|
lodash.prototype[methodName] = function() {
|
4331
|
-
|
4332
|
-
|
4377
|
+
return func.apply(this.__wrapped__, arguments);
|
4378
|
+
};
|
4379
|
+
});
|
4333
4380
|
|
4334
|
-
|
4335
|
-
|
4336
|
-
|
4337
|
-
|
4338
|
-
|
4381
|
+
// add `Array` functions that return the wrapped value
|
4382
|
+
each(['push', 'reverse', 'sort', 'unshift'], function(methodName) {
|
4383
|
+
var func = arrayRef[methodName];
|
4384
|
+
lodash.prototype[methodName] = function() {
|
4385
|
+
func.apply(this.__wrapped__, arguments);
|
4339
4386
|
return this;
|
4340
4387
|
};
|
4341
4388
|
});
|
4342
4389
|
|
4343
|
-
// add
|
4344
|
-
|
4390
|
+
// add `Array` functions that return new wrapped values
|
4391
|
+
each(['concat', 'slice', 'splice'], function(methodName) {
|
4345
4392
|
var func = arrayRef[methodName];
|
4346
4393
|
lodash.prototype[methodName] = function() {
|
4347
|
-
var
|
4348
|
-
result = func.apply(value, arguments);
|
4349
|
-
|
4394
|
+
var result = func.apply(this.__wrapped__, arguments);
|
4350
4395
|
return new lodash(result);
|
4351
4396
|
};
|
4352
4397
|
});
|
4353
4398
|
|
4399
|
+
// avoid array-like object bugs with `Array#shift` and `Array#splice`
|
4400
|
+
// in Firefox < 10 and IE < 9
|
4401
|
+
if (hasObjectSpliceBug) {
|
4402
|
+
each(['pop', 'shift', 'splice'], function(methodName) {
|
4403
|
+
var func = arrayRef[methodName],
|
4404
|
+
isSplice = methodName == 'splice';
|
4405
|
+
|
4406
|
+
lodash.prototype[methodName] = function() {
|
4407
|
+
var value = this.__wrapped__,
|
4408
|
+
result = func.apply(value, arguments);
|
4409
|
+
|
4410
|
+
if (value.length === 0) {
|
4411
|
+
delete value[0];
|
4412
|
+
}
|
4413
|
+
return isSplice ? new lodash(result) : result;
|
4414
|
+
};
|
4415
|
+
});
|
4416
|
+
}
|
4417
|
+
|
4354
4418
|
// add pseudo private property to be used and removed during the build process
|
4419
|
+
lodash._each = each;
|
4355
4420
|
lodash._iteratorTemplate = iteratorTemplate;
|
4356
4421
|
|
4357
4422
|
/*--------------------------------------------------------------------------*/
|
@@ -1,41 +1,42 @@
|
|
1
1
|
/*!
|
2
|
-
Lo-Dash 1.0.0-rc.
|
2
|
+
Lo-Dash 1.0.0-rc.3 lodash.com/license
|
3
3
|
Underscore.js 1.4.3 underscorejs.org/LICENSE
|
4
4
|
*/
|
5
|
-
;(function(e,t){function
|
6
|
-
|
7
|
-
|
8
|
-
e.l)r+="var q=-1,r=p[typeof l]?n(l):[],m=r.length;while(++q<m){i=r[q];",e.e||(r+="if(!(u&&i=='prototype')){"),r+=e.g+"",e.e||(r+="}");else{r+="for(i in l){";if(!e.e||e.l)r+="if(",e.e||(r+="!(u&&i=='prototype')"),!e.e&&e.l&&(r+="&&"),e.l&&(r+="h.call(l,i)"),r+="){";r+=e.g+";";if(!e.e||e.l)r+="}"}r+="}";if(e.e){r+="var f=l.constructor;";for(i=0;7>i;i++)r+="i='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===l)&&"),r+="h.call(l,i)){"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return t"
|
9
|
-
,
|
10
|
-
|
11
|
-
for(
|
12
|
-
|
13
|
-
;if(
|
14
|
-
));for(;++s
|
15
|
-
(t,r);if(
|
16
|
-
(e,function(e,n,i){s[++r]=t(e,n,i)});return s}function
|
17
|
-
(s=e.split(""));return t
|
18
|
-
n)r=(0>n?
|
19
|
-
]!==h
|
20
|
-
){},
|
21
|
-
.split(" "),
|
22
|
-
(
|
23
|
-
|
24
|
-
,g:"t[i]=l[i]",c:"}}"},
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
(
|
30
|
-
|
31
|
-
|
32
|
-
(
|
33
|
-
(
|
34
|
-
(e
|
35
|
-
|
36
|
-
|
37
|
-
,
|
38
|
-
|
39
|
-
|
40
|
-
,s.
|
41
|
-
|
5
|
+
;(function(e,t){function n(e){if(e&&typeof e=="object"&&e.__wrapped__)return e;if(!(this instanceof n))return new n(e);this.__wrapped__=e}function r(e,t,n){t||(t=0);var r=e.length,i=r-t>=(n||tt);if(i)for(var s={},n=t-1;++n<r;){var o=e[n]+"";(Et.call(s,o)?s[o]:s[o]=[]).push(e[n])}return function(n){if(i){var r=n+"";return Et.call(s,r)&&-1<R(s[r],n)}return-1<R(e,n,t)}}function i(e){return e.charCodeAt(0)}function s(e,t){var n=e.b,r=t.b,e=e.a,t=t.a;if(e!==t){if(e>t||typeof e=="undefined")return 1;if(
|
6
|
+
e<t||typeof t=="undefined")return-1}return n<r?-1:1}function o(e,t,n){function r(){var u=arguments,a=s?this:t;return i||(e=t[o]),n.length&&(u=u.length?n.concat(p(u)):n),this instanceof r?(h.prototype=e.prototype,a=new h,h.prototype=null,u=e.apply(a,u),x(u)?u:a):e.apply(a,u)}var i=S(e),s=!n,o=t;return s&&(n=t),i||(t=e),r}function u(e,t,n){return e?typeof e!="function"?function(t){return t[e]}:typeof t!="undefined"?n?function(n,r,i,s){return e.call(t,n,r,i,s)}:function(n,r,i){return e.call(t,n,r,i)
|
7
|
+
}:e:V}function a(){for(var e={b:"",c:"",e:Xt,f:Wt,g:"",h:Jt,i:Gt,j:mt,k:"",l:!0},t,n=0;t=arguments[n];n++)for(var r in t)e[r]=t[r];t=e.a,e.d=/^[^,]+/.exec(t)[0],n=Function,r="var i,l="+e.d+",t="+e.d+";if(!"+e.d+")return t;"+e.k+";",e.b?(r+="var m=l.length;i=-1;if(typeof m=='number'){",e.i&&(r+="if(k(l)){l=l.split('')}"),r+="while(++i<m){"+e.b+"}}else {"):e.h&&(r+="var m=l.length;i=-1;if(m&&j(l)){while(++i<m){i+='';"+e.g+"}}else {"),e.e||(r+="var u=typeof l=='function'&&s.call(l,'prototype');");if(
|
8
|
+
e.f&&e.l)r+="var q=-1,r=p[typeof l]?n(l):[],m=r.length;while(++q<m){i=r[q];",e.e||(r+="if(!(u&&i=='prototype')){"),r+=e.g+"",e.e||(r+="}");else{r+="for(i in l){";if(!e.e||e.l)r+="if(",e.e||(r+="!(u&&i=='prototype')"),!e.e&&e.l&&(r+="&&"),e.l&&(r+="h.call(l,i)"),r+="){";r+=e.g+";";if(!e.e||e.l)r+="}"}r+="}";if(e.e){r+="var f=l.constructor;";for(var i=0;7>i;i++)r+="i='"+e.j[i]+"';if(","constructor"==e.j[i]&&(r+="!(f&&f.prototype===l)&&"),r+="h.call(l,i)){"+e.g+"}"}if(e.b||e.h)r+="}";return r+=e.c+";return t"
|
9
|
+
,n("e,h,j,k,p,n,s","return function("+t+"){"+r+"}")(u,Et,v,N,nn,At,xt)}function f(e){return"\\"+rn[e]}function l(e){return hn[e]}function c(e){return typeof e.toString!="function"&&typeof (e+"")=="string"}function h(){}function p(e,t,n){t||(t=0),typeof n=="undefined"&&(n=e?e.length:0);for(var r=-1,n=n-t||0,i=Array(0>n?0:n);++r<n;)i[r]=e[t+r];return i}function d(e){return pn[e]}function v(e){return Tt.call(e)==Dt}function m(e){var t=!1;if(!e||typeof e!="object"||v(e))return t;var n=e.constructor;return!
|
10
|
+
S(n)&&(!Yt||!c(e))||n instanceof n?Vt?(ln(e,function(e,n,r){return t=!Et.call(r,n),!1}),!1===t):(ln(e,function(e,n){t=n}),!1===t||Et.call(e,t)):t}function g(e){var t=[];return cn(e,function(e,n){t.push(n)}),t}function y(e,t,n,r,i){if(null==e)return e;n&&(t=!1);if(n=x(e)){var s=Tt.call(e);if(!en[s]||Yt&&c(e))return e;var o=vn(e)}if(!n||!t)return n?o?p(e):fn({},e):e;n=tn[s];switch(s){case Ht:case Bt:return new n(+e);case jt:case qt:return new n(e);case It:return n(e.source,at.exec(e))}r||(r=[]),i||
|
11
|
+
(i=[]);for(s=r.length;s--;)if(r[s]==e)return i[s];var u=o?n(e.length):{};return r.push(e),i.push(u),(o?_:cn)(e,function(e,n){u[n]=y(e,t,null,r,i)}),o&&(Et.call(e,"index")&&(u.index=e.index),Et.call(e,"input")&&(u.input=e.input)),u}function b(e){var t=[];return ln(e,function(e,n){S(e)&&t.push(n)}),t.sort()}function w(e){var t={};return cn(e,function(e,n){t[e]=n}),t}function E(e,t,n,r){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return e===t;var i=Tt.call(e),s=Tt.call(t);i==Dt&&(i=Ft),s==Dt&&
|
12
|
+
(s=Ft);if(i!=s)return!1;switch(i){case Ht:case Bt:return+e==+t;case jt:return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case It:case qt:return e==t+""}s=i==Pt;if(!s){if(e.__wrapped__||t.__wrapped__)return E(e.__wrapped__||e,t.__wrapped__||t);if(i!=Ft||Yt&&(c(e)||c(t)))return!1;var i=!Kt&&v(e)?Object:e.constructor,o=!Kt&&v(t)?Object:t.constructor;if(i!=o&&(!S(i)||!(i instanceof i&&S(o)&&o instanceof o)))return!1}n||(n=[]),r||(r=[]);for(i=n.length;i--;)if(n[i]==e)return r[i]==t;var u=!0,a=0;n.push(e),r.push(
|
13
|
+
t);if(s){a=e.length;if(u=a==t.length)for(;a--&&(u=E(e[a],t[a],n,r)););return u}return ln(e,function(e,i,s){if(Et.call(s,i))return a++,u=Et.call(t,i)&&E(e,t[i],n,r)}),u&&ln(t,function(e,t,n){if(Et.call(n,t))return u=-1<--a}),u}function S(e){return typeof e=="function"}function x(e){return e?nn[typeof e]:!1}function T(e){return typeof e=="number"||Tt.call(e)==jt}function N(e){return typeof e=="string"||Tt.call(e)==qt}function C(e,t,n){var r=arguments,i=0,s=2,o=r[3],u=r[4];n!==et&&(o=[],u=[],typeof
|
14
|
+
n!="number"&&(s=r.length));for(;++i<s;)cn(r[i],function(t,n){var r,i,s;if(t&&((i=vn(t))||mn(t))){for(var a=o.length;a--;)if(r=o[a]==t)break;r?e[n]=u[a]:(o.push(t),u.push(s=(s=e[n],i)?vn(s)?s:[]:mn(s)?s:{}),e[n]=C(s,t,et,o,u))}else t!=null&&(e[n]=t)});return e}function k(e){var t=[];return cn(e,function(e){t.push(e)}),t}function L(e,t,n){var r=-1,i=e?e.length:0,s=!1,n=(0>n?Ot(0,i+n):n)||0;return typeof i=="number"?s=-1<(N(e)?e.indexOf(t,n):R(e,t,n)):an(e,function(e){if(++r>=n)return!(s=e===t)}),s}
|
15
|
+
function A(e,t,n){var r=!0,t=u(t,n);if(vn(e))for(var n=-1,i=e.length;++n<i&&(r=!!t(e[n],n,e)););else an(e,function(e,n,i){return r=!!t(e,n,i)});return r}function O(e,t,n){var r=[],t=u(t,n);if(vn(e))for(var n=-1,i=e.length;++n<i;){var s=e[n];t(s,n,e)&&r.push(s)}else an(e,function(e,n,i){t(e,n,i)&&r.push(e)});return r}function M(e,t,n){var r,t=u(t,n);return _(e,function(e,n,i){if(t(e,n,i))return r=e,!1}),r}function _(e,t,n){if(t&&typeof n=="undefined"&&vn(e))for(var n=-1,r=e.length;++n<r&&!1!==t(e[
|
16
|
+
n],n,e););else an(e,t,n);return e}function D(e,t,n){var r=-1,i=e?e.length:0,s=Array(typeof i=="number"?i:0),t=u(t,n);if(vn(e))for(;++r<i;)s[r]=t(e[r],r,e);else an(e,function(e,n,i){s[++r]=t(e,n,i)});return s}function P(e,t,n){var r=-Infinity,s=-1,o=e?e.length:0,a=r;if(t||!vn(e))t=!t&&N(e)?i:u(t,n),an(e,function(e,n,i){n=t(e,n,i),n>r&&(r=n,a=e)});else for(;++s<o;)e[s]>a&&(a=e[s]);return a}function H(e,t){return D(e,t+"")}function B(e,t,n,r){var i=3>arguments.length,t=u(t,r,et);if(vn(e)){var s=-1,o=
|
17
|
+
e.length;for(i&&(n=e[++s]);++s<o;)n=t(n,e[s],s,e)}else an(e,function(e,r,s){n=i?(i=!1,e):t(n,e,r,s)});return n}function j(e,t,n,r){var i=e,s=e?e.length:0,o=3>arguments.length;if(typeof s!="number")var a=gn(e),s=a.length;else Gt&&N(e)&&(i=e.split(""));return t=u(t,r,et),_(e,function(e,r,u){r=a?a[--s]:--s,n=o?(o=!1,i[r]):t(n,i[r],r,u)}),n}function F(e,t,n){var r,t=u(t,n);if(vn(e))for(var n=-1,i=e.length;++n<i&&!(r=t(e[n],n,e)););else an(e,function(e,n,i){return!(r=t(e,n,i))});return!!r}function I(e
|
18
|
+
,t,n){if(e){var r=e.length;return null==t||n?e[0]:p(e,0,Mt(Ot(0,t),r))}}function q(e,t){for(var n=-1,r=e?e.length:0,i=[];++n<r;){var s=e[n];vn(s)?St.apply(i,t?s:q(s)):i.push(s)}return i}function R(e,t,n){var r=-1,i=e?e.length:0;if(typeof n=="number")r=(0>n?Ot(0,i+n):n||0)-1;else if(n)return r=z(e,t),e[r]===t?r:-1;for(;++r<i;)if(e[r]===t)return r;return-1}function U(e,t,n){return p(e,null==t||n?1:Ot(0,t))}function z(e,t,n,r){for(var i=0,s=e?e.length:i,n=n?u(n,r):V,t=n(t);i<s;)r=i+s>>>1,n(e[r])<t?i=
|
19
|
+
r+1:s=r;return i}function W(e,t,n,r){var i=-1,s=e?e.length:0,o=[],a=o;typeof t=="function"&&(r=n,n=t,t=!1);var f=!t&&75<=s;if(f)var l={};n&&(a=[],n=u(n,r));for(;++i<s;){var r=e[i],c=n?n(r,i,e):r;if(f)var h=c+"",h=Et.call(l,h)?!(a=l[h]):a=l[h]=[];if(t?!i||a[a.length-1]!==c:h||0>R(a,c))(n||f)&&a.push(c),o.push(r)}return o}function X(e,t){return zt||Nt&&2<arguments.length?Nt.call.apply(Nt,arguments):o(e,t,p(arguments,2))}function V(e){return e}function $(e){_(b(e),function(t){var r=n[t]=e[t];n.prototype
|
20
|
+
[t]=function(){var e=[this.__wrapped__];return St.apply(e,arguments),e=r.apply(n,e),new n(e)}})}function J(){return this.__wrapped__}var K=typeof exports=="object"&&exports,Q=typeof global=="object"&&global;Q.global===Q&&(e=Q);var G=[],Y=new function(){},Z=0,et=Y,tt=30,nt=e._,rt=/[-?+=!~*%&^<>|{(\/]|\[\D|\b(?:delete|in|instanceof|new|typeof|void)\b/,it=/&(?:amp|lt|gt|quot|#x27);/g,st=/\b__p\+='';/g,ot=/\b(__p\+=)''\+/g,ut=/(__e\(.*?\)|\b__t\))\+'';/g,at=/\w*$/,ft=/(?:__e|__t=)\(\s*(?![\d\s"']|this\.)/g
|
21
|
+
,lt=RegExp("^"+(Y.valueOf+"").replace(/[.*+?^=!:${}()|[\]\/\\]/g,"\\$&").replace(/valueOf|for [^\]]+/g,".+?")+"$"),ct=/\$\{((?:(?=\\?)\\?[\s\S])*?)}/g,ht=/<%=([\s\S]+?)%>/g,pt=/($^)/,dt=/[&<>"']/g,vt=/['\n\r\t\u2028\u2029\\]/g,mt="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),gt=Math.ceil,yt=G.concat,bt=Math.floor,wt=lt.test(wt=Object.getPrototypeOf)&&wt,Et=Y.hasOwnProperty,St=G.push,xt=Y.propertyIsEnumerable,Tt=Y.toString,Nt=lt.test(Nt=
|
22
|
+
p.bind)&&Nt,Ct=lt.test(Ct=Array.isArray)&&Ct,kt=e.isFinite,Lt=e.isNaN,At=lt.test(At=Object.keys)&&At,Ot=Math.max,Mt=Math.min,_t=Math.random,Dt="[object Arguments]",Pt="[object Array]",Ht="[object Boolean]",Bt="[object Date]",jt="[object Number]",Ft="[object Object]",It="[object RegExp]",qt="[object String]",Rt=!!e.attachEvent,Ut=Nt&&!/\n|true/.test(Nt+Rt),zt=Nt&&!Ut,Wt=At&&(Rt||Ut),Xt,Vt,$t=($t={0:1,length:1},G.splice.call($t,0,1),$t[0]),Jt=!0;(function(){function e(){this.x=1}var t=[];e.prototype=
|
23
|
+
{valueOf:1,y:1};for(var n in new e)t.push(n);for(n in arguments)Jt=!n;Xt=!/valueOf/.test(t),Vt="x"!=t[0]})(1);var Kt=arguments.constructor==Object,Qt=!v(arguments),Gt="xx"!="x"[0]+Object("x")[0];try{var Yt=("[object Object]",Tt.call(document)==Ft)}catch(Zt){}var en={"[object Function]":!1};en[Dt]=en[Pt]=en[Ht]=en[Bt]=en[jt]=en[Ft]=en[It]=en[qt]=!0;var tn={};tn[Pt]=Array,tn[Ht]=Boolean,tn[Bt]=Date,tn[Ft]=Object,tn[jt]=Number,tn[It]=RegExp,tn[qt]=String;var nn={"boolean":!1,"function":!0,object:!0,
|
24
|
+
number:!1,string:!1,"undefined":!1},rn={"\\":"\\","'":"'","\n":"n","\r":"r"," ":"t","\u2028":"u2028","\u2029":"u2029"};n.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:ht,variable:""};var sn={a:"o,v,g",k:"for(var a=1,b=typeof g=='number'?2:arguments.length;a<b;a++){if((l=arguments[a])){",g:"t[i]=l[i]",c:"}}"},on={a:"d,c,w",k:"c=c&&typeof w=='undefined'?c:e(c,w)",b:"if(c(l[i],i,d)===false)return t",g:"if(c(l[i],i,d)===false)return t"},un={b:null},an=a(on),fn=a(sn
|
25
|
+
);Qt&&(v=function(e){return e?Et.call(e,"callee"):!1});var ln=a(on,un,{l:!1}),cn=a(on,un),hn={"&":"&","<":"<",">":">",'"':""","'":"'"},pn=w(hn),dn=a(sn,{g:"if(t[i]==null)"+sn.g}),vn=Ct||function(e){return Kt&&e instanceof Array||Tt.call(e)==Pt};S(/x/)&&(S=function(e){return e instanceof Function||"[object Function]"==Tt.call(e)});var mn=wt?function(e){if(!e||typeof e!="object")return!1;var t=e.valueOf,n=typeof t=="function"&&(n=wt(t))&&wt(n);return n?e==n||wt(e)==n&&!v(e):m(e)
|
26
|
+
}:m,gn=At?function(e){return typeof e=="function"&&xt.call(e,"prototype")?g(e):x(e)?At(e):[]}:g;n.after=function(e,t){return 1>e?t():function(){if(1>--e)return t.apply(this,arguments)}},n.assign=fn,n.bind=X,n.bindAll=function(e){for(var t=arguments,n=1<t.length?0:(t=b(e),-1),r=t.length;++n<r;){var i=t[n];e[i]=X(e[i],e)}return e},n.bindKey=function(e,t){return o(e,t,p(arguments,2))},n.compact=function(e){for(var t=-1,n=e?e.length:0,r=[];++t<n;){var i=e[t];i&&r.push(i)}return r},n.compose=function(
|
27
|
+
){var e=arguments;return function(){for(var t=arguments,n=e.length;n--;)t=[e[n].apply(this,t)];return t[0]}},n.countBy=function(e,t,n){var r={},t=u(t,n);return _(e,function(e,n,i){n=t(e,n,i),Et.call(r,n)?r[n]++:r[n]=1}),r},n.debounce=function(e,t,n){function r(){u=null,n||(s=e.apply(o,i))}var i,s,o,u;return function(){var a=n&&!u;return i=arguments,o=this,clearTimeout(u),u=setTimeout(r,t),a&&(s=e.apply(o,i)),s}},n.defaults=dn,n.defer=function(e){var n=p(arguments,1);return setTimeout(function(){e
|
28
|
+
.apply(t,n)},1)},n.delay=function(e,n){var r=p(arguments,2);return setTimeout(function(){e.apply(t,r)},n)},n.difference=function(e){for(var t=-1,n=e?e.length:0,i=yt.apply(G,arguments),i=r(i,n),s=[];++t<n;){var o=e[t];i(o)||s.push(o)}return s},n.filter=O,n.flatten=q,n.forEach=_,n.forIn=ln,n.forOwn=cn,n.functions=b,n.groupBy=function(e,t,n){var r={},t=u(t,n);return _(e,function(e,n,i){n=t(e,n,i),(Et.call(r,n)?r[n]:r[n]=[]).push(e)}),r},n.initial=function(e,t,n){if(!e)return[];var r=e.length;return p
|
29
|
+
(e,0,Mt(Ot(0,r-(null==t||n?1:t||0)),r))},n.intersection=function(e){var t=arguments,n=t.length,i={0:{}},s=-1,o=e?e.length:0,u=100<=o,a=[],f=a;e:for(;++s<o;){var l=e[s];if(u)var c=l+"",c=Et.call(i[0],c)?!(f=i[0][c]):f=i[0][c]=[];if(c||0>R(f,l)){u&&f.push(l);for(var h=n;--h;)if(!(i[h]||(i[h]=r(t[h],0,100)))(l))continue e;a.push(l)}}return a},n.invert=w,n.invoke=function(e,t){var n=p(arguments,2),r=typeof t=="function",i=[];return _(e,function(e){i.push((r?t:e[t]).apply(e,n))}),i},n.keys=gn,n.map=D,
|
30
|
+
n.max=P,n.memoize=function(e,t){var n={};return function(){var r=t?t.apply(this,arguments):arguments[0];return Et.call(n,r)?n[r]:n[r]=e.apply(this,arguments)}},n.merge=C,n.min=function(e,t,n){var r=Infinity,s=-1,o=e?e.length:0,a=r;if(t||!vn(e))t=!t&&N(e)?i:u(t,n),an(e,function(e,n,i){n=t(e,n,i),n<r&&(r=n,a=e)});else for(;++s<o;)e[s]<a&&(a=e[s]);return a},n.object=function(e,t){for(var n=-1,r=e?e.length:0,i={};++n<r;){var s=e[n];t?i[s]=t[n]:i[s[0]]=s[1]}return i},n.omit=function(e,t,n){var r=typeof
|
31
|
+
t=="function",i={};if(r)t=u(t,n);else var s=yt.apply(G,arguments);return ln(e,function(e,n,o){if(r?!t(e,n,o):0>R(s,n,1))i[n]=e}),i},n.once=function(e){var t,n=!1;return function(){return n?t:(n=!0,t=e.apply(this,arguments),e=null,t)}},n.pairs=function(e){var t=[];return cn(e,function(e,n){t.push([n,e])}),t},n.partial=function(e){return o(e,p(arguments,1))},n.pick=function(e,t,n){var r={};if(typeof t!="function")for(var i=0,s=yt.apply(G,arguments),o=s.length;++i<o;){var a=s[i];a in e&&(r[a]=e[a])}
|
32
|
+
else t=u(t,n),ln(e,function(e,n,i){t(e,n,i)&&(r[n]=e)});return r},n.pluck=H,n.range=function(e,t,n){e=+e||0,n=+n||1,null==t&&(t=e,e=0);for(var r=-1,t=Ot(0,gt((t-e)/n)),i=Array(t);++r<t;)i[r]=e,e+=n;return i},n.reject=function(e,t,n){return t=u(t,n),O(e,function(e,n,r){return!t(e,n,r)})},n.rest=U,n.shuffle=function(e){var t=-1,n=Array(e?e.length:0);return _(e,function(e){var r=bt(_t()*(++t+1));n[t]=n[r],n[r]=e}),n},n.sortBy=function(e,t,n){var r=[],t=u(t,n);_(e,function(e,n,i){r.push({a:t(e,n,i),b
|
33
|
+
:n,c:e})}),e=r.length;for(r.sort(s);e--;)r[e]=r[e].c;return r},n.tap=function(e,t){return t(e),e},n.throttle=function(e,t){function n(){u=new Date,o=null,i=e.apply(s,r)}var r,i,s,o,u=0;return function(){var a=new Date,f=t-(a-u);return r=arguments,s=this,0>=f?(clearTimeout(o),o=null,u=a,i=e.apply(s,r)):o||(o=setTimeout(n,f)),i}},n.times=function(e,t,n){for(var e=+e||0,r=-1,i=Array(e);++r<e;)i[r]=t.call(n,r);return i},n.toArray=function(e){return typeof (e?e.length:0)=="number"?Gt&&N(e)?e.split("")
|
34
|
+
:p(e):k(e)},n.union=function(){return W(yt.apply(G,arguments))},n.uniq=W,n.values=k,n.where=function(e,t){var n=gn(t);return O(e,function(e){for(var r=n.length;r--;){var i=e[n[r]]===t[n[r]];if(!i)break}return!!i})},n.without=function(e){for(var t=-1,n=e?e.length:0,i=r(arguments,1,20),s=[];++t<n;){var o=e[t];i(o)||s.push(o)}return s},n.wrap=function(e,t){return function(){var n=[e];return St.apply(n,arguments),t.apply(this,n)}},n.zip=function(e){for(var t=-1,n=e?P(H(arguments,"length")):0,r=Array(
|
35
|
+
n);++t<n;)r[t]=H(arguments,t);return r},n.collect=D,n.drop=U,n.each=_,n.extend=fn,n.methods=b,n.select=O,n.tail=U,n.unique=W,$(n),n.clone=y,n.cloneDeep=function(e){return y(e,!0)},n.contains=L,n.escape=function(e){return null==e?"":(e+"").replace(dt,l)},n.every=A,n.find=M,n.has=function(e,t){return e?Et.call(e,t):!1},n.identity=V,n.indexOf=R,n.isArguments=v,n.isArray=vn,n.isBoolean=function(e){return!0===e||!1===e||Tt.call(e)==Ht},n.isDate=function(e){return e instanceof Date||Tt.call(e)==Bt},n.isElement=
|
36
|
+
function(e){return e?1===e.nodeType:!1},n.isEmpty=function(e){var t=!0;if(!e)return t;var n=Tt.call(e),r=e.length;return n==Pt||n==qt||n==Dt||Qt&&v(e)||n==Ft&&typeof r=="number"&&S(e.splice)?!r:(cn(e,function(){return t=!1}),t)},n.isEqual=E,n.isFinite=function(e){return kt(e)&&!Lt(parseFloat(e))},n.isFunction=S,n.isNaN=function(e){return T(e)&&e!=+e},n.isNull=function(e){return null===e},n.isNumber=T,n.isObject=x,n.isPlainObject=mn,n.isRegExp=function(e){return e instanceof RegExp||Tt.call(e)==It
|
37
|
+
},n.isString=N,n.isUndefined=function(e){return typeof e=="undefined"},n.lastIndexOf=function(e,t,n){var r=e?e.length:0;for(typeof n=="number"&&(r=(0>n?Ot(0,r+n):Mt(n,r-1))+1);r--;)if(e[r]===t)return r;return-1},n.mixin=$,n.noConflict=function(){return e._=nt,this},n.random=function(e,t){return null==e&&null==t&&(t=1),e=+e||0,null==t&&(t=e,e=0),e+bt(_t()*((+t||0)-e+1))},n.reduce=B,n.reduceRight=j,n.result=function(e,t){var n=e?e[t]:null;return S(n)?e[t]():n},n.size=function(e){var t=e?e.length:0;
|
38
|
+
return typeof t=="number"?t:gn(e).length},n.some=F,n.sortedIndex=z,n.template=function(e,t,r){e||(e=""),r||(r={});var i,s,o=n.templateSettings,u=0,a=r.interpolate||o.interpolate||pt,l="__p+='",c=r.variable||o.variable,h=c;e.replace(RegExp((r.escape||o.escape||pt).source+"|"+a.source+"|"+(a===ht?ct:pt).source+"|"+(r.evaluate||o.evaluate||pt).source+"|$","g"),function(t,n,r,s,o,a){return r||(r=s),l+=e.slice(u,a).replace(vt,f),n&&(l+="'+__e("+n+")+'"),o&&(l+="';"+o+";__p+='"),r&&(l+="'+((__t=("+r+"))==null?'':__t)+'"
|
39
|
+
),i||(i=o||rt.test(n||r)),u=a+t.length,t}),l+="';\n",h||(c="obj",i?l="with("+c+"){"+l+"}":(r=RegExp("(\\(\\s*)"+c+"\\."+c+"\\b","g"),l=l.replace(ft,"$&"+c+".").replace(r,"$1__d"))),l=(i?l.replace(st,""):l).replace(ot,"$1").replace(ut,"$1;"),l="function("+c+"){"+(h?"":c+"||("+c+"={});")+"var __t,__p='',__e=_.escape"+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":(h?"":",__d="+c+"."+c+"||"+c)+";")+l+"return __p}";try{s=Function("_","return "+l)(n)}catch(p){throw p.source=
|
40
|
+
l,p}return t?s(t):(s.source=l,s)},n.unescape=function(e){return null==e?"":(e+"").replace(it,d)},n.uniqueId=function(e){return(null==e?"":e+"")+ ++Z},n.all=A,n.any=F,n.detect=M,n.foldl=B,n.foldr=j,n.include=L,n.inject=B,cn(n,function(e,t){n.prototype[t]||(n.prototype[t]=function(){var t=[this.__wrapped__];return St.apply(t,arguments),e.apply(n,t)})}),n.first=I,n.last=function(e,t,n){if(e){var r=e.length;return null==t||n?e[r-1]:p(e,Ot(0,r-t))}},n.take=I,n.head=I,cn(n,function(e,t){n.prototype[t]||
|
41
|
+
(n.prototype[t]=function(t,r){var i=e(this.__wrapped__,t,r);return null==t||r?i:new n(i)})}),n.VERSION="1.0.0-rc.3",n.prototype.toString=function(){return this.__wrapped__+""},n.prototype.value=J,n.prototype.valueOf=J,an(["join","pop","shift"],function(e){var t=G[e];n.prototype[e]=function(){return t.apply(this.__wrapped__,arguments)}}),an(["push","reverse","sort","unshift"],function(e){var t=G[e];n.prototype[e]=function(){return t.apply(this.__wrapped__,arguments),this}}),an(["concat","slice","splice"
|
42
|
+
],function(e){var t=G[e];n.prototype[e]=function(){var e=t.apply(this.__wrapped__,arguments);return new n(e)}}),$t&&an(["pop","shift","splice"],function(e){var t=G[e],r="splice"==e;n.prototype[e]=function(){var e=this.__wrapped__,i=t.apply(e,arguments);return 0===e.length&&delete e[0],r?new n(i):i}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(e._=n,define(function(){return n})):K?typeof module=="object"&&module&&module.exports==K?(module.exports=n)._=n:K._=n:e._=n})(this);
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lodash-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.rc.
|
4
|
+
version: 1.0.0.rc.3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|