class ROM::Registry

@api private

Public Class Methods

[](identifier) click to toggle source

@api private

# File lib/rom/registry.rb, line 45
def self.[](identifier)
  fetch_or_store(identifier) do
    ::Dry::Core::ClassBuilder
      .new(parent: self, name: "#{name}[:#{identifier}]")
      .call
  end
end
build(elements = {}) click to toggle source

Create a registry without options

@api private

# File lib/rom/registry.rb, line 40
def self.build(elements = {})
  new(elements, **{})
end
element_not_found_error() click to toggle source

@api private

# File lib/rom/registry.rb, line 54
def self.element_not_found_error
  ElementNotFoundError
end
new(*args, **kwargs) click to toggle source

@api private

Calls superclass method
# File lib/rom/registry.rb, line 29
def self.new(*args, **kwargs)
  if args.empty? && kwargs.empty?
    super({}, **{})
  else
    super
  end
end

Public Instance Methods

[](key)
Alias for: fetch
each() { |element| ... } click to toggle source

@api private

# File lib/rom/registry.rb, line 77
def each
  return to_enum unless block_given?

  elements.each { |element| yield(element) }
end
fetch(key) { || ... } click to toggle source

@api private

# File lib/rom/registry.rb, line 89
def fetch(key)
  raise ArgumentError, 'key cannot be nil' if key.nil?

  elements.fetch(key.to_sym) do
    return yield if block_given?

    raise self.class.element_not_found_error.new(key, self)
  end
end
Also aliased as: []
key?(name) click to toggle source

@api private

# File lib/rom/registry.rb, line 84
def key?(name)
  !name.nil? && elements.key?(name.to_sym)
end
map() { |element| ... } click to toggle source

@api private

# File lib/rom/registry.rb, line 69
def map
  new_elements = elements.each_with_object({}) do |(name, element), h|
    h[name] = yield(element)
  end
  self.class.new(new_elements, **options)
end
merge(other) click to toggle source

@api private

# File lib/rom/registry.rb, line 59
def merge(other)
  self.class.new(Hash(other), **options)
end
respond_to_missing?(name, include_private = false) click to toggle source

@api private

Calls superclass method
# File lib/rom/registry.rb, line 105
def respond_to_missing?(name, include_private = false)
  elements.key?(name) || super
end
to_hash() click to toggle source

@api private

# File lib/rom/registry.rb, line 64
def to_hash
  elements
end
type() click to toggle source
# File lib/rom/registry.rb, line 100
def type
  self.class.name
end

Private Instance Methods

method_missing(name, *) click to toggle source

@api private

Calls superclass method
# File lib/rom/registry.rb, line 112
def method_missing(name, *)
  elements.fetch(name) { super }
end