class Aristotle::Command

Attributes

action[R]
action_proc[R]
condition[R]
condition_proc[R]

Public Class Methods

new(line, conditions, actions) click to toggle source
# File lib/aristotle/command.rb, line 5
def initialize(line, conditions, actions)
  @action, @condition = line.split(' if ', 2).map(&:strip)

  raise 'Badly formatted line' if @action == '' || @condition == ''

  conditions.each do |condition_regexp, condition_proc|
    match_data = condition_regexp.match(@condition)
    if match_data
      @condition_proc = condition_proc
      @condition_attributes = match_data.to_a[1..-1]
    end
  end

  actions.each do |action_regexp, action_proc|
    match_data = action_regexp.match(@action)
    if match_data
      @action_proc = action_proc
      @action_attributes = match_data.to_a[1..-1]
    end
  end
end

Public Instance Methods

condition_passes_with?(object) click to toggle source
# File lib/aristotle/command.rb, line 35
def condition_passes_with?(object)
  if @condition_proc
    @condition_proc.call(object, *@condition_attributes)
  else
    raise "Condition not found: #{@condition}"
  end
end
do_action_with(object) click to toggle source
# File lib/aristotle/command.rb, line 27
def do_action_with(object)
  if @action_proc
    @action_proc.call(object, *@action_attributes)
  else
    raise "Action not found: #{@action}"
  end
end
has_action?() click to toggle source
# File lib/aristotle/command.rb, line 43
def has_action?
  !@action_proc.nil?
end
has_condition?() click to toggle source
# File lib/aristotle/command.rb, line 47
def has_condition?
  !@condition_proc.nil?
end