Sha256: 5873b038c639c25dce029bffb1912597d1d513dfd7dc18de2ab0c0ea3a1498d6
Contents?: true
Size: 812 Bytes
Versions: 5
Compression:
Stored size: 812 Bytes
Contents
module ROM # @api private class Registry include Enumerable include Equalizer.new(:elements) class ElementNotFoundError < KeyError def initialize(key, name) super("#{key.inspect} doesn't exist in #{name} registry") end end attr_reader :elements, :name def initialize(elements = {}) @elements = elements @name = self.class.name end def each(&block) return to_enum unless block elements.each { |element| yield(element) } end def [](key) elements.fetch(key) { raise ElementNotFoundError.new(key, name) } end def respond_to_missing?(name, include_private = false) elements.key?(name) || super end private def method_missing(name, *) elements.fetch(name) { super } end end end
Version data entries
5 entries across 5 versions & 1 rubygems