module LB::Project::Registry::Registration

Mixin for registration

Public Class Methods

[](registry_name, registry = LB::Project::Registry.new) click to toggle source
# File lib/lb/project/registry/registration.rb, line 8
def self.[](registry_name, registry = LB::Project::Registry.new)
  rcmethod = "#{registry_name}_registry_config"
  setup(registry_name, registry, rcmethod)
  define_helpers(registry_name, rcmethod) unless respond_to?(rcmethod)

  self
end
define_helpers(registry_name, rcmethod) click to toggle source
# File lib/lb/project/registry/registration.rb, line 16
def self.define_helpers(registry_name, rcmethod)
  rmethod = "#{registry_name}_registry"

  define_registry_config(rcmethod)
  define_registry(rcmethod, rmethod)
  define_registry_name(registry_name, rcmethod)
  define_registry_as(registry_name, rmethod)
  define_key(registry_name)
end
define_key(registry_name) click to toggle source
# File lib/lb/project/registry/registration.rb, line 52
def self.define_key(registry_name)
  define_method("#{registry_name}_key") do
    instance_variable_get("@#{registry_name}_key")
  end
end
define_registry(rcmethod, rmethod) click to toggle source
# File lib/lb/project/registry/registration.rb, line 32
def self.define_registry(rcmethod, rmethod)
  define_method(rmethod) do
    send(rcmethod).registry
  end
end
define_registry_as(registry_name, rmethod) click to toggle source
# File lib/lb/project/registry/registration.rb, line 45
def self.define_registry_as(registry_name, rmethod)
  define_method("register_#{registry_name}_as") do |key|
    send(rmethod).register(key.to_sym, self)
    instance_variable_set("@#{registry_name}_key", key.to_s)
  end
end
define_registry_config(rcmethod) click to toggle source
# File lib/lb/project/registry/registration.rb, line 26
def self.define_registry_config(rcmethod)
  define_method(rcmethod) do
    Registration.instance_variable_get("@#{rcmethod}")
  end
end
define_registry_name(registry_name, rcmethod) click to toggle source
# File lib/lb/project/registry/registration.rb, line 38
def self.define_registry_name(registry_name, rcmethod)
  rnmethod = "#{registry_name}_registry_name"
  define_method(rnmethod) do
    send(rcmethod).name
  end
end
setup(registry_name, registry, rcmethod) click to toggle source
# File lib/lb/project/registry/registration.rb, line 58
def self.setup(registry_name, registry, rcmethod)
  config = Config.new(registry_name, registry)
  Registration.instance_variable_set("@#{rcmethod}", config)
end