module StatePattern

Public Class Methods

included(base) click to toggle source
# File lib/state_pattern.rb, line 5
def self.included(base)
  base.extend ClassMethods
end

Public Instance Methods

current_state_instance() click to toggle source
# File lib/state_pattern.rb, line 28
def current_state_instance
  set_state if @current_state_instance.nil?
  @current_state_instance
end
set_state(state_class = self.class.initial_state_class) click to toggle source
# File lib/state_pattern.rb, line 33
def set_state(state_class = self.class.initial_state_class)
  return @current_state_instance if @current_state_instance.class == state_class
  @current_state_instance = state_class.new(self, @current_state_instance)
end
transition_to(next_state_class) click to toggle source
# File lib/state_pattern.rb, line 38
def transition_to(next_state_class)
  current_state_instance.exit
  set_state(next_state_class)
end