underscore-source 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  module Underscore
2
2
  module Source
3
- VERSION = "1.0.4"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
@@ -55,7 +55,7 @@
55
55
  root._ = _;
56
56
 
57
57
  // Current version.
58
- _.VERSION = '1.0.4';
58
+ _.VERSION = '1.1.0';
59
59
 
60
60
  // ------------------------ Collection Functions: ---------------------------
61
61
 
@@ -92,8 +92,11 @@
92
92
 
93
93
  // Reduce builds up a single result from a list of values, aka inject, or foldl.
94
94
  // Delegates to JavaScript 1.8's native reduce if available.
95
- _.reduce = function(obj, memo, iterator, context) {
96
- if (nativeReduce && obj.reduce === nativeReduce) return obj.reduce(_.bind(iterator, context), memo);
95
+ _.reduce = function(obj, iterator, memo, context) {
96
+ if (nativeReduce && obj.reduce === nativeReduce) {
97
+ if (context) iterator = _.bind(iterator, context);
98
+ return obj.reduce(iterator, memo);
99
+ }
97
100
  each(obj, function(value, index, list) {
98
101
  memo = iterator.call(context, memo, value, index, list);
99
102
  });
@@ -102,10 +105,13 @@
102
105
 
103
106
  // The right-associative version of reduce, also known as foldr. Uses
104
107
  // Delegates to JavaScript 1.8's native reduceRight if available.
105
- _.reduceRight = function(obj, memo, iterator, context) {
106
- if (nativeReduceRight && obj.reduceRight === nativeReduceRight) return obj.reduceRight(_.bind(iterator, context), memo);
108
+ _.reduceRight = function(obj, iterator, memo, context) {
109
+ if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
110
+ if (context) iterator = _.bind(iterator, context);
111
+ return obj.reduceRight(iterator, memo);
112
+ }
107
113
  var reversed = _.clone(_.toArray(obj)).reverse();
108
- return _.reduce(reversed, memo, iterator, context);
114
+ return _.reduce(reversed, iterator, memo, context);
109
115
  };
110
116
 
111
117
  // Return the first value which passes a truth test.
@@ -277,11 +283,11 @@
277
283
 
278
284
  // Return a completely flattened version of an array.
279
285
  _.flatten = function(array) {
280
- return _.reduce(array, [], function(memo, value) {
286
+ return _.reduce(array, function(memo, value) {
281
287
  if (_.isArray(value)) return memo.concat(_.flatten(value));
282
288
  memo.push(value);
283
289
  return memo;
284
- });
290
+ }, []);
285
291
  };
286
292
 
287
293
  // Return a version of the array that does not contain the specified value(s).
@@ -293,10 +299,10 @@
293
299
  // Produce a duplicate-free version of the array. If the array has already
294
300
  // been sorted, you have the option of using a faster algorithm.
295
301
  _.uniq = function(array, isSorted) {
296
- return _.reduce(array, [], function(memo, el, i) {
302
+ return _.reduce(array, function(memo, el, i) {
297
303
  if (0 == i || (isSorted === true ? _.last(memo) != el : !_.include(memo, el))) memo.push(el);
298
304
  return memo;
299
- });
305
+ }, []);
300
306
  };
301
307
 
302
308
  // Produce an array that contains every item shared between all the
@@ -619,17 +625,19 @@
619
625
  // JavaScript templating a-la ERB, pilfered from John Resig's
620
626
  // "Secrets of the JavaScript Ninja", page 83.
621
627
  // Single-quote fix from Rick Strahl's version.
622
- // With alterations for arbitrary delimiters.
628
+ // With alterations for arbitrary delimiters, and to preserve whitespace.
623
629
  _.template = function(str, data) {
624
630
  var c = _.templateSettings;
625
631
  var endMatch = new RegExp("'(?=[^"+c.end.substr(0, 1)+"]*"+escapeRegExp(c.end)+")","g");
626
632
  var fn = new Function('obj',
627
633
  'var p=[],print=function(){p.push.apply(p,arguments);};' +
628
- 'with(obj){p.push(\'' +
629
- str.replace(/[\r\t\n]/g, " ")
630
- .replace(endMatch,"\t")
634
+ 'with(obj||{}){p.push(\'' +
635
+ str.replace(/\r/g, '\\r')
636
+ .replace(/\n/g, '\\n')
637
+ .replace(/\t/g, '\\t')
638
+ .replace(endMatch,"✄")
631
639
  .split("'").join("\\'")
632
- .split("\t").join("'")
640
+ .split("").join("'")
633
641
  .replace(c.interpolate, "',$1,'")
634
642
  .split(c.start).join("');")
635
643
  .split(c.end).join("p.push('")
@@ -645,6 +653,7 @@
645
653
  _.select = _.filter;
646
654
  _.all = _.every;
647
655
  _.any = _.some;
656
+ _.contains = _.include;
648
657
  _.head = _.first;
649
658
  _.tail = _.rest;
650
659
  _.methods = _.functions;
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: underscore-source
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.4
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Daniel X. Moore