Sha256: d88f171957ec13315bb0fb13188ca9136cddb084d61ca53d40db0c3d75a93529

Contents?: true

Size: 688 Bytes

Versions: 36

Compression:

Stored size: 688 Bytes

Contents

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

    def clone
      klone = super
      klone.states = states.clone
      klone
    end

    def create_state(name, options)
      @states << AASM::SupportingClasses::State.new(name, options) unless @states.include?(name)
    end
  end
end

Version data entries

36 entries across 36 versions & 20 rubygems

Version Path
asoules-aasm-2.0.5.2 lib/state_machine.rb
asoules-aasm-2.0.5.3 lib/state_machine.rb
bloom-aasm-2.0.3 lib/state_machine.rb
bloom-bloom-aasm-2.0.3 lib/state_machine.rb
celect-aasm-2.0.5.2 lib/state_machine.rb
dunedain289-aasm-2.1.1 lib/state_machine.rb
dunedain289-aasm-2.1.3 lib/state_machine.rb
dunedain289-aasm-2.1 lib/state_machine.rb
dvdplm-aasm-2.0.6 lib/state_machine.rb
eric-aasm-2.0.2.1 lib/state_machine.rb
eric-aasm-2.0.2.2 lib/state_machine.rb
eric-aasm-2.0.4 lib/state_machine.rb
factorylabs-aasm-2.0.5.2 lib/state_machine.rb
kdonovan-aasm-1.0.1 lib/state_machine.rb
killian-aasm-2.0.6 lib/AASM/state_machine.rb
killian-aasm-2.0.7 lib/state_machine.rb
killian-aasm-2.0.8 lib/state_machine.rb
killian-aasm-2.0.9 lib/state_machine.rb
killian-killian-aasm-2.0.7 lib/state_machine.rb
lostboy-aasm-2.0.5.1 lib/state_machine.rb