Added block-handling to Enumerable#many? (Damian Janowski) [#452 state:resolved]

上级 00ba4c0c
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Added Object#present? which is equivalent to !Object#blank? [DHH] * Added Object#present? which is equivalent to !Object#blank? [DHH]
* Added Enumberable#many? to encapsulate collection.size > 1 [DHH] * Added Enumberable#many? to encapsulate collection.size > 1 [DHH/Damian Janowski]
* Add more standard Hash methods to ActiveSupport::OrderedHash [Steve Purcell] * Add more standard Hash methods to ActiveSupport::OrderedHash [Steve Purcell]
......
...@@ -79,7 +79,9 @@ def index_by ...@@ -79,7 +79,9 @@ def index_by
end end
# Returns true if the collection has more than 1 element. Functionally equivalent to collection.size > 1. # Returns true if the collection has more than 1 element. Functionally equivalent to collection.size > 1.
def many? # Works with a block too ala any?, so people.many? { |p| p.age > 26 } # => returns true if more than 1 person is over 26.
def many?(&block)
size = block_given? ? select(&block).size : self.size
size > 1 size > 1
end end
end end
...@@ -63,10 +63,15 @@ def test_index_by ...@@ -63,10 +63,15 @@ def test_index_by
assert_equal({ 5 => payments[0], 15 => payments[1], 10 => payments[2] }, assert_equal({ 5 => payments[0], 15 => payments[1], 10 => payments[2] },
payments.index_by { |p| p.price }) payments.index_by { |p| p.price })
end end
def test_several def test_many
assert ![].many? assert ![].many?
assert ![ 1 ].many? assert ![ 1 ].many?
assert [ 1, 2 ].many? assert [ 1, 2 ].many?
assert ![].many? {|x| x > 1 }
assert ![ 2 ].many? {|x| x > 1 }
assert ![ 1, 2 ].many? {|x| x > 1 }
assert [ 1, 2, 2 ].many? {|x| x > 1 }
end end
end end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册