aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamian Janowski <damian.janowski@gmail.com>2008-11-18 18:53:06 -0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2008-11-19 10:48:41 +0100
commitf451f0e5cfa358e88ac9d03d813a9c84facd6648 (patch)
tree1b5f2831b934d92f21a8f5ab16ed536ee5e90dc8
parent917428bcce7bb22241bfc07daa5d0ddf9d107775 (diff)
downloadrails-f451f0e5cfa358e88ac9d03d813a9c84facd6648.tar.gz
rails-f451f0e5cfa358e88ac9d03d813a9c84facd6648.tar.bz2
rails-f451f0e5cfa358e88ac9d03d813a9c84facd6648.zip
Added Enumerable#none? to check that none of the elements match the block [#1408 state:committed]
Signed-off-by: David Heinemeier Hansson <david@loudthinking.com>
-rw-r--r--activesupport/CHANGELOG2
-rw-r--r--activesupport/lib/active_support/core_ext/enumerable.rb9
-rw-r--r--activesupport/test/core_ext/enumerable_test.rb10
3 files changed, 21 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
index 16d78e0201..0a4f295568 100644
--- a/activesupport/CHANGELOG
+++ b/activesupport/CHANGELOG
@@ -1,5 +1,7 @@
*2.3.0/3.0*
+* Added Enumerable#none? to check that none of the elements match the block #1408 [Damian Janowski]
+
* TimeZone offset tests: use current_period, to ensure TimeZone#utc_offset is up-to-date [Geoff Buesing]
* Update bundled TZInfo to 0.3.12 [Geoff Buesing]
diff --git a/activesupport/lib/active_support/core_ext/enumerable.rb b/activesupport/lib/active_support/core_ext/enumerable.rb
index 788f3a7e9e..12659d7008 100644
--- a/activesupport/lib/active_support/core_ext/enumerable.rb
+++ b/activesupport/lib/active_support/core_ext/enumerable.rb
@@ -104,4 +104,13 @@ module Enumerable
size = block_given? ? select(&block).size : self.size
size > 1
end
+
+ # Returns true if none of the elements match the given block.
+ #
+ # success = responses.none? {|r| r.status / 100 == 3 }
+ #
+ def none?(&block)
+ return true if !block_given? || blank?
+ !any?(&block)
+ end
end
diff --git a/activesupport/test/core_ext/enumerable_test.rb b/activesupport/test/core_ext/enumerable_test.rb
index deb9b7544d..288ce14b2c 100644
--- a/activesupport/test/core_ext/enumerable_test.rb
+++ b/activesupport/test/core_ext/enumerable_test.rb
@@ -79,4 +79,14 @@ class EnumerableTests < Test::Unit::TestCase
assert ![ 1, 2 ].many? {|x| x > 1 }
assert [ 1, 2, 2 ].many? {|x| x > 1 }
end
+
+ def test_none
+ assert [].none?
+ assert [ 1 ].none?
+
+ assert [].none? {|x| x > 1 }
+ assert ![ 2 ].none? {|x| x > 1 }
+ assert ![ 1, 2 ].none? {|x| x > 1 }
+ assert [ 1, 1 ].none? {|x| x > 1 }
+ end
end