Class Spruz::Generator
In: lib/spruz/generator.rb
Parent: Object

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 = Spruz::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 Spruz::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"]]

Methods

[]   add_dimension   each   new   size  

Included Modules

Enumerable

Public Class methods

Create a new Generator object from the enumberables enums.

Create a new Generator instance. Use the objects in the Array enums as dimensions. The should all respond to the :each method (see module Enumerable in the core ruby library).

Public Instance methods

Add another dimension to this generator. enum is an object, that ought to respond to the iterator method (defaults to :each).

Iterate over all tuples produced by this generator and yield to them.

Return the size of this generator, that is the number of its dimensions.

[Validate]