Class: StateDesignPattern::StateMachine
- Inherits:
-
Object
- Object
- StateDesignPattern::StateMachine
- Extended by:
- Forwardable
- Includes:
- Observable
- Defined in:
- lib/state_design_pattern/state_machine.rb
Instance Method Summary collapse
- #current_state ⇒ Object
- #initial_context ⇒ Object
-
#initialize ⇒ StateMachine
constructor
A new instance of StateMachine.
- #send_event(name, message = {}) ⇒ Object
- #start_state ⇒ Object
- #transition_to_state(state_class) ⇒ Object
- #transition_to_state_and_send_event(state_class, name, message = {}) ⇒ Object
Constructor Details
#initialize ⇒ StateMachine
Returns a new instance of StateMachine.
10 11 12 13 14 |
# File 'lib/state_design_pattern/state_machine.rb', line 10 def initialize initialize_context transition_to_start_state setup_delegation end |
Instance Method Details
#current_state ⇒ Object
23 24 25 |
# File 'lib/state_design_pattern/state_machine.rb', line 23 def current_state @state.class end |
#initial_context ⇒ Object
16 17 |
# File 'lib/state_design_pattern/state_machine.rb', line 16 def initial_context end |
#send_event(name, message = {}) ⇒ Object
36 37 38 39 40 41 42 43 |
# File 'lib/state_design_pattern/state_machine.rb', line 36 def send_event(name, = {}) event = { name: name, source: self }.merge() changed notify_observers(event) self end |
#start_state ⇒ Object
19 20 21 |
# File 'lib/state_design_pattern/state_machine.rb', line 19 def start_state raise NotImplementedError end |
#transition_to_state(state_class) ⇒ Object
32 33 34 |
# File 'lib/state_design_pattern/state_machine.rb', line 32 def transition_to_state(state_class) @state = state_class.new(self) end |
#transition_to_state_and_send_event(state_class, name, message = {}) ⇒ Object
27 28 29 30 |
# File 'lib/state_design_pattern/state_machine.rb', line 27 def transition_to_state_and_send_event(state_class, name, = {}) transition_to_state(state_class) send_event(name, ) end |