class Ms::Data::Simple

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]]

Attributes

data[R]

The underlying resolved data store.

unresolved_data[R]

The underlying unresolved data store.

Public Class Methods

new(unresolved_data) click to toggle source
# File lib/ms/data/simple.rb, line 37
def initialize(unresolved_data)
  @data = []
  @unresolved_data = unresolved_data
end

Public Instance Methods

[](index) click to toggle source
# File lib/ms/data/simple.rb, line 42
def [](index)
  @data[index] ||= @unresolved_data.to_a[index].to_a 
end
resolve() click to toggle source
# 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?() click to toggle source
# File lib/ms/data/simple.rb, line 54
def resolved?
  @data.compact.length == @unresolved_data.length
end