class Obake::FiniteStateMachine

Attributes

current_state[R]

Public Class Methods

new() click to toggle source
# File lib/obake/finite_state_machine.rb, line 5
def initialize
  @states = {}
end

Public Instance Methods

add_state(state) click to toggle source
# File lib/obake/finite_state_machine.rb, line 9
def add_state(state)
  state.instance_variable_set(:@fsm, self)
  @states[state.id] = state
end
change_state(transition) click to toggle source
# File lib/obake/finite_state_machine.rb, line 14
def change_state(transition)
  if @current_state
    @current_state.on_exit
  end

  @current_state = @states[transition.to]

  @current_state.on_enter(transition.data)
end