Sha256: 4a1053cad6ce4a879bf126a628cc35348b1428163d36baab21c2e0e7e96627c3

Contents?: true

Size: 886 Bytes

Versions: 2

Compression:

Stored size: 886 Bytes

Contents

# frozen_string_literal: true

class Batch

  def each(&proc)
    value.each do |val|
      instance_exec(val, &proc) if proc.is_a?(Proc)
    end
  end

  def id(val = nil)
    if val
      @id = val
    else
      @id
    end
  end

  def initialize(params)
    @id = params[:id] || identity_generator(:batch)
    Universe.add_to_atomes(@id, self)
    Universe.add_to_atomes(@id, self)
  end

  def dispatch (method, *args, &block)
    @data.each do |atome_found|
      atome_found.send(method, *args, &block)
    end
  end

  # TODO:  automatise collector methods creation when creating a new atome type
  def color(args, &block)

    dispatch(:color, args, &block)
  end

  def shadow(args, &block)
    dispatch(:color, args, &block)
  end

  def method_missing(method, *args, &block)
    dispatch(method, args, &block)
  end

  def data(collection)
    @data = collection
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
atome-0.5.3.8.1 lib/atome/kernel/batch.rb
atome-0.5.3.8.0 lib/atome/kernel/batch.rb