lib/open_classes/array.rb in tbpgr_utils-0.0.12 vs lib/open_classes/array.rb in tbpgr_utils-0.0.13

- old
+ new

@@ -1,23 +1,49 @@ # encoding: utf-8 # Array class Array - # Arrays loop together + # Arrays loop together. # # alpha = %w{one two three} # numbers = %w{1 2 3} # [alpha, numbers].together do |first, second| # print "#{first}:#{second}\n" # => output one:1, two:2, three:3 # end def together - each { |f|fail TypeError, "you have to use [Array1, Array2, ...] | #{f.class} is invalid" unless f.class == Array } + if_not_contain_array_rails_type_error first.each_with_index do |i_v, i| eval_each = [] each_with_index do |j_v, j| eval_each << "self[#{j}][#{i}]" end eval_each_str = eval_each.join(',') instance_eval "yield(#{eval_each_str})" end + end + + # Arrays loop together with index. + # + # alpha = %w{one two three} + # numbers = %w{1 2 3} + # [alpha, numbers].together_with_index do |first, second, index| + # print "#{index.to_s}:#{first}:#{second}\n" # => output 0:one:1, 1:two:2, 2:three:3 + # end + def together_with_index + if_not_contain_array_rails_type_error + first.each_with_index do |i_v, i| + eval_each = [] + each_with_index do |j_v, j| + eval_each << "self[#{j}][#{i}]" + end + eval_each << i + eval_each_str = eval_each.join(',') + instance_eval "yield(#{eval_each_str})" + end + end + + private + + def if_not_contain_array_rails_type_error + each { |f|fail TypeError, "you have to use [Array1, Array2, ...] | #{f.class} is invalid" unless f.class == Array } end end