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