lib/easy-settings/path_source.rb in easy-settings-1.1.0 vs lib/easy-settings/path_source.rb in easy-settings-1.2.0
- old
+ new
@@ -17,15 +17,23 @@
variable = path.gsub("#{base_path}/", "")
value = File.read(path).strip
keys = variable.to_s.split(separator)
- keys.map!{ |key| key.send(converter) } if converter
-
- leaf = keys[0...-1].inject(data){ |h, key| h[key] ||= {} }
- leaf[keys.last] = parse_values ? EasySettings::Coercion.new(value).run : value
+ assign_value(data, keys, value)
end
end
- rescue NoMethodError => e
- raise "Invalid name converter: #{converter}"
+ end
+
+ 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
end