class Dry::AutoInject::Strategies::Hash

@api private

Private Instance Methods

define_initialize(klass) click to toggle source
# File lib/dry/auto_inject/strategies/hash.rb, line 25
        def define_initialize(klass)
          super_params = MethodParameters.of(klass, :initialize).first
          super_pass = super_params.empty? ? '' : 'options'

          instance_mod.class_eval <<-RUBY, __FILE__, __LINE__ + 1
            def initialize(options)
              #{dependency_map.names.map { |name| "@#{name} = options[:#{name}] unless !options.key?(#{name}) && instance_variable_defined?(:'@#{name}')" }.join("\n")}
              super(#{super_pass})
            end
          RUBY
        end
define_new() click to toggle source
# File lib/dry/auto_inject/strategies/hash.rb, line 13
def define_new
  class_mod.class_exec(container, dependency_map) do |container, dependency_map|
    define_method :new do |options = {}|
      deps = dependency_map.to_h.each_with_object({}) { |(name, identifier), obj|
        obj[name] = options[name] || container[identifier]
      }.merge(options)

      super(deps)
    end
  end
end