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