Sha256: 73de7f509f83ac5f00dbc382ef9dcb2866349a5ca6c5143d6cdcf8d65f44b19f

Contents?: true

Size: 742 Bytes

Versions: 2

Compression:

Stored size: 742 Bytes

Contents

module NxtErrorRegistry
  class Registry
    def self.instance
      @instance ||= send(:new)
    end

    # Usually we don't want this to be initialized other than through instance
    private_class_method :new

    def initialize
      @store = { }
    end

    attr_reader :store

    delegate_missing_to :store
    delegate :to_s, :inspect, to: :store

    def flat
      values.map(&:values).flatten
    end

    def codes
      flat.map { |entry| entry.fetch(:code) }
    end

    def entries_by_codes
      flat.inject({}) do |acc, entry|
        code = entry.fetch(:code)
        (acc[code] ||= []) << entry
        acc
      end
    end

    def duplicated_codes
      entries_by_codes.select { |_, v| v.size > 1 }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
nxt_error_registry-0.2.5 lib/nxt_error_registry/registry.rb
nxt_error_registry-0.2.4 lib/nxt_error_registry/registry.rb