Class: Dotpretty::StateMachine::StateMachine

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(initial_state:, observer:, states:) ⇒ StateMachine

Returns a new instance of StateMachine.



7
8
9
10
11
# File 'lib/dotpretty/state_machine/state_machine.rb', line 7

def initialize(initial_state:, observer:, states:)
  self.current_state_name = initial_state
  self.observer = observer
  self.states = states
end

Instance Attribute Details

#current_state_nameObject

Returns the value of attribute current_state_name.



13
14
15
# File 'lib/dotpretty/state_machine/state_machine.rb', line 13

def current_state_name
  @current_state_name
end

Instance Method Details

#trigger(event, *args) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/dotpretty/state_machine/state_machine.rb', line 15

def trigger(event, *args)
  current_state.trigger(event) do |transition, exit_action|
    perform(exit_action, *args) if current_state_name != transition[:next_state_name]
    perform(transition[:action], *args)
    if current_state_name != transition[:next_state_name]
      self.current_state_name = transition[:next_state_name]
      perform(current_state.entry_action, *args)
    end
  end
end