underscore_extensions 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ ENV['JASMINE_SPEC_FORMAT'] = 'Fuubar'
3
3
  # ENV['JASMINE_BROWSER'] = 'chrome'
4
4
 
5
5
  require 'bundler/gem_tasks'
6
- require 'jslint/tasks'
6
+ require 'jshint/tasks'
7
7
 
8
8
  begin
9
9
  require 'jasmine'
@@ -14,6 +14,6 @@ rescue LoadError
14
14
  end
15
15
  end
16
16
 
17
- JSLint.config_path = 'config/jslint.yml'
17
+ JSHint.config_path = 'config/jshint.yml'
18
18
 
19
- task :default => [:jslint, :'jasmine:ci']
19
+ task :default => [:jshint, :'jasmine:ci']
@@ -51,13 +51,14 @@ indent: 2 # Number of spaces that should be used for indentation - use
51
51
  maxerr: 50 # The maximum number of warnings reported (per file)
52
52
  passfail: false # true if the scan should stop on first error (per file)
53
53
  # following are relevant only if undef = true
54
- predef: '' # Names of predefined global variables - comma-separated string or a YAML array
54
+ predef: # Names of predefined global variables - comma-separated string or a YAML array
55
+ - InflectionJS
55
56
  browser: true # true if the standard browser globals should be predefined
56
57
  rhino: false # true if the Rhino environment globals should be predefined
57
58
  windows: false # true if Windows-specific globals should be predefined
58
59
  widget: false # true if the Yahoo Widgets globals should be predefined
59
60
  devel: true # true if functions like alert, confirm, console, prompt etc. are predefined
60
-
61
+ validthis: true
61
62
 
62
63
  # ------------ jslint_on_rails custom lint options (switch to true to disable some annoying warnings) ------------
63
64
 
