Class: Configue::ContainerAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/configue/container_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(container_class) ⇒ ContainerAdapter

Returns a new instance of ContainerAdapter.



5
6
7
# File 'lib/configue/container_adapter.rb', line 5

def initialize(container_class)
  @class = container_class
end

Instance Method Details

#config_method_nameObject



31
32
33
# File 'lib/configue/container_adapter.rb', line 31

def config_method_name
  @class.instance_variable_get(:@config_access_name)
end

#instanceObject



13
14
15
# File 'lib/configue/container_adapter.rb', line 13

def instance
  @class.instance_variable_get(:@instance)
end

#instance=(arg) ⇒ Object

Raises:

  • (TypeError)


17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/configue/container_adapter.rb', line 17

def instance=(arg)
  raise TypeError unless arg.respond_to?(:[])

  @class.instance_variable_set(:@instance, arg)
  if arg.respond_to?(:keys)
    sig = class << @class; self; end
    arg.keys.each do |k|
      next unless k.to_s =~ /\A\w[\w0-9]*\z/
      sig.__send__(:define_method, k, -> { arg[k] })
    end
  end
  arg
end

#new_container(hash) ⇒ Object



9
10
11
# File 'lib/configue/container_adapter.rb', line 9

def new_container(hash)
  self.instance = @class.new(hash)
end