summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-enum-ext/mrblib/enum.rb
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-03-24 18:31:20 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-03-24 18:31:20 +0900
commit23610d548956cc2ba92fada791ac1de1b1026192 (patch)
tree00b5b4089f55da324dc68767e7e6c0f876de52ab /mrbgems/mruby-enum-ext/mrblib/enum.rb
parent2ce232144b5d3eacd9c3755306ee12cd28748dcf (diff)
parent70bbe9a894eabce6409b6e13c88b9a051bca20f7 (diff)
downloadmruby-23610d548956cc2ba92fada791ac1de1b1026192.tar.gz
mruby-23610d548956cc2ba92fada791ac1de1b1026192.zip
Merge pull request #1932 from suzukaze/add-enum.reverse_each
Add Enumerable#reverse_each
Diffstat (limited to 'mrbgems/mruby-enum-ext/mrblib/enum.rb')
-rw-r--r--mrbgems/mruby-enum-ext/mrblib/enum.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/mrbgems/mruby-enum-ext/mrblib/enum.rb b/mrbgems/mruby-enum-ext/mrblib/enum.rb
index c3e1b2501..6ac1812ee 100644
--- a/mrbgems/mruby-enum-ext/mrblib/enum.rb
+++ b/mrbgems/mruby-enum-ext/mrblib/enum.rb
@@ -498,4 +498,29 @@ module Enumerable
self.each {|*val| block.call(val.__svalue, obj) }
obj
end
+
+ ##
+ # call-seq:
+ # enum.reverse_each { |item| block } -> enum
+ # enum.reverse_each -> an_enumerator
+ #
+ # Builds a temporary array and traverses that array in reverse order.
+ #
+ # If no block is given, an enumerator is returned instead.
+ #
+ # (1..3).reverse_each { |v| p v }
+ #
+ # produces:
+ #
+ # 3
+ # 2
+ # 1
+ #
+
+ def reverse_each(&block)
+ ary = []
+ self.each {|*val| ary.unshift(*val) }
+ ary.each {|*val| block.call(*val) }
+ self
+ end
end