lib/dry/auto_inject/strategies/kwargs.rb in dry-auto_inject-0.4.2 vs lib/dry/auto_inject/strategies/kwargs.rb in dry-auto_inject-0.4.3

- old
+ new

@@ -7,16 +7,16 @@ class Kwargs < Constructor private def define_new class_mod.class_exec(container, dependency_map) do |container, dependency_map| - define_method :new do |**args| + define_method :new do |*args, **kwargs| deps = dependency_map.to_h.each_with_object({}) { |(name, identifier), obj| - obj[name] = args[name] || container[identifier] - }.merge(args) + obj[name] = kwargs[name] || container[identifier] + }.merge(kwargs) - super(**deps) + super(*args, **deps) end end end def define_initialize(klass) @@ -43,24 +43,24 @@ self end def define_initialize_with_splat(super_method) super_kwarg_names = super_method.parameters.select { |type, _| [:key, :keyreq].include?(type) }.map(&:last) - super_params = super_kwarg_names.map { |name| "#{name}: args[:#{name}]" }.join(', ') + super_kw_params = super_kwarg_names.map { |name| "#{name}: kwargs[:#{name}]" }.join(', ') # Pass through any non-dependency args if the super method accepts `**args` if super_method.parameters.any? { |type, _| type == :keyrest } - if super_params.empty? - super_params = '**args' + if super_kw_params.empty? + super_kw_params = '**kwargs' else - super_params += ', **args' + super_kw_params += ', **kwargs' end end instance_mod.class_eval <<-RUBY, __FILE__, __LINE__ + 1 - def initialize(**args) - super(#{super_params}) - #{dependency_map.names.map { |name| "@#{name} = args[:#{name}]" }.join("\n")} + def initialize(*args, **kwargs) + super(*args, #{super_kw_params}) + #{dependency_map.names.map { |name| "@#{name} = kwargs[:#{name}]" }.join("\n")} end RUBY self end end