From fd80d4ecddcc0e652c394db3b3a92a4f12f05adc Mon Sep 17 00:00:00 2001 From: ksss Date: Mon, 17 Mar 2014 23:31:15 +0900 Subject: Enumerable#find_all return Enumerator if non block given --- mrbgems/mruby-enumerator/test/enumerator.rb | 4 ++++ mrblib/enum.rb | 2 ++ 2 files changed, 6 insertions(+) diff --git a/mrbgems/mruby-enumerator/test/enumerator.rb b/mrbgems/mruby-enumerator/test/enumerator.rb index 4ab857ae8..c7a0a3a9d 100644 --- a/mrbgems/mruby-enumerator/test/enumerator.rb +++ b/mrbgems/mruby-enumerator/test/enumerator.rb @@ -448,6 +448,10 @@ assert 'Enumerable#map' do assert_equal [[1,0],[4,1],[9,4]], c end +assert 'Enumerable#find_all' do + assert_equal [[3,4]], [[1,2],[3,4],[5,6]].find_all.each{ |i| i[1] == 4 } +end + assert 'Array#each_index' do a = [1,2,3] b = a.each_index diff --git a/mrblib/enum.rb b/mrblib/enum.rb index 5a33ed3c5..aacc35651 100644 --- a/mrblib/enum.rb +++ b/mrblib/enum.rb @@ -144,6 +144,8 @@ module Enumerable # # ISO 15.3.2.2.8 def find_all(&block) + return to_enum :find_all unless block_given? + ary = [] self.each{|*val| ary.push(val.__svalue) if block.call(*val) -- cgit v1.2.3