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