Class: Obake::FiniteStateMachine

Inherits:
Object
  • Object
show all
Defined in:
lib/obake/finite_state_machine.rb

Instance Method Summary collapse

Constructor Details

#initializeFiniteStateMachine

Returns a new instance of FiniteStateMachine.



3
4
5
# File 'lib/obake/finite_state_machine.rb', line 3

def initialize
  @states = {}
end

Instance Method Details

#add_state(state) ⇒ Object



11
12
13
# File 'lib/obake/finite_state_machine.rb', line 11

def add_state(state)
  @states[state.id] = state
end

#change_state(transition) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/obake/finite_state_machine.rb', line 15

def change_state(transition)
  if @current_state
    @current_state.on_exit
  end

  @current_state = @states[transition.to]

  @current_state.on_enter(transition.data)
end

#current_stateObject



7
8
9
# File 'lib/obake/finite_state_machine.rb', line 7

def current_state
  @current_state.id
end