class Pharrell::Config::Binder

Attributes

bindings[R]

Public Class Methods

new() click to toggle source
# File lib/pharrell/config.rb, line 37
def initialize
  @bindings = {}
end

Public Instance Methods

bind(klass, arg = nil, &blk) click to toggle source
# File lib/pharrell/config.rb, line 41
def bind(klass, arg = nil, &blk)
  if blk
    @bindings[klass] = blk
  else
    obj_block = if arg.kind_of?(Class)
      Proc.new { |config| build_instance(arg, config)}
    else
      Proc.new { arg }
    end

    @bindings[klass] = obj_block
  end
end

Private Instance Methods

build_instance(target_klass, config) click to toggle source
# File lib/pharrell/config.rb, line 57
def build_instance(target_klass, config)
  if target_klass.respond_to?(:__pharrell_constructor_classes)
    args = target_klass.__pharrell_constructor_classes.map do |arg_klass|
      config.instance_for(arg_klass)
    end

    target_klass.new(*args)
  else
    target_klass.new
  end
end