Class: DelayedResult

Inherits:
Object
  • Object
show all
Defined in:
lib/master_loader.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(&resolver) ⇒ DelayedResult

Returns a new instance of DelayedResult.

[View source]

2
3
4
# File 'lib/master_loader.rb', line 2

def initialize(&resolver)
  @resolver = resolver
end

Class Method Details

.zip(*results, &block) ⇒ Object

[View source]

12
13
14
15
16
17
# File 'lib/master_loader.rb', line 12

def self.zip(*results, &block)
  DelayedResult.new do
    results = results.map(&:value!)
    block.call(*results)
  end
end

Instance Method Details

#then(&block) ⇒ Object

[View source]

6
7
8
9
10
# File 'lib/master_loader.rb', line 6

def then(&block)
  DelayedResult.new do
    block.call(value!)
  end
end

#valueObject

[View source]

29
30
31
# File 'lib/master_loader.rb', line 29

def value
  value!
end

#value!Object

[View source]

19
20
21
22
23
24
25
26
27
# File 'lib/master_loader.rb', line 19

def value!
  @value ||= @resolver.call.yield_self do |val|
    if val&.is_a?(DelayedResult)
      val.value!
    else
      val
    end
  end
end