class Core::Async::Collection

Public Class Methods

build(object) { |value| ... } click to toggle source
public

Builds a collection from an enumerable object.

# File lib/core/async/collection.rb, line 15
def build(object)
  aware do
    errored, stopped = false

    values = object.map { |value|
      break if errored || stopped

      async do
        if block_given?
          yield value
        else
          value
        end
      rescue LocalJumpError
        stopped = true
      rescue => error
        errored = true
        raise error
      end
    }

    new(values) if values
  end
end
new(values = []) click to toggle source
# File lib/core/async/collection.rb, line 45
def initialize(values = [])
  unless values.respond_to?(:each)
    raise ArgumentError, "values are not enumerable"
  end

  @values = values
end

Public Instance Methods

<<(value) click to toggle source
public

Adds a value to the collection.

# File lib/core/async/collection.rb, line 55
def <<(value)
  @values << value
end
Also aliased as: add
add(value)
Alias for: <<
each() { |resolve(value)| ... } click to toggle source
public

Yields each resolved value.

# File lib/core/async/collection.rb, line 62
def each
  return to_enum(:each) unless block_given?

  @values.each do |value|
    yield resolve(value)
  end
end