From 62c814d9fee214c19cf29695ded2eaab6bbaf0f8 Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Fri, 30 Dec 2011 15:07:22 -0500 Subject: [PATCH] Fixes #408: _.chain(object) as well as _(object).chain() --- test/chaining.js | 12 ++++++++++++ underscore.js | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/test/chaining.js b/test/chaining.js index 64b0500ef..0e3d5f385 100644 --- a/test/chaining.js +++ b/test/chaining.js @@ -32,6 +32,18 @@ $(document).ready(function() { equals(numbers.join(', '), "10, 6, 2", "filtered and reversed the numbers"); }); + test("chaining: select/reject/sortBy in functional style", function() { + var numbers = [1,2,3,4,5,6,7,8,9,10]; + numbers = _.chain(numbers).select(function(n) { + return n % 2 == 0; + }).reject(function(n) { + return n % 4 == 0; + }).sortBy(function(n) { + return -n; + }).value(); + equals(numbers.join(', '), "10, 6, 2", "filtered and reversed the numbers"); + }); + test("chaining: reverse/concat/unshift/pop/map", function() { var numbers = [1,2,3,4,5]; numbers = _(numbers).chain() diff --git a/underscore.js b/underscore.js index 73b3873f1..8111346a2 100644 --- a/underscore.js +++ b/underscore.js @@ -923,6 +923,11 @@ }; }; + // Add a "chain" function, which will delegate to the wrapper. + _.chain = function(obj) { + return _(obj).chain(); + }; + // The OOP Wrapper // ---------------