Module: StatePattern

Defined in:
lib/state_pattern.rb,
lib/state_pattern/state.rb,
lib/state_pattern/active_record.rb

Defined Under Namespace

Modules: ActiveRecord, ClassMethods, Delegation Classes: State

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
# File 'lib/state_pattern.rb', line 5

def self.included(base)
  base.extend ClassMethods
end

Instance Method Details

#current_state_instanceObject



28
29
30
31
# 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) ⇒ Object



33
34
35
36
# 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) ⇒ Object



38
39
40
41
# File 'lib/state_pattern.rb', line 38

def transition_to(next_state_class)
  current_state_instance.exit
  set_state(next_state_class)
end