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

Version Path
plutonium-0.16.5 lib/plutonium/component_registry.rb
plutonium-0.16.4 lib/plutonium/component_registry.rb
plutonium-0.16.3 lib/plutonium/component_registry.rb
plutonium-0.16.1 lib/plutonium/component_registry.rb
plutonium-0.16.0 lib/plutonium/component_registry.rb
plutonium-0.15.24 lib/plutonium/component_registry.rb
plutonium-0.15.23 lib/plutonium/component_registry.rb
plutonium-0.15.22 lib/plutonium/component_registry.rb
plutonium-0.15.21 lib/plutonium/component_registry.rb
plutonium-0.15.20 lib/plutonium/component_registry.rb
plutonium-0.15.19 lib/plutonium/component_registry.rb
plutonium-0.15.18 lib/plutonium/component_registry.rb
plutonium-0.15.17 lib/plutonium/component_registry.rb
plutonium-0.15.16 lib/plutonium/component_registry.rb
plutonium-0.15.15 lib/plutonium/component_registry.rb
plutonium-0.15.14 lib/plutonium/component_registry.rb
plutonium-0.15.13 lib/plutonium/component_registry.rb
plutonium-0.15.12 lib/plutonium/component_registry.rb
plutonium-0.15.11 lib/plutonium/component_registry.rb
plutonium-0.15.10 lib/plutonium/component_registry.rb