Sha256: 7e73bdbbd47bbf56d1d32209d594ca7e65f39ef0e9e3ab2d0488cc46ddf2591f
Contents?: true
Size: 1.16 KB
Versions: 9
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true module LB module Project # Basic key value store class Registry include Dry::Equalizer(:keys) include Enumerable attr_reader :keys # Error that is raised when key is not found in registry class KeyNotFoundError < KeyError def initialize(key) super("#{key.inspect} doesn't exist in registry") end end def initialize(keys = {}) @keys = keys end def each(&block) return to_enum unless block keys.each_pair { |key, value| yield(key, value) } end def key?(key) !key.nil? && keys.key?(key.to_sym) end def fetch(key) raise ArgumentError, 'key cannot be nil' if key.nil? keys.fetch(key.to_sym) do return yield if block_given? raise KeyNotFoundError, key end end alias [] fetch def respond_to_missing?(key, include_private = false) keys.key?(key) || super end def register(key, value) keys[key] = value end private def method_missing(key, *) keys.fetch(key) { super } end end end end
Version data entries
9 entries across 9 versions & 1 rubygems