Sha256: 9204d572f6ac8563ca79a9a1df7e8a4e1c654c360e9f4b19dcb51e2443059b56

Contents?: true

Size: 597 Bytes

Versions: 4

Compression:

Stored size: 597 Bytes

Contents

module NxtStateMachine
  class DefuseRegistry
    include ::NxtRegistry

    def register(from, to, kind)
      Array(from).each do |from_state|
        Array(to).each do |to_state|
          defusing_errors = errors.from(from_state).to(to_state)
          Array(kind).each_with_object(defusing_errors) { |error, acc| acc << error }
        end
      end
    end

    def resolve!(transition)
      errors.from!(transition.from.enum).to!(transition.to.enum)
    end

    private

    def errors
      @errors ||= registry :from do
        level :to, default: -> { [] }
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nxt_state_machine-0.1.12 lib/nxt_state_machine/defuse_registry.rb
nxt_state_machine-0.1.11 lib/nxt_state_machine/defuse_registry.rb
nxt_state_machine-0.1.10 lib/nxt_state_machine/defuse_registry.rb
nxt_state_machine-0.1.9 lib/nxt_state_machine/defuse_registry.rb