@@ -1,4 +1,7 @@
1
- (function(_) {
1
+ (function() {
2
+ 'use strict';
3
+ var exports = this, _ = exports._;
4
+
2
5
  if (_.str && _.str.exports) {
3
6
  _.mixin(_.str.exports());
4
7
  }
@@ -12,11 +15,11 @@
12
15
  else if (argLength === 2 && (result = obj && hasProperty.call(obj, key))) {
13
16
  return result;
14
17
  }
15
- return (result = obj && hasProperty.call(obj, key)) && has.apply(this, [obj[key]].concat(_(arguments).rest(2)));
18
+ return (result = obj && hasProperty.call(obj, key)) && has.apply(this, [obj[key]].concat(_.rest(arguments, 2)));
16
19
  }
17
20
 
18
21
  function namespace(obj, ns) {
19
- return _(ns).inject(function(base, n) {
22
+ return _.reduce(ns, function(base, n) {
20
23
  var _baseN = _(base[n]);
21
24
  if (_baseN.isUndefined() || _baseN.isNull()) {
22
25
  base[n] = {};
@@ -27,7 +30,7 @@
27
30
 
28
31
  _.mixin({
29
32
  has: function(obj, key) {
30
- var isArray = _(key).isArray();
33
+ var isArray = _.isArray(key);
31
34
  if (arguments.length === 2 && !isArray) {
32
35
  return hasProperty.call(obj, key);
33
36
  } else {
@@ -36,7 +39,7 @@
36
39
  },
37
40
  namespace: function(obj, ns) {
38
41
  if (arguments.length === 2) {
39
- if (_(ns).isArray()) {
42
+ if (_.isArray(ns)) {
40
43
  return namespace(obj, ns);
41
44
  } else {
42
45
  return namespace(obj, ns.split('.'));
@@ -47,10 +50,10 @@
47
50
  }
48
51
  });
49
52
 
50
- if (this.InflectionJS) {
53
+ if (exports.InflectionJS) {
51
54
  _.mixin({
52
55
  pluralize: function(obj, number, options) {
53
- if (!_(number).isNumber()) {
56
+ if (!_.isNumber(number)) {
54
57
  options = number;
55
58
  number = 0;
56
59
  }
@@ -68,4 +71,4 @@
68
71
  }
69
72
  });
70
73
  }
71
- }).call(this, _);
74
+ }).call(this);
@@ -1,5 +1,5 @@
1
1
  module UnderscoreExtensions
2
- VERSION = '0.2.3'
3
- UNDERSCORE_VERSION = '1.4.3'
2
+ VERSION = '0.2.4'
3
+ UNDERSCORE_VERSION = '1.4.4'
4
4
  UNDERSCORE_STRING_VERSION = '2.3.0'
5
5
  end
@@ -3,7 +3,7 @@ describe('_', function() {
3
3
  describe('when the namespace is passed as a single parameter with period separator', function() {
4
4
  it('should create the namespace', function() {
5
5
  var result = {};
6
- baz = _(result).namespace('foo.bar.baz');
6
+ baz = _.namespace(result, 'foo.bar.baz');
7
7
  baz.property = 'property';
8
8
  expect(result.foo.bar.baz).toBeDefined();
9
9
  expect(result.foo.bar.baz.property).toBeDefined();
@@ -11,7 +11,7 @@ describe('_', function() {
11
11
 
12
12
  it('should not overwrite existing namespaces', function() {
13
13
  var result = { foo: {a: 'b'}};
14
- baz = _(result).namespace('foo.bar.baz');
14
+ baz = _.namespace(result, 'foo.bar.baz');
15
15
  expect(result.foo.bar.baz).toBeDefined();
16
16
  expect(result.foo.a).toEqual('b');
17
17
  });
@@ -20,7 +20,7 @@ describe('_', function() {
20
20
  describe('when the namespace is passed as multiple parameters', function() {
21
21
  it('should create the namespace', function() {
22
22
  var result = {};
23
- baz = _(result).namespace('foo', 'bar', 'baz');
23
+ baz = _.namespace(result, 'foo', 'bar', 'baz');
24
24
  baz.property = 'property';
25
25
  expect(result.foo.bar.baz).toBeDefined();
26
26
  expect(result.foo.bar.baz.property).toBeDefined();
@@ -28,7 +28,7 @@ describe('_', function() {
28
28
 
29
29
  it('should not overwrite existing namespaces', function() {
30
30
  var result = { foo: {a: 'b'}};
31
- baz = _(result).namespace('foo', 'bar', 'baz');
31
+ baz = _.namespace(result, 'foo', 'bar', 'baz');
32
32
  expect(result.foo.bar.baz).toBeDefined();
33
33
  expect(result.foo.a).toEqual('b');
34
34
  });
@@ -37,7 +37,7 @@ describe('_', function() {
37
37
  describe('when the namespace is passed as an array', function() {
38
38
  it('should create the namespace', function() {
39
39
  var result = {};
40
- baz = _(result).namespace(['foo', 'bar', 'baz']);
40
+ baz = _.namespace(result, ['foo', 'bar', 'baz']);
41
41
  baz.property = 'property';
42
42
  expect(result.foo.bar.baz).toBeDefined();
43
43
  expect(result.foo.bar.baz.property).toBeDefined();
@@ -45,7 +45,7 @@ describe('_', function() {
45
45
 
46
46
  it('should not overwrite existing namespaces', function() {
47
47
  var result = { foo: {a: 'b'}};
48
- baz = _(result).namespace(['foo', 'bar', 'baz']);
48
+ baz = _.namespace(result, ['foo', 'bar', 'baz']);
49
49
  expect(result.foo.bar.baz).toBeDefined();
50
50
  expect(result.foo.a).toEqual('b');
51
51
  });
@@ -55,51 +55,51 @@ describe('_', function() {
55
55
  describe('#has', function() {
56
56
  it('should check each property on the object', function() {
57
57
  var obj = {foo: {bar: {baz: true}}};
58
- expect(_(obj).has('foo', 'fizz')).toBe(false);
59
- expect(_(obj).has('foo', 'bar', 'baz')).toBe(true);
60
- expect(_(obj).has('foo', 'bar', 'baz', 'buzz')).toBe(false);
58
+ expect(_.has(obj, 'foo', 'fizz')).toBe(false);
59
+ expect(_.has(obj, 'foo', 'bar', 'baz')).toBe(true);
60
+ expect(_.has(obj, 'foo', 'bar', 'baz', 'buzz')).toBe(false);
61
61
  });
62
62
 
63
63
  it('should check array arguments on the object', function() {
64
64
  var obj = {foo: {bar: {baz: true}}};
65
- expect(_(obj).has(['foo', 'fizz'])).toBe(false);
66
- expect(_(obj).has(['foo', 'bar', 'baz'])).toBe(true);
67
- expect(_(obj).has(['foo', 'bar', 'baz', 'buzz'])).toBe(false);
65
+ expect(_.has(obj, ['foo', 'fizz'])).toBe(false);
66
+ expect(_.has(obj, ['foo', 'bar', 'baz'])).toBe(true);
67
+ expect(_.has(obj, ['foo', 'bar', 'baz', 'buzz'])).toBe(false);
68
68
  });
69
69
  });
70
70
 
71
71
  describe('#pluralize', function() {
72
72
  it("should pluralize a model name", function() {
73
- expect(_('point').pluralize()).toEqual('points');
74
- expect(_('story').pluralize()).toEqual('stories');
73
+ expect(_.pluralize('point')).toEqual('points');
74
+ expect(_.pluralize('story')).toEqual('stories');
75
75
  });
76
76
 
77
77
  it('should pass the skip option', function() {
78
- expect(_('foo').pluralize({skip: 'foo'})).toEqual('foo');
78
+ expect(_.pluralize('foo', {skip: 'foo'})).toEqual('foo');
79
79
  });
80
80
 
81
81
  describe('when a number is provided', function() {
82
82
  it('should not pluralize when the number is 1', function() {
83
- expect(_('foo').pluralize(0)).toEqual('foos');
84
- expect(_('foo').pluralize(1)).toEqual('foo');
85
- expect(_('foo').pluralize(2)).toEqual('foos');
83
+ expect(_.pluralize('foo', 0)).toEqual('foos');
84
+ expect(_.pluralize('foo', 1)).toEqual('foo');
85
+ expect(_.pluralize('foo', 2)).toEqual('foos');
86
86
  });
87
87
 
88
88
  it('should pass the skip option', function() {
89
- expect(_('foo').pluralize(2, {skip: 'bar'})).toEqual('foos');
90
- expect(_('foo').pluralize(2, {skip: 'foo'})).toEqual('foo');
89
+ expect(_.pluralize('foo', 2, {skip: 'bar'})).toEqual('foos');
90
+ expect(_.pluralize('foo', 2, {skip: 'foo'})).toEqual('foo');
91
91
  });
92
92
  });
93
93
  });
94
94
 
95
95
  describe('#singularize', function() {
96
96
  it('should singularize a model name', function() {
97
- expect(_('octopi').singularize()).toEqual('octopus');
98
- expect(_('stories').singularize()).toEqual('story');
97
+ expect(_.singularize('octopi')).toEqual('octopus');
98
+ expect(_.singularize('stories')).toEqual('story');
99
99
  });
100
100
 
101
101
  it('should pass the skip option', function() {
102
- expect(_('foos').singularize({skip: 'foos'})).toEqual('foos');
102
+ expect(_.singularize('foos', {skip: 'foos'})).toEqual('foos');
103
103
  });
104
104
  });
105
105
  });
@@ -19,8 +19,8 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_development_dependency 'fuubar'
22
- s.add_development_dependency 'jasmine', ">= 1.2.1"
23
- s.add_development_dependency 'jslint_on_rails'
22
+ s.add_development_dependency 'jasmine', '>= 1.3.2'
23
+ s.add_development_dependency 'jshint_on_rails'
24
24
  s.add_development_dependency 'thin'
25
25
  s.add_runtime_dependency 'rails', '>= 3.1'
26
26
  end
@@ -1,12 +1,13 @@
1
- // Underscore.js 1.4.3
2
- // http://underscorejs.org
3
- // (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
4
- // Underscore may be freely distributed under the MIT license.
1
+ // Underscore.js 1.4.4
2
+ // ===================
5
3
 
6
- (function() {
4
+ // > http://underscorejs.org
5
+ // > (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.
6
+ // > Underscore may be freely distributed under the MIT license.
7
7
 
8
- // Baseline setup
9
- // --------------
8
+ // Baseline setup
9
+ // --------------
10
+ (function() {
10
11
 
11
12
  // Establish the root object, `window` in the browser, or `global` on the server.
12
13
  var root = this;
@@ -30,18 +31,18 @@
30
31
  // All **ECMAScript 5** native function implementations that we hope to use
31
32
  // are declared here.
32
33
  var
33
- nativeForEach = ArrayProto.forEach,
34
- nativeMap = ArrayProto.map,
35
- nativeReduce = ArrayProto.reduce,
36
- nativeReduceRight = ArrayProto.reduceRight,
37
- nativeFilter = ArrayProto.filter,
38
- nativeEvery = ArrayProto.every,
39
- nativeSome = ArrayProto.some,
40
- nativeIndexOf = ArrayProto.indexOf,
41
- nativeLastIndexOf = ArrayProto.lastIndexOf,
42
- nativeIsArray = Array.isArray,
43
- nativeKeys = Object.keys,
44
- nativeBind = FuncProto.bind;
34
+ nativeForEach = ArrayProto.forEach,
35
+ nativeMap = ArrayProto.map,
36
+ nativeReduce = ArrayProto.reduce,
37
+ nativeReduceRight = ArrayProto.reduceRight,
38
+ nativeFilter = ArrayProto.filter,
39
+ nativeEvery = ArrayProto.every,
40
+ nativeSome = ArrayProto.some,
41
+ nativeIndexOf = ArrayProto.indexOf,
42
+ nativeLastIndexOf = ArrayProto.lastIndexOf,
43
+ nativeIsArray = Array.isArray,
44
+ nativeKeys = Object.keys,
45
+ nativeBind = FuncProto.bind;
45
46
 
46
47
  // Create a safe reference to the Underscore object for use below.
47
48
  var _ = function(obj) {
@@ -64,7 +65,7 @@
64
65
  }
65
66
 
66
67
  // Current version.
67
- _.VERSION = '1.4.3';
68
+ _.VERSION = '1.4.4';
68
69
 
69
70
  // Collection Functions
70
71
  // --------------------
@@ -224,8 +225,9 @@
224
225
  // Invoke a method (with arguments) on every item in a collection.
225
226
  _.invoke = function(obj, method) {
226
227
  var args = slice.call(arguments, 2);
228
+ var isFunc = _.isFunction(method);
227
229
  return _.map(obj, function(value) {
228
- return (_.isFunction(method) ? method : value[method]).apply(value, args);
230
+ return (isFunc ? method : value[method]).apply(value, args);
229
231
  });
230
232
  };
231
233
 
@@ -235,10 +237,10 @@
235
237
  };
236
238
 
237
239
  // Convenience version of a common use case of `filter`: selecting only objects
238
- // with specific `key:value` pairs.
239
- _.where = function(obj, attrs) {
240
- if (_.isEmpty(attrs)) return [];
241
- return _.filter(obj, function(value) {
240
+ // containing specific `key:value` pairs.
241
+ _.where = function(obj, attrs, first) {
242
+ if (_.isEmpty(attrs)) return first ? null : [];
243
+ return _[first ? 'find' : 'filter'](obj, function(value) {
242
244
  for (var key in attrs) {
243
245
  if (attrs[key] !== value[key]) return false;
244
246
  }
@@ -246,6 +248,12 @@
246
248
  });
247
249
  };
248
250
 
251
+ // Convenience version of a common use case of `find`: getting the first object
252
+ // containing specific `key:value` pairs.
253
+ _.findWhere = function(obj, attrs) {
254
+ return _.where(obj, attrs, true);
255
+ };
256
+
249
257
  // Return the maximum element or (element-based computation).
250
258
  // Can't optimize arrays of integers longer than 65,535 elements.
251
259
  // See: https://bugs.webkit.org/show_bug.cgi?id=80797
@@ -304,14 +312,14 @@
304
312
  criteria : iterator.call(context, value, index, list)
305
313
  };
306
314
  }).sort(function(left, right) {
307
- var a = left.criteria;
308
- var b = right.criteria;
309
- if (a !== b) {
310
- if (a > b || a === void 0) return 1;
311
- if (a < b || b === void 0) return -1;
312
- }
313
- return left.index < right.index ? -1 : 1;
314
- }), 'value');
315
+ var a = left.criteria;
316
+ var b = right.criteria;
317
+ if (a !== b) {
318
+ if (a > b || a === void 0) return 1;
319
+ if (a < b || b === void 0) return -1;
320
+ }
321
+ return left.index < right.index ? -1 : 1;
322
+ }), 'value');
315
323
  };
316
324
 
317
325
  // An internal function used for aggregate "group by" operations.
@@ -567,26 +575,23 @@
567
575
  // Function (ahem) Functions
568
576
  // ------------------
569
577
 
570
- // Reusable constructor function for prototype setting.
571
- var ctor = function(){};
572
-
573
578
  // Create a function bound to a given object (assigning `this`, and arguments,
574
- // optionally). Binding with arguments is also known as `curry`.
575
- // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
576
- // We check for `func.bind` first, to fail fast when `func` is undefined.
579
+ // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
580
+ // available.
577
581
  _.bind = function(func, context) {
578
- var args, bound;
579
582
  if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
580
- if (!_.isFunction(func)) throw new TypeError;
581
- args = slice.call(arguments, 2);
582
- return bound = function() {
583
- if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
584
- ctor.prototype = func.prototype;
585
- var self = new ctor;
586
- ctor.prototype = null;
587
- var result = func.apply(self, args.concat(slice.call(arguments)));
588
- if (Object(result) === result) return result;
589
- return self;
583
+ var args = slice.call(arguments, 2);
584
+ return function() {
585
+ return func.apply(context, args.concat(slice.call(arguments)));
586
+ };
587
+ };
588
+
589
+ // Partially apply a function by creating a version that has had some of its
590
+ // arguments pre-filled, without changing its dynamic `this` context.
591
+ _.partial = function(func) {
592
+ var args = slice.call(arguments, 1);
593
+ return function() {
594
+ return func.apply(this, args.concat(slice.call(arguments)));
590
595
  };
591
596
  };
592
597
 
@@ -594,7 +599,7 @@
594
599
  // all callbacks defined on an object belong to it.
595
600
  _.bindAll = function(obj) {
596
601
  var funcs = slice.call(arguments, 1);
597
- if (funcs.length == 0) funcs = _.functions(obj);
602
+ if (funcs.length === 0) funcs = _.functions(obj);
598
603
  each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
599
604
  return obj;
600
605
  };
@@ -781,7 +786,7 @@
781
786
  return copy;
782
787
  };
783
788
 
784
- // Return a copy of the object without the blacklisted properties.
789
+ // Return a copy of the object without the blacklisted properties.
785
790
  _.omit = function(obj) {
786
791
  var copy = {};
787
792
  var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
@@ -849,9 +854,9 @@
849
854
  // RegExps are compared by their source patterns and flags.
850
855
  case '[object RegExp]':
851
856
  return a.source == b.source &&
852
- a.global == b.global &&
853
- a.multiline == b.multiline &&
854
- a.ignoreCase == b.ignoreCase;
857
+ a.global == b.global &&
858
+ a.multiline == b.multiline &&
859
+ a.ignoreCase == b.ignoreCase;
855
860
  }
856
861
  if (typeof a != 'object' || typeof b != 'object') return false;
857
862
  // Assume equality for cyclic structures. The algorithm for detecting cyclic
@@ -882,7 +887,7 @@
882
887
  // from different frames are.
883
888
  var aCtor = a.constructor, bCtor = b.constructor;
884
889
  if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
885
- _.isFunction(bCtor) && (bCtor instanceof bCtor))) {
890
+ _.isFunction(bCtor) && (bCtor instanceof bCtor))) {
886
891
  return false;
887
892
  }
888
893
  // Deep compare objects.
@@ -1019,7 +1024,7 @@
1019
1024
  max = min;
1020
1025
  min = 0;
1021
1026
  }
1022
- return min + (0 | Math.random() * (max - min + 1));
1027
+ return min + Math.floor(Math.random() * (max - min + 1));
1023
1028
  };
1024
1029
 
1025
1030
  // List of HTML entities for escaping.
@@ -1075,7 +1080,7 @@
1075
1080
  // Useful for temporary DOM ids.
1076
1081
  var idCounter = 0;
1077
1082
  _.uniqueId = function(prefix) {
1078
- var id = '' + ++idCounter;
1083
+ var id = ++idCounter + '';
1079
1084
  return prefix ? prefix + id : id;
1080
1085
  };
1081
1086
 
@@ -1110,6 +1115,7 @@
1110
1115
  // Underscore templating handles arbitrary delimiters, preserves whitespace,
1111
1116
  // and correctly escapes quotes within interpolated code.
1112
1117
  _.template = function(text, data, settings) {
1118
+ var render;
1113
1119
  settings = _.defaults({}, settings, _.templateSettings);
1114
1120
 
1115
1121
  // Combine delimiters into one regular expression via alternation.
@@ -1124,7 +1130,7 @@
1124
1130
  var source = "__p+='";
1125
1131
  text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
1126
1132
  source += text.slice(index, offset)
1127
- .replace(escaper, function(match) { return '\\' + escapes[match]; });
1133
+ .replace(escaper, function(match) { return '\\' + escapes[match]; });
1128
1134
 
1129
1135
  if (escape) {
1130
1136
  source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
@@ -1144,11 +1150,11 @@
1144
1150
  if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
1145
1151
 
1146
1152
  source = "var __t,__p='',__j=Array.prototype.join," +
1147
- "print=function(){__p+=__j.call(arguments,'');};\n" +
1148
- source + "return __p;\n";
1153
+ "print=function(){__p+=__j.call(arguments,'');};\n" +
1154
+ source + "return __p;\n";
1149
1155
 
1150
1156
  try {
1151
- var render = new Function(settings.variable || 'obj', '_', source);
1157
+ render = new Function(settings.variable || 'obj', '_', source);
1152
1158
  } catch (e) {
1153
1159
  e.source = source;
1154
1160
  throw e;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: underscore_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  prerelease:
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: 2013-01-29 00:00:00.000000000 Z
12
+ date: 2013-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fuubar
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 1.2.1
37
+ version: 1.3.2
38
38
  type: :development
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,9 +42,9 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 1.2.1
45
+ version: 1.3.2
46
46
  - !ruby/object:Gem::Dependency
47
- name: jslint_on_rails
47
+ name: jshint_on_rails
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
@@ -106,7 +106,7 @@ files:
106
106
  - Gemfile
107
107
  - README.markdown
108
108
  - Rakefile
109
- - config/jslint.yml
109
+ - config/jshint.yml
110
110
  - lib/assets/javascripts/underscore.extensions.js
111
111
  - lib/underscore_extensions.rb
112
112
  - lib/underscore_extensions/version.rb
@@ -131,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
131
  version: '0'
132
132
  segments:
133
133
  - 0
134
- hash: -1223180764248458327
134
+ hash: 1293456751333068915
135
135
  required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  none: false
137
137
  requirements:
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  segments:
142
142
  - 0
143
- hash: -1223180764248458327
143
+ hash: 1293456751333068915
144
144
  requirements: []
145
145
  rubyforge_project: underscore_extensions
146
146
  rubygems_version: 1.8.24