Sha256: bf7c05e8ab6d1e5cde98fc56ba1e72fa17f514af71e93fdd5300097727bcde44

Contents?: true

Size: 700 Bytes

Versions: 3

Compression:

Stored size: 700 Bytes

Contents

module SteadyState
  module Attribute
    class State < SimpleDelegator
      attr_accessor :state_machine, :last_valid_value

      def initialize(state_machine, current_value, last_valid_value)
        self.state_machine = state_machine
        self.last_valid_value = last_valid_value
        super(current_value&.inquiry)
      end

      def may_become?(new_value)
        next_values.include?(new_value)
      end

      def next_values
        @next_values ||= state_machine.transitions[last_valid_value || self]
      end

      def previous_values
        @previous_values ||= state_machine.transitions.select { |_, v| v.include?(last_valid_value || self) }.keys
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
steady_state-1.0.0 lib/steady_state/attribute/state.rb
steady_state-0.1.0 lib/steady_state/attribute/state.rb
steady_state-0.0.1 lib/steady_state/attribute/state.rb