class Corindon::DependencyInjection::Definition

Attributes

args[R]
calls[R]
id[R]

@return [String]

kwargs[R]
object_source[R]
tags[R]

Public Class Methods

new(object_source, args: [], kwargs: {}, calls: [], tags: [], id: nil) click to toggle source
# File lib/corindon/dependency_injection/definition.rb, line 16
def initialize(object_source, args: [], kwargs: {}, calls: [], tags: [], id: nil)
  @object_source = object_source
  @args = args
  @kwargs = kwargs
  @calls = calls
  @tags = tags
  @id = id
end

Public Instance Methods

build(injector) click to toggle source

@param [Injector] injector @return [Object]

# File lib/corindon/dependency_injection/definition.rb, line 27
def build(injector)
  source = if object_source.is_a?(Class)
             [object_source, :new]
           else
             injector.resolve(object_source)
           end

  object = RubyCompat.do_call(*source, injector.resolve(args), injector.resolve(kwargs))

  calls.each do |(call, call_args, call_kwargs)|
    RubyCompat.do_call(object, call, injector.resolve(call_args), injector.resolve(call_kwargs))
  end

  object
end