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
|