Module: LB::Project::Registry::Registration

Defined in:
lib/lb/project/registry/registration.rb

Overview

Mixin for registration

Defined Under Namespace

Classes: Config

Class Method Summary collapse

Class Method Details

.[](registry_name, registry = LB::Project::Registry.new) ⇒ Object



8
9
10
11
12
13
14
# 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) ⇒ Object



16
17
18
19
20
21
22
23
24
# 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) ⇒ Object



52
53
54
55
56
# 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) ⇒ Object



32
33
34
35
36
# 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) ⇒ Object



45
46
47
48
49
50
# 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) ⇒ Object



26
27
28
29
30
# 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) ⇒ Object



38
39
40
41
42
43
# 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) ⇒ Object



58
59
60
61
# 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