semlogr/semlogr

View on GitHub
lib/semlogr/component_registry.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require 'semlogr/error'

module Semlogr
  class ComponentRegistry
    @mappings = {}

    def self.register(type, mapping)
      (@mappings[type] ||= {}).update(mapping)
    end

    def self.resolve(type, key, *params)
      mapping = @mappings[type] && @mappings[type][key]
      raise ComponentNotRegisteredError.new(type, key) unless mapping

      mapping.new(*params)
    end
  end
end