Sha256: 068b03c4f2024cd076db2605e7582a2da9c8d79a570d7c84e0ddf84c4ecdcec5
Contents?: true
Size: 631 Bytes
Versions: 57
Compression:
Stored size: 631 Bytes
Contents
require "active_support/core_ext/class/attribute" require "active_support/core_ext/hash/indifferent_access" module Plutonium class ComponentRegistry class_attribute :mappings, instance_accessor: false, instance_predicate: false, default: {}.with_indifferent_access class UnregisteredComponent < StandardError; end def self.register(*types, to:) self.mappings = mappings.merge types.each_with_object({}) { |t, m| m[t] = to } end def self.resolve(name) raise UnregisteredComponent.new("no such component registered: #{name.inspect}") unless mappings[name] mappings[name] end end end
Version data entries
57 entries across 57 versions & 1 rubygems