Class: AutoAttrInit::AssignParams

Inherits:
Object
  • Object
show all
Defined in:
lib/auto_attr_init/assign_params.rb

Instance Method Summary collapse

Constructor Details

#initialize(object) ⇒ AssignParams

Returns a new instance of AssignParams.

Parameters:

  • object (Object)


8
9
10
# File 'lib/auto_attr_init/assign_params.rb', line 8

def initialize object
  @object = object
end

Instance Method Details

#assign(args, params) ⇒ Hash

Returns { param name => value }.

Parameters:

  • args (Array)
  • params (Array)
    param type, param name, default value | nil][

Returns:

  • (Hash)

    { param name => value }



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/auto_attr_init/assign_params.rb', line 15

def assign args, params
  param_args = {}
  key_params, params =
    *params.partition{|param| [:key, :keyrest].include? param[0] }
  unless key_params.empty?
    key_args = args.last.is_a?(Hash) ? args.pop : {}
    param_args = param_args.merge assign_key_params(key_args, key_params)
  end
  if params.any?{|param| param[0] == :rest }
    param_args = param_args.merge assign_rest_params(args, params)
  else
    param_args = param_args.merge assign_req_params(args, params)
  end
  param_args
end