From 2aec074acaeb2f83394b3167ce0156de336428ba Mon Sep 17 00:00:00 2001 From: Ryan W Tenney Date: Tue, 5 Oct 2010 21:10:14 -0400 Subject: [PATCH] Define aliases inline. --- underscore.js | 42 ++++++++++++++++-------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/underscore.js b/underscore.js index f28f46ff1..3580b2e94 100644 --- a/underscore.js +++ b/underscore.js @@ -59,10 +59,10 @@ // Collection Functions // -------------------- - // The cornerstone, an `each` implementation. + // The cornerstone, an `each` implementation, aka `forEach`. // Handles objects implementing `forEach`, arrays, and raw objects. // Delegates to **ECMAScript 5**'s native `forEach` if available. - var each = _.forEach = function(obj, iterator, context) { + var each = _.each = _.forEach = function(obj, iterator, context) { try { if (nativeForEach && obj.forEach === nativeForEach) { obj.forEach(iterator, context); @@ -92,7 +92,7 @@ // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available. - _.reduce = function(obj, iterator, memo, context) { + _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { if (nativeReduce && obj.reduce === nativeReduce) { if (context) iterator = _.bind(iterator, context); return obj.reduce(iterator, memo); @@ -105,7 +105,7 @@ // The right-associative version of reduce, also known as `foldr`. Uses // Delegates to **ECMAScript 5**'s native reduceRight if available. - _.reduceRight = function(obj, iterator, memo, context) { + _.reduceRight = _.foldr = function(obj, iterator, memo, context) { if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { if (context) iterator = _.bind(iterator, context); return obj.reduceRight(iterator, memo); @@ -128,7 +128,8 @@ // Return all the elements that pass a truth test. // Delegates to **ECMAScript 5**'s native `filter` if available. - _.filter = function(obj, iterator, context) { + // Aliased as `select` + _.filter = _.select = function(obj, iterator, context) { if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); var results = []; each(obj, function(value, index, list) { @@ -148,7 +149,8 @@ // Determine whether all of the elements match a truth test. // Delegates to **ECMAScript 5**'s native `every` if available. - _.every = function(obj, iterator, context) { + // Aliased as `all`. + _.every = _.all = function(obj, iterator, context) { iterator = iterator || _.identity; if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context); var result = true; @@ -160,7 +162,8 @@ // Determine if at least one element in the object matches a truth test. // Delegates to **ECMAScript 5**'s native `some` if available. - _.some = function(obj, iterator, context) { + // Aliased as `any`. + _.some = _.any = function(obj, iterator, context) { iterator = iterator || _.identity; if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); var result = false; @@ -260,7 +263,7 @@ // Get the first element of an array. Passing **n** will return the first N // values in the array. Aliased as `head`. The **guard** check allows it to work // with `_.map`. - _.first = function(array, n, guard) { + _.first = _.head = function(array, n, guard) { return n && !guard ? slice.call(array, 0, n) : array[0]; }; @@ -268,7 +271,7 @@ // Especially useful on the arguments object. Passing an **index** will return // the rest of the values in the array from that index onward. The **guard** // check allows it to work with `_.map`. - _.rest = function(array, index, guard) { + _.rest = _.tail = function(array, index, guard) { return slice.call(array, _.isUndefined(index) || guard ? 1 : index); }; @@ -307,8 +310,8 @@ }; // Produce an array that contains every item shared between all the - // passed-in arrays. - _.intersect = function(array) { + // passed-in arrays. Aliased as `contains`. + _.intersect = _.contains = function(array) { var rest = slice.call(arguments, 1); return _.filter(_.uniq(array), function(item) { return _.every(rest, function(other) { @@ -447,7 +450,8 @@ }; // Return a sorted list of the function names available on the object. - _.functions = function(obj) { + // Aliased as `methods` + _.functions = _.methods = function(obj) { return _.filter(_.keys(obj), function(key){ return _.isFunction(obj[key]); }).sort(); }; @@ -648,20 +652,6 @@ return data ? func(data) : func; }; - // Aliases: - // -------- - - _.each = _.forEach; - _.foldl = _.inject = _.reduce; - _.foldr = _.reduceRight; - _.select = _.filter; - _.all = _.every; - _.any = _.some; - _.contains = _.include; - _.head = _.first; - _.tail = _.rest; - _.methods = _.functions; - // The OOP Wrapper // ---------------