underscore-rails 1.4.4 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/underscore-rails/version.rb +1 -1
- data/vendor/assets/javascripts/underscore.js +49 -41
- metadata +7 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 286bd9442baeafa07471d15d84985adbfd8e79d7
|
4
|
+
data.tar.gz: 0a258dd89f728e9c245e80cb7722d73187ce666f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b40555f186dada31374297d07df18e550a080274b4e9745f1d45988775f7ac479552589a8dfe4babddb1ff761e8f9ae8805245e0635d9dce5dd2e6e5111ce1a7
|
7
|
+
data.tar.gz: e1deef85e8268f0f8963e84e651c422d67156f216ae297772046e8977b037cb44cd00dc6ffbe5caa15724de7894f011551c19b8d4bd8a9f2abaa942afd272502
|
@@ -1,6 +1,6 @@
|
|
1
|
-
// Underscore.js 1.
|
1
|
+
// Underscore.js 1.5.1
|
2
2
|
// http://underscorejs.org
|
3
|
-
// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud
|
3
|
+
// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
4
4
|
// Underscore may be freely distributed under the MIT license.
|
5
5
|
|
6
6
|
(function() {
|
@@ -21,11 +21,12 @@
|
|
21
21
|
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
|
22
22
|
|
23
23
|
// Create quick reference variables for speed access to core prototypes.
|
24
|
-
var
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
var
|
25
|
+
push = ArrayProto.push,
|
26
|
+
slice = ArrayProto.slice,
|
27
|
+
concat = ArrayProto.concat,
|
28
|
+
toString = ObjProto.toString,
|
29
|
+
hasOwnProperty = ObjProto.hasOwnProperty;
|
29
30
|
|
30
31
|
// All **ECMAScript 5** native function implementations that we hope to use
|
31
32
|
// are declared here.
|
@@ -64,7 +65,7 @@
|
|
64
65
|
}
|
65
66
|
|
66
67
|
// Current version.
|
67
|
-
_.VERSION = '1.
|
68
|
+
_.VERSION = '1.5.1';
|
68
69
|
|
69
70
|
// Collection Functions
|
70
71
|
// --------------------
|
@@ -96,7 +97,7 @@
|
|
96
97
|
if (obj == null) return results;
|
97
98
|
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
|
98
99
|
each(obj, function(value, index, list) {
|
99
|
-
results
|
100
|
+
results.push(iterator.call(context, value, index, list));
|
100
101
|
});
|
101
102
|
return results;
|
102
103
|
};
|
@@ -171,7 +172,7 @@
|
|
171
172
|
if (obj == null) return results;
|
172
173
|
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
|
173
174
|
each(obj, function(value, index, list) {
|
174
|
-
if (iterator.call(context, value, index, list)) results
|
175
|
+
if (iterator.call(context, value, index, list)) results.push(value);
|
175
176
|
});
|
176
177
|
return results;
|
177
178
|
};
|
@@ -255,7 +256,7 @@
|
|
255
256
|
|
256
257
|
// Return the maximum element or (element-based computation).
|
257
258
|
// Can't optimize arrays of integers longer than 65,535 elements.
|
258
|
-
// See
|
259
|
+
// See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
|
259
260
|
_.max = function(obj, iterator, context) {
|
260
261
|
if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
|
261
262
|
return Math.max.apply(Math, obj);
|
@@ -264,7 +265,7 @@
|
|
264
265
|
var result = {computed : -Infinity, value: -Infinity};
|
265
266
|
each(obj, function(value, index, list) {
|
266
267
|
var computed = iterator ? iterator.call(context, value, index, list) : value;
|
267
|
-
computed
|
268
|
+
computed > result.computed && (result = {value : value, computed : computed});
|
268
269
|
});
|
269
270
|
return result.value;
|
270
271
|
};
|
@@ -363,7 +364,7 @@
|
|
363
364
|
return low;
|
364
365
|
};
|
365
366
|
|
366
|
-
// Safely
|
367
|
+
// Safely create a real, live array from anything iterable.
|
367
368
|
_.toArray = function(obj) {
|
368
369
|
if (!obj) return [];
|
369
370
|
if (_.isArray(obj)) return slice.call(obj);
|
@@ -422,8 +423,11 @@
|
|
422
423
|
|
423
424
|
// Internal implementation of a recursive `flatten` function.
|
424
425
|
var flatten = function(input, shallow, output) {
|
426
|
+
if (shallow && _.every(input, _.isArray)) {
|
427
|
+
return concat.apply(output, input);
|
428
|
+
}
|
425
429
|
each(input, function(value) {
|
426
|
-
if (_.isArray(value)) {
|
430
|
+
if (_.isArray(value) || _.isArguments(value)) {
|
427
431
|
shallow ? push.apply(output, value) : flatten(value, shallow, output);
|
428
432
|
} else {
|
429
433
|
output.push(value);
|
@@ -466,7 +470,7 @@
|
|
466
470
|
// Produce an array that contains the union: each distinct element from all of
|
467
471
|
// the passed-in arrays.
|
468
472
|
_.union = function() {
|
469
|
-
return _.uniq(
|
473
|
+
return _.uniq(_.flatten(arguments, true));
|
470
474
|
};
|
471
475
|
|
472
476
|
// Produce an array that contains every item shared between all the
|
@@ -490,11 +494,10 @@
|
|
490
494
|
// Zip together multiple lists into a single array -- elements that share
|
491
495
|
// an index go together.
|
492
496
|
_.zip = function() {
|
493
|
-
var
|
494
|
-
var length = _.max(_.pluck(args, 'length'));
|
497
|
+
var length = _.max(_.pluck(arguments, "length").concat(0));
|
495
498
|
var results = new Array(length);
|
496
499
|
for (var i = 0; i < length; i++) {
|
497
|
-
results[i] = _.pluck(
|
500
|
+
results[i] = _.pluck(arguments, '' + i);
|
498
501
|
}
|
499
502
|
return results;
|
500
503
|
};
|
@@ -582,7 +585,7 @@
|
|
582
585
|
// available.
|
583
586
|
_.bind = function(func, context) {
|
584
587
|
var args, bound;
|
585
|
-
if (func.bind === nativeBind
|
588
|
+
if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
|
586
589
|
if (!_.isFunction(func)) throw new TypeError;
|
587
590
|
args = slice.call(arguments, 2);
|
588
591
|
return bound = function() {
|
@@ -638,17 +641,23 @@
|
|
638
641
|
};
|
639
642
|
|
640
643
|
// Returns a function, that, when invoked, will only be triggered at most once
|
641
|
-
// during a given window of time.
|
642
|
-
|
643
|
-
|
644
|
+
// during a given window of time. Normally, the throttled function will run
|
645
|
+
// as much as it can, without ever going more than once per `wait` duration;
|
646
|
+
// but if you'd like to disable the execution on the leading edge, pass
|
647
|
+
// `{leading: false}`. To disable execution on the trailing edge, ditto.
|
648
|
+
_.throttle = function(func, wait, options) {
|
649
|
+
var context, args, result;
|
650
|
+
var timeout = null;
|
644
651
|
var previous = 0;
|
652
|
+
options || (options = {});
|
645
653
|
var later = function() {
|
646
|
-
previous = new Date;
|
654
|
+
previous = options.leading === false ? 0 : new Date;
|
647
655
|
timeout = null;
|
648
656
|
result = func.apply(context, args);
|
649
657
|
};
|
650
658
|
return function() {
|
651
659
|
var now = new Date;
|
660
|
+
if (!previous && options.leading === false) previous = now;
|
652
661
|
var remaining = wait - (now - previous);
|
653
662
|
context = this;
|
654
663
|
args = arguments;
|
@@ -657,7 +666,7 @@
|
|
657
666
|
timeout = null;
|
658
667
|
previous = now;
|
659
668
|
result = func.apply(context, args);
|
660
|
-
} else if (!timeout) {
|
669
|
+
} else if (!timeout && options.trailing !== false) {
|
661
670
|
timeout = setTimeout(later, remaining);
|
662
671
|
}
|
663
672
|
return result;
|
@@ -669,7 +678,8 @@
|
|
669
678
|
// N milliseconds. If `immediate` is passed, trigger the function on the
|
670
679
|
// leading edge, instead of the trailing.
|
671
680
|
_.debounce = function(func, wait, immediate) {
|
672
|
-
var
|
681
|
+
var result;
|
682
|
+
var timeout = null;
|
673
683
|
return function() {
|
674
684
|
var context = this, args = arguments;
|
675
685
|
var later = function() {
|
@@ -723,7 +733,6 @@
|
|
723
733
|
|
724
734
|
// Returns a function that will only be executed after being called N times.
|
725
735
|
_.after = function(times, func) {
|
726
|
-
if (times <= 0) return func();
|
727
736
|
return function() {
|
728
737
|
if (--times < 1) {
|
729
738
|
return func.apply(this, arguments);
|
@@ -739,7 +748,7 @@
|
|
739
748
|
_.keys = nativeKeys || function(obj) {
|
740
749
|
if (obj !== Object(obj)) throw new TypeError('Invalid object');
|
741
750
|
var keys = [];
|
742
|
-
for (var key in obj) if (_.has(obj, key)) keys
|
751
|
+
for (var key in obj) if (_.has(obj, key)) keys.push(key);
|
743
752
|
return keys;
|
744
753
|
};
|
745
754
|
|
@@ -835,7 +844,7 @@
|
|
835
844
|
// Internal recursive comparison function for `isEqual`.
|
836
845
|
var eq = function(a, b, aStack, bStack) {
|
837
846
|
// Identical objects are equal. `0 === -0`, but they aren't identical.
|
838
|
-
// See the Harmony `egal` proposal
|
847
|
+
// See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
|
839
848
|
if (a === b) return a !== 0 || 1 / a == 1 / b;
|
840
849
|
// A strict comparison is necessary because `null == undefined`.
|
841
850
|
if (a == null || b == null) return a === b;
|
@@ -877,6 +886,13 @@
|
|
877
886
|
// unique nested structures.
|
878
887
|
if (aStack[length] == a) return bStack[length] == b;
|
879
888
|
}
|
889
|
+
// Objects with different constructors are not equivalent, but `Object`s
|
890
|
+
// from different frames are.
|
891
|
+
var aCtor = a.constructor, bCtor = b.constructor;
|
892
|
+
if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
|
893
|
+
_.isFunction(bCtor) && (bCtor instanceof bCtor))) {
|
894
|
+
return false;
|
895
|
+
}
|
880
896
|
// Add the first object to the stack of traversed objects.
|
881
897
|
aStack.push(a);
|
882
898
|
bStack.push(b);
|
@@ -893,13 +909,6 @@
|
|
893
909
|
}
|
894
910
|
}
|
895
911
|
} else {
|
896
|
-
// Objects with different constructors are not equivalent, but `Object`s
|
897
|
-
// from different frames are.
|
898
|
-
var aCtor = a.constructor, bCtor = b.constructor;
|
899
|
-
if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
|
900
|
-
_.isFunction(bCtor) && (bCtor instanceof bCtor))) {
|
901
|
-
return false;
|
902
|
-
}
|
903
912
|
// Deep compare objects.
|
904
913
|
for (var key in a) {
|
905
914
|
if (_.has(a, key)) {
|
@@ -1023,7 +1032,7 @@
|
|
1023
1032
|
|
1024
1033
|
// Run a function **n** times.
|
1025
1034
|
_.times = function(n, iterator, context) {
|
1026
|
-
var accum = Array(n);
|
1035
|
+
var accum = Array(Math.max(0, n));
|
1027
1036
|
for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
|
1028
1037
|
return accum;
|
1029
1038
|
};
|
@@ -1044,8 +1053,7 @@
|
|
1044
1053
|
'<': '<',
|
1045
1054
|
'>': '>',
|
1046
1055
|
'"': '"',
|
1047
|
-
"'": '''
|
1048
|
-
'/': '/'
|
1056
|
+
"'": '''
|
1049
1057
|
}
|
1050
1058
|
};
|
1051
1059
|
entityMap.unescape = _.invert(entityMap.escape);
|
@@ -1066,8 +1074,8 @@
|
|
1066
1074
|
};
|
1067
1075
|
});
|
1068
1076
|
|
1069
|
-
// If the value of the named property is a function then invoke it
|
1070
|
-
// otherwise, return it.
|
1077
|
+
// If the value of the named `property` is a function then invoke it with the
|
1078
|
+
// `object` as context; otherwise, return it.
|
1071
1079
|
_.result = function(object, property) {
|
1072
1080
|
if (object == null) return void 0;
|
1073
1081
|
var value = object[property];
|
@@ -1234,4 +1242,4 @@
|
|
1234
1242
|
|
1235
1243
|
});
|
1236
1244
|
|
1237
|
-
}).call(this);
|
1245
|
+
}).call(this);
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: underscore-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.5.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Robin Wenglewski
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-07-12 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description:
|
15
14
|
email:
|
@@ -28,26 +27,25 @@ files:
|
|
28
27
|
- vendor/assets/javascripts/underscore.js
|
29
28
|
homepage: https://github.com/rweng/underscore-rails
|
30
29
|
licenses: []
|
30
|
+
metadata: {}
|
31
31
|
post_install_message:
|
32
32
|
rdoc_options: []
|
33
33
|
require_paths:
|
34
34
|
- lib
|
35
35
|
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
36
|
requirements:
|
38
|
-
- -
|
37
|
+
- - '>='
|
39
38
|
- !ruby/object:Gem::Version
|
40
39
|
version: '0'
|
41
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
41
|
requirements:
|
44
|
-
- -
|
42
|
+
- - '>='
|
45
43
|
- !ruby/object:Gem::Version
|
46
44
|
version: '0'
|
47
45
|
requirements: []
|
48
46
|
rubyforge_project: underscore-rails
|
49
|
-
rubygems_version:
|
47
|
+
rubygems_version: 2.0.3
|
50
48
|
signing_key:
|
51
|
-
specification_version:
|
49
|
+
specification_version: 4
|
52
50
|
summary: underscore.js asset pipeline provider/wrapper
|
53
51
|
test_files: []
|