aasm/lib/state_machine.rb

36 lines
688 B
Ruby
Raw Normal View History

require 'ostruct'
module AASM
class StateMachine
def self.[](*args)
(@machines ||= {})[args]
end
def self.[]=(*args)
val = args.pop
(@machines ||= {})[args] = val
end
attr_accessor :states, :events, :initial_state, :config
attr_reader :name
def initialize(name)
@name = name
@initial_state = nil
@states = []
@events = {}
@config = OpenStruct.new
end
2008-05-31 22:33:17 +00:00
def clone
klone = super
klone.states = states.clone
klone
end
2008-05-31 22:33:17 +00:00
def create_state(name, options)
@states << AASM::SupportingClasses::State.new(name, options) unless @states.include?(name)
end
end
end