lib/confrider/core.rb in confrider-0.0.1 vs lib/confrider/core.rb in confrider-0.0.2

- old
+ new

@@ -1,29 +1,38 @@ class Confrider::Core - def initialize(hash) + def initialize @vault = {} - save_hash(nil, hash) end def [](key, default_value = nil) @vault.fetch(key, default_value) end + def from_hash(hash) + save_hash(nil, hash) + end + + def normalize_keys(*keys) + keys.join('.').gsub(/^\./, '') + end + + private + def save(key, value) @vault[key] = value end def save_hash(key, hash) - @vault[key] = hash if key + if key + @vault[key] ||= {} + @vault[key].deep_merge!(hash) + end hash.each do |inner_key, value| normalized_key = normalize_keys(key, inner_key) - case value - when Hash then save_hash(normalized_key, value) - else save(normalized_key, value) + if value.is_a? Hash + save_hash(normalized_key, value) + else + save(normalized_key, value) end end - end - - def normalize_keys(*keys) - keys.join('.').gsub(/^\./, '') end end