module Statum::InstanceMethods

Public Instance Methods

method_missing(meth, *args) click to toggle source
Calls superclass method
# File lib/statum/instance_methods.rb, line 3
def method_missing(meth, *args)
  if meth.to_s.end_with?('?') && (machine = find_machine_by_state(meth[0...-1]))
    machine.current(self) == meth[0...-1].to_sym
  elsif meth.to_s.end_with?('!') && (machine = find_machine_by_event(meth[0...-1]))
    machine.fire!(self, meth[0...-1])
  else
    super
  end
end
respond_to_missing?(meth, *args) click to toggle source
Calls superclass method
# File lib/statum/instance_methods.rb, line 13
def respond_to_missing?(meth, *args)
  if meth.to_s.end_with?('?')
    !find_machine_by_state(meth[0...-1]).nil?
  elsif meth.to_s.end_with?('!')
    !find_machine_by_event(meth[0...-1]).nil?
  else
    super
  end
end

Private Instance Methods

find_machine_by_event(name) click to toggle source
# File lib/statum/instance_methods.rb, line 25
def find_machine_by_event(name)
  state_machines.select { |machine| machine.event?(name) }.first
end
find_machine_by_state(name) click to toggle source
# File lib/statum/instance_methods.rb, line 29
def find_machine_by_state(name)
  state_machines.select { |machine| machine.state?(name) }.first
end
state_machines() click to toggle source
# File lib/statum/instance_methods.rb, line 33
def state_machines
  self.class.state_machines
end