class Tins::Generator

This class can create generator objects, that can produce all tuples, that would be created by as many for-loops as dimensions were given.

The generator

g = Tins::Generator[1..2, %w[a b c]]

produces

g.to_a # => [[1, "a"], [1, "b"], [1, "c"], [2, "a"], [2, "b"], [2, "c"]]

The ‘each’ method can be used to iterate over the tuples

g.each { |a, b| puts "#{a} #{b}" }

and Tins::Generator includes the Enumerable module, so Enumerable.instance_methods can be used as well:

g.select { |a, b| %w[a c].include? b  } # => [[1, "a"], [1, "c"], [2, "a"], [2, "c"]]