backbone-rails 1.0.0 → 1.0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/vendor/assets/javascripts/underscore.js +71 -52
- metadata +9 -14
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 31740c79831d708b571368016edaad0bf3c9dc45
|
4
|
+
data.tar.gz: f5b0583211f67eaafd3d711e4d05714e6c38784f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3691fa72a0cc29f728cd895598b6afe8f0f87b0e3c3a51bb5a91c93ed1d77ba0493bd1240c596c91c55a747b0540864219a25341876671439718ffece21b672a
|
7
|
+
data.tar.gz: 1b58614d37a07d0f70cdfa7346da85d752fbca398180a121ec7d4396d3d980c2c308c65319a4c7a56ec2d8b9dfd54e1873455a89a1941960b6a6885a9a2e6604
|
@@ -1,14 +1,13 @@
|
|
1
|
-
//
|
2
|
-
//
|
1
|
+
// Underscore.js 1.5.1
|
2
|
+
// http://underscorejs.org
|
3
|
+
// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
4
|
+
// Underscore may be freely distributed under the MIT license.
|
3
5
|
|
4
|
-
// > http://underscorejs.org
|
5
|
-
// > (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
|
6
|
-
// > Underscore may be freely distributed under the MIT license.
|
7
|
-
|
8
|
-
// Baseline setup
|
9
|
-
// --------------
|
10
6
|
(function() {
|
11
7
|
|
8
|
+
// Baseline setup
|
9
|
+
// --------------
|
10
|
+
|
12
11
|
// Establish the root object, `window` in the browser, or `global` on the server.
|
13
12
|
var root = this;
|
14
13
|
|
@@ -22,11 +21,12 @@
|
|
22
21
|
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
|
23
22
|
|
24
23
|
// Create quick reference variables for speed access to core prototypes.
|
25
|
-
var
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
var
|
25
|
+
push = ArrayProto.push,
|
26
|
+
slice = ArrayProto.slice,
|
27
|
+
concat = ArrayProto.concat,
|
28
|
+
toString = ObjProto.toString,
|
29
|
+
hasOwnProperty = ObjProto.hasOwnProperty;
|
30
30
|
|
31
31
|
// All **ECMAScript 5** native function implementations that we hope to use
|
32
32
|
// are declared here.
|
@@ -65,7 +65,7 @@
|
|
65
65
|
}
|
66
66
|
|
67
67
|
// Current version.
|
68
|
-
_.VERSION = '1.
|
68
|
+
_.VERSION = '1.5.1';
|
69
69
|
|
70
70
|
// Collection Functions
|
71
71
|
// --------------------
|
@@ -97,7 +97,7 @@
|
|
97
97
|
if (obj == null) return results;
|
98
98
|
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
|
99
99
|
each(obj, function(value, index, list) {
|
100
|
-
results
|
100
|
+
results.push(iterator.call(context, value, index, list));
|
101
101
|
});
|
102
102
|
return results;
|
103
103
|
};
|
@@ -172,7 +172,7 @@
|
|
172
172
|
if (obj == null) return results;
|
173
173
|
if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
|
174
174
|
each(obj, function(value, index, list) {
|
175
|
-
if (iterator.call(context, value, index, list)) results
|
175
|
+
if (iterator.call(context, value, index, list)) results.push(value);
|
176
176
|
});
|
177
177
|
return results;
|
178
178
|
};
|
@@ -239,7 +239,7 @@
|
|
239
239
|
// Convenience version of a common use case of `filter`: selecting only objects
|
240
240
|
// containing specific `key:value` pairs.
|
241
241
|
_.where = function(obj, attrs, first) {
|
242
|
-
if (_.isEmpty(attrs)) return first ?
|
242
|
+
if (_.isEmpty(attrs)) return first ? void 0 : [];
|
243
243
|
return _[first ? 'find' : 'filter'](obj, function(value) {
|
244
244
|
for (var key in attrs) {
|
245
245
|
if (attrs[key] !== value[key]) return false;
|
@@ -256,7 +256,7 @@
|
|
256
256
|
|
257
257
|
// Return the maximum element or (element-based computation).
|
258
258
|
// Can't optimize arrays of integers longer than 65,535 elements.
|
259
|
-
// See
|
259
|
+
// See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
|
260
260
|
_.max = function(obj, iterator, context) {
|
261
261
|
if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
|
262
262
|
return Math.max.apply(Math, obj);
|
@@ -265,7 +265,7 @@
|
|
265
265
|
var result = {computed : -Infinity, value: -Infinity};
|
266
266
|
each(obj, function(value, index, list) {
|
267
267
|
var computed = iterator ? iterator.call(context, value, index, list) : value;
|
268
|
-
computed
|
268
|
+
computed > result.computed && (result = {value : value, computed : computed});
|
269
269
|
});
|
270
270
|
return result.value;
|
271
271
|
};
|
@@ -325,7 +325,7 @@
|
|
325
325
|
// An internal function used for aggregate "group by" operations.
|
326
326
|
var group = function(obj, value, context, behavior) {
|
327
327
|
var result = {};
|
328
|
-
var iterator = lookupIterator(value
|
328
|
+
var iterator = lookupIterator(value == null ? _.identity : value);
|
329
329
|
each(obj, function(value, index) {
|
330
330
|
var key = iterator.call(context, value, index, obj);
|
331
331
|
behavior(result, key, value);
|
@@ -364,7 +364,7 @@
|
|
364
364
|
return low;
|
365
365
|
};
|
366
366
|
|
367
|
-
// Safely
|
367
|
+
// Safely create a real, live array from anything iterable.
|
368
368
|
_.toArray = function(obj) {
|
369
369
|
if (!obj) return [];
|
370
370
|
if (_.isArray(obj)) return slice.call(obj);
|
@@ -423,8 +423,11 @@
|
|
423
423
|
|
424
424
|
// Internal implementation of a recursive `flatten` function.
|
425
425
|
var flatten = function(input, shallow, output) {
|
426
|
+
if (shallow && _.every(input, _.isArray)) {
|
427
|
+
return concat.apply(output, input);
|
428
|
+
}
|
426
429
|
each(input, function(value) {
|
427
|
-
if (_.isArray(value)) {
|
430
|
+
if (_.isArray(value) || _.isArguments(value)) {
|
428
431
|
shallow ? push.apply(output, value) : flatten(value, shallow, output);
|
429
432
|
} else {
|
430
433
|
output.push(value);
|
@@ -467,7 +470,7 @@
|
|
467
470
|
// Produce an array that contains the union: each distinct element from all of
|
468
471
|
// the passed-in arrays.
|
469
472
|
_.union = function() {
|
470
|
-
return _.uniq(
|
473
|
+
return _.uniq(_.flatten(arguments, true));
|
471
474
|
};
|
472
475
|
|
473
476
|
// Produce an array that contains every item shared between all the
|
@@ -491,11 +494,10 @@
|
|
491
494
|
// Zip together multiple lists into a single array -- elements that share
|
492
495
|
// an index go together.
|
493
496
|
_.zip = function() {
|
494
|
-
var
|
495
|
-
var length = _.max(_.pluck(args, 'length'));
|
497
|
+
var length = _.max(_.pluck(arguments, "length").concat(0));
|
496
498
|
var results = new Array(length);
|
497
499
|
for (var i = 0; i < length; i++) {
|
498
|
-
results[i] = _.pluck(
|
500
|
+
results[i] = _.pluck(arguments, '' + i);
|
499
501
|
}
|
500
502
|
return results;
|
501
503
|
};
|
@@ -575,14 +577,25 @@
|
|
575
577
|
// Function (ahem) Functions
|
576
578
|
// ------------------
|
577
579
|
|
580
|
+
// Reusable constructor function for prototype setting.
|
581
|
+
var ctor = function(){};
|
582
|
+
|
578
583
|
// Create a function bound to a given object (assigning `this`, and arguments,
|
579
584
|
// optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
|
580
585
|
// available.
|
581
586
|
_.bind = function(func, context) {
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
587
|
+
var args, bound;
|
588
|
+
if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
|
589
|
+
if (!_.isFunction(func)) throw new TypeError;
|
590
|
+
args = slice.call(arguments, 2);
|
591
|
+
return bound = function() {
|
592
|
+
if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
|
593
|
+
ctor.prototype = func.prototype;
|
594
|
+
var self = new ctor;
|
595
|
+
ctor.prototype = null;
|
596
|
+
var result = func.apply(self, args.concat(slice.call(arguments)));
|
597
|
+
if (Object(result) === result) return result;
|
598
|
+
return self;
|
586
599
|
};
|
587
600
|
};
|
588
601
|
|
@@ -599,7 +612,7 @@
|
|
599
612
|
// all callbacks defined on an object belong to it.
|
600
613
|
_.bindAll = function(obj) {
|
601
614
|
var funcs = slice.call(arguments, 1);
|
602
|
-
if (funcs.length === 0)
|
615
|
+
if (funcs.length === 0) throw new Error("bindAll must be passed function names");
|
603
616
|
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
|
604
617
|
return obj;
|
605
618
|
};
|
@@ -628,17 +641,23 @@
|
|
628
641
|
};
|
629
642
|
|
630
643
|
// Returns a function, that, when invoked, will only be triggered at most once
|
631
|
-
// during a given window of time.
|
632
|
-
|
633
|
-
|
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;
|
634
651
|
var previous = 0;
|
652
|
+
options || (options = {});
|
635
653
|
var later = function() {
|
636
|
-
previous = new Date;
|
654
|
+
previous = options.leading === false ? 0 : new Date;
|
637
655
|
timeout = null;
|
638
656
|
result = func.apply(context, args);
|
639
657
|
};
|
640
658
|
return function() {
|
641
659
|
var now = new Date;
|
660
|
+
if (!previous && options.leading === false) previous = now;
|
642
661
|
var remaining = wait - (now - previous);
|
643
662
|
context = this;
|
644
663
|
args = arguments;
|
@@ -647,7 +666,7 @@
|
|
647
666
|
timeout = null;
|
648
667
|
previous = now;
|
649
668
|
result = func.apply(context, args);
|
650
|
-
} else if (!timeout) {
|
669
|
+
} else if (!timeout && options.trailing !== false) {
|
651
670
|
timeout = setTimeout(later, remaining);
|
652
671
|
}
|
653
672
|
return result;
|
@@ -659,7 +678,8 @@
|
|
659
678
|
// N milliseconds. If `immediate` is passed, trigger the function on the
|
660
679
|
// leading edge, instead of the trailing.
|
661
680
|
_.debounce = function(func, wait, immediate) {
|
662
|
-
var
|
681
|
+
var result;
|
682
|
+
var timeout = null;
|
663
683
|
return function() {
|
664
684
|
var context = this, args = arguments;
|
665
685
|
var later = function() {
|
@@ -713,7 +733,6 @@
|
|
713
733
|
|
714
734
|
// Returns a function that will only be executed after being called N times.
|
715
735
|
_.after = function(times, func) {
|
716
|
-
if (times <= 0) return func();
|
717
736
|
return function() {
|
718
737
|
if (--times < 1) {
|
719
738
|
return func.apply(this, arguments);
|
@@ -729,7 +748,7 @@
|
|
729
748
|
_.keys = nativeKeys || function(obj) {
|
730
749
|
if (obj !== Object(obj)) throw new TypeError('Invalid object');
|
731
750
|
var keys = [];
|
732
|
-
for (var key in obj) if (_.has(obj, key)) keys
|
751
|
+
for (var key in obj) if (_.has(obj, key)) keys.push(key);
|
733
752
|
return keys;
|
734
753
|
};
|
735
754
|
|
@@ -801,7 +820,7 @@
|
|
801
820
|
each(slice.call(arguments, 1), function(source) {
|
802
821
|
if (source) {
|
803
822
|
for (var prop in source) {
|
804
|
-
if (obj[prop]
|
823
|
+
if (obj[prop] === void 0) obj[prop] = source[prop];
|
805
824
|
}
|
806
825
|
}
|
807
826
|
});
|
@@ -825,7 +844,7 @@
|
|
825
844
|
// Internal recursive comparison function for `isEqual`.
|
826
845
|
var eq = function(a, b, aStack, bStack) {
|
827
846
|
// Identical objects are equal. `0 === -0`, but they aren't identical.
|
828
|
-
// See the Harmony `egal` proposal
|
847
|
+
// See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
|
829
848
|
if (a === b) return a !== 0 || 1 / a == 1 / b;
|
830
849
|
// A strict comparison is necessary because `null == undefined`.
|
831
850
|
if (a == null || b == null) return a === b;
|
@@ -867,6 +886,13 @@
|
|
867
886
|
// unique nested structures.
|
868
887
|
if (aStack[length] == a) return bStack[length] == b;
|
869
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
|
+
}
|
870
896
|
// Add the first object to the stack of traversed objects.
|
871
897
|
aStack.push(a);
|
872
898
|
bStack.push(b);
|
@@ -883,13 +909,6 @@
|
|
883
909
|
}
|
884
910
|
}
|
885
911
|
} else {
|
886
|
-
// Objects with different constructors are not equivalent, but `Object`s
|
887
|
-
// from different frames are.
|
888
|
-
var aCtor = a.constructor, bCtor = b.constructor;
|
889
|
-
if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
|
890
|
-
_.isFunction(bCtor) && (bCtor instanceof bCtor))) {
|
891
|
-
return false;
|
892
|
-
}
|
893
912
|
// Deep compare objects.
|
894
913
|
for (var key in a) {
|
895
914
|
if (_.has(a, key)) {
|
@@ -1013,7 +1032,7 @@
|
|
1013
1032
|
|
1014
1033
|
// Run a function **n** times.
|
1015
1034
|
_.times = function(n, iterator, context) {
|
1016
|
-
var accum = Array(n);
|
1035
|
+
var accum = Array(Math.max(0, n));
|
1017
1036
|
for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
|
1018
1037
|
return accum;
|
1019
1038
|
};
|
@@ -1056,10 +1075,10 @@
|
|
1056
1075
|
};
|
1057
1076
|
});
|
1058
1077
|
|
1059
|
-
// If the value of the named property is a function then invoke it
|
1060
|
-
// otherwise, return it.
|
1078
|
+
// If the value of the named `property` is a function then invoke it with the
|
1079
|
+
// `object` as context; otherwise, return it.
|
1061
1080
|
_.result = function(object, property) {
|
1062
|
-
if (object == null) return
|
1081
|
+
if (object == null) return void 0;
|
1063
1082
|
var value = object[property];
|
1064
1083
|
return _.isFunction(value) ? value.call(object) : value;
|
1065
1084
|
};
|
metadata
CHANGED
@@ -1,30 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: backbone-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Alexander Flatter
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-07-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.0.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.0.0
|
30
27
|
description: Ships backbone and underscore to your Rails 3.1 application through the
|
@@ -47,27 +44,25 @@ files:
|
|
47
44
|
- README.md
|
48
45
|
homepage: https://github.com/aflatter/backbone-rails
|
49
46
|
licenses: []
|
47
|
+
metadata: {}
|
50
48
|
post_install_message:
|
51
49
|
rdoc_options: []
|
52
50
|
require_paths:
|
53
51
|
- lib
|
54
52
|
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
53
|
requirements:
|
57
|
-
- -
|
54
|
+
- - '>='
|
58
55
|
- !ruby/object:Gem::Version
|
59
56
|
version: '0'
|
60
57
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
58
|
requirements:
|
63
|
-
- -
|
59
|
+
- - '>='
|
64
60
|
- !ruby/object:Gem::Version
|
65
61
|
version: 1.3.6
|
66
62
|
requirements: []
|
67
63
|
rubyforge_project:
|
68
|
-
rubygems_version:
|
64
|
+
rubygems_version: 2.0.4
|
69
65
|
signing_key:
|
70
|
-
specification_version:
|
66
|
+
specification_version: 4
|
71
67
|
summary: backbone and underscore for Rails
|
72
68
|
test_files: []
|
73
|
-
has_rdoc:
|