Class: Ms::Data::Simple
- Inherits:
-
Object
- Object
- Ms::Data::Simple
- 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
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
The underlying resolved data store.
-
#unresolved_data ⇒ Object
readonly
The underlying unresolved data store.
Instance Method Summary collapse
- #[](index) ⇒ Object
-
#initialize(unresolved_data) ⇒ Simple
constructor
A new instance of Simple.
- #resolve ⇒ Object
- #resolved? ⇒ Boolean
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
#data ⇒ Object (readonly)
The underlying resolved data store.
32 33 34 |
# File 'lib/ms/data/simple.rb', line 32 def data @data end |
#unresolved_data ⇒ Object (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 |
#resolve ⇒ Object
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
54 55 56 |
# File 'lib/ms/data/simple.rb', line 54 def resolved? @data.compact.length == @unresolved_data.length end |