Sha256: a1c0680d56180899e8ae8b1fabdc974121cf314c51dec8af2fba93655f73d988

Contents?: true

Size: 537 Bytes

Versions: 9

Compression:

Stored size: 537 Bytes

Contents

module NxtStateMachine
  class Transition::Store < Array
    def <<(transition)
      ensure_transition_unique(transition)
      super
    end

    alias_method :add, :<<

    private

    def ensure_transition_unique(transition)
      return unless find { |other| other.from.enum == transition.from.enum && other.to.enum == transition.to.enum }

      raise NxtStateMachine::Errors::TransitionAlreadyRegistered,
            "A transition from :#{transition.from.enum} to :#{transition.to.enum} was already registered"
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
nxt_state_machine-0.1.8 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.7 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.6 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.5 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.4 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.3 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.2 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.1 lib/nxt_state_machine/transition/store.rb
nxt_state_machine-0.1.0 lib/nxt_state_machine/transition/store.rb