Add StateMachine object and StateMachineFactory
Supports initial state in SM
This commit is contained in:
parent
28fd460950
commit
7dbbc1480b
|
@ -1,5 +1,6 @@
|
|||
require File.join(File.dirname(__FILE__), 'event')
|
||||
require File.join(File.dirname(__FILE__), 'state')
|
||||
require File.join(File.dirname(__FILE__), 'state_machine')
|
||||
require File.join(File.dirname(__FILE__), 'persistence')
|
||||
|
||||
module AASM
|
||||
|
@ -9,19 +10,20 @@ module AASM
|
|||
def self.included(base) #:nodoc:
|
||||
base.extend AASM::ClassMethods
|
||||
AASM::Persistence.set_persistence(base)
|
||||
AASM::StateMachineFactory[base] = AASM::StateMachine.new('')
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
def aasm_initial_state(set_state=nil)
|
||||
if set_state
|
||||
aasm_initial_state = set_state
|
||||
AASM::StateMachineFactory[self].initial_state = set_state
|
||||
else
|
||||
@aasm_initial_state
|
||||
AASM::StateMachineFactory[self].initial_state
|
||||
end
|
||||
end
|
||||
|
||||
def aasm_initial_state=(state)
|
||||
@aasm_initial_state = state
|
||||
AASM::StateMachineFactory[self].initial_state = state
|
||||
end
|
||||
|
||||
def aasm_state(name, options={})
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
module AASM
|
||||
unless AASM.const_defined?('StateMachineFactory')
|
||||
StateMachineFactory = {}
|
||||
end
|
||||
|
||||
class StateMachine
|
||||
attr_accessor :states, :events, :initial_state
|
||||
attr_reader :name
|
||||
|
||||
def initialize(name)
|
||||
@name = name
|
||||
@initial_state = nil
|
||||
@states = []
|
||||
@events = []
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue