Module: FSM::ClassMethods

Defined in:
lib/fsm.rb

Instance Method Summary collapse

Instance Method Details

#define_fsm(&block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fsm.rb', line 7

def define_fsm(&block)
  raise 'FSM is already defined. Call define_fsm only once' if Machine[self]
  builder = Builder.new(self)
  Machine[self] = builder.process(&block)
  self.instance_eval() do 
    alias_method "fsm_state_attribute", Machine[self].current_state_attribute_name
    define_method(Machine[self].current_state_attribute_name) do
      value = fsm_state_attribute
      value ? value : Machine[self.class].initial_state_name
    end
  end
end

#dot(options = {}) ⇒ Object



20
21
22
23
24
# File 'lib/fsm.rb', line 20

def dot(options = {})
  machine = Machine[self]
  raise 'No FSM defined. Call define_fsm first' unless machine
  machine.dot(options)
end