class Jam_Func::Run

Run (private) ===============================

Attributes

err[R]
err_name[R]

Public Class Methods

new(jam, parent_run, data, arr) click to toggle source
# File lib/Jam_Func.rb, line 226
def initialize(jam, parent_run, data, arr)

  @jam        = jam
  @parent_run = parent_run
  @data       = data
  @tasks      = nil

  @proc_list = arr.map { |n|
    n.kind_of?(String) ?
      canon_name(n) :
      n
  }

end

Public Instance Methods

run() click to toggle source
# File lib/Jam_Func.rb, line 241
def run
  raise("Already running.") if @tasks

  @tasks = []

  @proc_list.each { |var|
    if var.kind_of? String
      @tasks.push(@jam.entire_list_for(var));
    else
      @tasks.push var
    end
  }

  @tasks = @tasks.flatten

  jam = Jam_Func::Jam.new(@data)

  @tasks.detect { |func|
    is_fine = catch :jam_error do
      args = [jam.data, jam.last, jam].slice(0, func.arity)
      jam._last func.call *args
      true
    end

    !is_fine
  }

  jam
end