class DelayedResult

Public Class Methods

new(&resolver) click to toggle source
# File lib/wimp.rb, line 4
def initialize(&resolver)
  @resolver = resolver
end
zip(*results, &block) click to toggle source
# File lib/wimp.rb, line 14
def self.zip(*results, &block)
  DelayedResult.new do
    results = results.map(&:value!)
    block.(*results)
  end
end

Public Instance Methods

then(&block) click to toggle source
# File lib/wimp.rb, line 8
def then(&block)
  DelayedResult.new do
    block.(value!)
  end
end
value() click to toggle source
# File lib/wimp.rb, line 31
def value
  value!
end
value!() click to toggle source
# File lib/wimp.rb, line 21
def value!
  @value ||= @resolver.().yield_self do |val|
    if val&.is_a?(DelayedResult)
      val.value!
    else
      val
    end
  end
end