Class: Estate::StateMachine
- Inherits:
-
Object
- Object
- Estate::StateMachine
- Defined in:
- lib/estate/state_machine.rb
Class Attribute Summary collapse
-
.state_machines ⇒ Object
readonly
Returns the value of attribute state_machines.
Class Method Summary collapse
- .argument_valid?(argument) ⇒ Boolean
- .init(state_machine_name, column_name, empty_initial_state, raise_on_error) ⇒ Object
- .register_state(state_machine_name, state_name) ⇒ Object
- .register_transition(state_machine_name, from_state, to_state) ⇒ Object
- .state_exists?(state_machine_name, state_name) ⇒ Boolean
- .transition_exists?(state_machine_name, from_state, to_state) ⇒ Boolean
Class Attribute Details
.state_machines ⇒ Object (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
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
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
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 |