Module: Rask::StateMachine::ClassMethods

Defined in:
lib/rask/state_machine.rb

Instance Method Summary collapse

Instance Method Details

#define_state(name, *args) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/rask/state_machine.rb', line 57

def define_state(name, *args)
  
  self.instance_eval{
    define_method(name){
    }
    define_method("transition_to_#{name}"){
      if args[0].is_a?(Hash)
        self.state = name if args[0][:from] && args[0][:from].include?(state)
      else
        self.state = name
      end
    }
    define_method("#{name}?"){
      self.state == name
    }
    if !method_defined?(name) || ( args[0].is_a?(Hash) && args[0][:initial] )
      define_method("initial_state") {
        name
      }
    end
  }
end