Class: Ms::Data::Simple

Inherits:
Object
  • Object
show all
Defined in:
lib/ms/data/simple.rb

Overview

A Simple data array that lazily evaluates unresolved_data, and each member of unresolved_data using to_a:

class LazyObject
  attr_reader :to_a
  def initialize(array)
    @to_a = array
  end
end

a = LazyObject.new([1,2,3])
b = LazyObject.new([4,5,6])
s = Ms::Data::Simple.new([a, b])

s.unresolved_data     # => [a, b]
s.data                # => []
s[0]                  # => [1,2,3]
s[1]                  # => [4,5,6]
s.data                # => [[1,2,3], [4,5,6]]

Direct Known Subclasses

Interleaved, Transposed

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(unresolved_data) ⇒ Simple

Returns a new instance of Simple.



37
38
39
40
# File 'lib/ms/data/simple.rb', line 37

def initialize(unresolved_data)
  @data = []
  @unresolved_data = unresolved_data
end

Instance Attribute Details

#dataObject (readonly)

The underlying resolved data store.



32
33
34
# File 'lib/ms/data/simple.rb', line 32

def data
  @data
end

#unresolved_dataObject (readonly)

The underlying unresolved data store.



35
36
37
# File 'lib/ms/data/simple.rb', line 35

def unresolved_data
  @unresolved_data
end

Instance Method Details

#[](index) ⇒ Object



42
43
44
# File 'lib/ms/data/simple.rb', line 42

def [](index)
  @data[index] ||= @unresolved_data.to_a[index].to_a 
end

#resolveObject



46
47
48
49
50
51
52
# File 'lib/ms/data/simple.rb', line 46

def resolve
  0.upto(@unresolved_data.length - 1) do |index| 
    self[index]
  end unless resolved?
  
  self
end

#resolved?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/ms/data/simple.rb', line 54

def resolved?
  @data.compact.length == @unresolved_data.length
end