Method: EasySettings::PathSource#assign_value

Defined in:
lib/easy-settings/path_source.rb

#assign_value(data, keys, value) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/easy-settings/path_source.rb', line 27

def assign_value(data, keys, value)
  keys.map! do |key|
    next key.to_i if key =~ /^\d+/
    next key.send(converter) if converter
    key
  rescue NoMethodError => e
    raise "Invalid name converter: #{converter}"
  end

  leaf = keys[0...-1].each_with_index.inject(data){ |h, (key, i)| h[key] ||= keys[i + 1].is_a?(Integer) ? [] : {} }
  leaf[keys.last] = parse_values ? EasySettings::Coercion.new(value).run : value
end