Class: Yadi::Maker

Inherits:
Object
  • Object
show all
Defined in:
lib/yadi/maker.rb

Class Method Summary collapse

Class Method Details

.call(container, klass_name) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/yadi/maker.rb', line 5

def self.call(container, klass_name)
  klass = Constantize.(klass_name)

  if klass.const_defined?(:INITIALIZE_INJECT)
    args = klass::INITIALIZE_INJECT.args.map do |inj|
      container.make(inj)
    end

    options = ::Hash[
      klass::INITIALIZE_INJECT.options.map do |key, inj|
        [key, container.make(inj)]
      end
    ]

    args << options unless options.empty?

    klass.new *args
  else
    klass.new
  end
end