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