Class: Eurydice::ColumnEnumerator

Inherits:
ColumnEnumeratorBase show all
Defined in:
lib/eurydice/column_enumerator.rb

Instance Method Summary collapse

Methods inherited from ColumnEnumeratorBase

#each

Constructor Details

#initialize(*args) ⇒ ColumnEnumerator

Returns a new instance of ColumnEnumerator.



29
30
31
32
# File 'lib/eurydice/column_enumerator.rb', line 29

def initialize(*args)
  super
  rewind
end

Instance Method Details

#nextObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/eurydice/column_enumerator.rb', line 34

def next
  if @buffer.empty? && @exhausted
    raise StopIteration
  elsif @buffer.empty?
    result = @column_family.get(@row_key, @options.merge(from_column: @offset))
    keys = result.keys if result
    if result.nil? || result.empty? || keys.last == @offset
      @exhausted = true
      raise StopIteration
    end
    result.shift if keys.first == @offset
    result.each do |pair|
      @buffer << pair
    end
    @offset = keys.last
  end
  @buffer.shift
end

#rewindObject



53
54
55
56
57
58
# File 'lib/eurydice/column_enumerator.rb', line 53

def rewind
  @offset = @options[:from_column] || (@options[:reversed] ? LAST_KEY : FIRST_KEY)
  @reversed = @options[:reversed]
  @buffer = []
  @exhausted = false
end