class SyncEnumerator
SyncEnumerator
creates an Enumerable object from multiple Enumerable objects and enumerates them synchronously.
Example¶ ↑
require 'generator' s = SyncEnumerator.new([1,2,3], ['a', 'b', 'c']) # Yields [1, 'a'], [2, 'b'], and [3,'c'] s.each { |row| puts row.join(', ') }
Public Class Methods
new(*enums)
click to toggle source
Creates a new SyncEnumerator
which enumerates rows of given Enumerable objects.
# File lib/rubysl/generator/generator.rb, line 190 def initialize(*enums) @gens = enums.map { |e| Generator.new(e) } end
Public Instance Methods
each() { |ret| ... }
click to toggle source
Enumerates rows of the Enumerable objects.
# File lib/rubysl/generator/generator.rb, line 218 def each @gens.each { |g| g.rewind } while true count = 0 ret = @gens.map { |g| if g.end? count += 1 nil else g.next end } break if count == @gens.size yield ret end self end
end?(i = nil)
click to toggle source
Returns true if the given nth Enumerable object has reached the end. If no argument is given, returns true if any of the Enumerable objects has reached the end.
# File lib/rubysl/generator/generator.rb, line 209 def end?(i = nil) if i.nil? @gens.detect { |g| g.end? } ? true : false else @gens[i].end? end end
length()
click to toggle source
Returns the number of enumerated Enumerable objects, i.e. the size of each row.
# File lib/rubysl/generator/generator.rb, line 202 def length @gens.length end
size()
click to toggle source
Returns the number of enumerated Enumerable objects, i.e. the size of each row.
# File lib/rubysl/generator/generator.rb, line 196 def size @gens.size end