From 70bbe9a894eabce6409b6e13c88b9a051bca20f7 Mon Sep 17 00:00:00 2001 From: Jun Hiroe Date: Mon, 24 Mar 2014 17:49:14 +0900 Subject: Add Enumerable#reverse_each --- mrbgems/mruby-enum-ext/mrblib/enum.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'mrbgems/mruby-enum-ext/mrblib/enum.rb') 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 -- cgit v1.2.3