Sha256: 263bd96ebab2d4479ccc99d08cf6a98f3816057171a6d1bcd09b28e683917f64

Contents?: true

Size: 662 Bytes

Versions: 2

Compression:

Stored size: 662 Bytes

Contents

class State
  attr_reader :holder, :previous_state_class, :previous_states
  def initialize(holder, previous_state_class)
    @holder = holder
    @previous_state_class = previous_state_class
    @previous_states = build_previous_states_list
  end

private
  def transition_to(new_state_class)
    holder.transition_to(new_state_class)
  end

  def enter
    raise "#{self.class.name} does not implement #enter."
  end

  def exit
    raise "#{self.class.name} does not implement #exit."
  end

  def build_previous_states_list
    hcs = holder.current_state
    psa = hcs.previous_states || []
    psa.shift
    psa << hcs
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
simplestate-0.3.1 lib/simplestate/state.rb
simplestate-0.3.0 lib/simplestate/state.rb