Class: Estate::StateMachine

Inherits:
Object
  • Object
show all
Defined in:
lib/estate/state_machine.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.state_machinesObject (readonly)

Returns the value of attribute state_machines.



41
42
43
# File 'lib/estate/state_machine.rb', line 41

def state_machines
  @state_machines
end

Class Method Details

.argument_valid?(argument) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/estate/state_machine.rb', line 37

def argument_valid?(argument)
  argument.is_a?(Symbol) || argument.is_a?(String)
end

.init(state_machine_name, column_name, empty_initial_state, raise_on_error) ⇒ Object



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

def init(state_machine_name, column_name, empty_initial_state, raise_on_error)
  @state_machines ||= {}
  @state_machines[state_machine_name] = {
    config: {
      column_name: column_name,
      empty_initial_state: empty_initial_state, # TODO: allow_empty_initial_state ?
      raise_on_error: raise_on_error
    },
    states: {},
    transitions: {}
  }
end

.register_state(state_machine_name, state_name) ⇒ Object



23
24
25
# File 'lib/estate/state_machine.rb', line 23

def register_state(state_machine_name, state_name)
  state_machines[state_machine_name][:states][state_name.to_sym] = nil
end

.register_transition(state_machine_name, from_state, to_state) ⇒ Object



32
33
34
35
# File 'lib/estate/state_machine.rb', line 32

def register_transition(state_machine_name, from_state, to_state)
  transition_key = { from: from_state.to_sym, to: to_state.to_sym }
  state_machines[state_machine_name][:transitions][transition_key] = nil
end

.state_exists?(state_machine_name, state_name) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/estate/state_machine.rb', line 19

def state_exists?(state_machine_name, state_name)
  state_machines[state_machine_name][:states].key?(state_name.to_sym)
end

.transition_exists?(state_machine_name, from_state, to_state) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
# File 'lib/estate/state_machine.rb', line 27

def transition_exists?(state_machine_name, from_state, to_state)
  transition_key = { from: from_state.to_sym, to: to_state.to_sym }
  state_machines[state_machine_name][:transitions].key?(transition_key)
end