diff options
author | elijah <elijah@riseup.net> | 2012-10-11 00:42:46 -0700 |
---|---|---|
committer | elijah <elijah@riseup.net> | 2012-10-11 00:42:46 -0700 |
commit | 113d3a59eaa7547433434d155fc1e60aa7c2094c (patch) | |
tree | c468f38066f2f7669f84efb2d6b971fac0cf2346 /lib/core_ext | |
parent | 64073733a1213a5e4fe2fef7722996f62ba89c5c (diff) | |
download | leap_cli-113d3a59eaa7547433434d155fc1e60aa7c2094c.tar.gz leap_cli-113d3a59eaa7547433434d155fc1e60aa7c2094c.tar.bz2 |
code cleanup. better support for nested configs and templates.
Diffstat (limited to 'lib/core_ext')
-rw-r--r-- | lib/core_ext/hash.rb | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/core_ext/hash.rb b/lib/core_ext/hash.rb index a9e5c9e..15f72fc 100644 --- a/lib/core_ext/hash.rb +++ b/lib/core_ext/hash.rb @@ -44,7 +44,7 @@ class Hash ## # - # convert self into a plain hash, but only include the specified keys + # convert self into a hash, but only include the specified keys # def pick(*keys) keys.map(&:to_s).inject({}) do |hsh, key| @@ -59,16 +59,16 @@ class Hash # recursive merging (aka deep merge) # taken from ActiveSupport::CoreExtensions::Hash::DeepMerge # - # def deep_merge(other_hash) - # self.merge(other_hash) do |key, oldval, newval| - # oldval = oldval.to_hash if oldval.respond_to?(:to_hash) - # newval = newval.to_hash if newval.respond_to?(:to_hash) - # oldval.class.to_s == 'Hash' && newval.class.to_s == 'Hash' ? oldval.deep_merge(newval) : newval - # end - # end + def deep_merge(other_hash) + self.merge(other_hash) do |key, oldval, newval| + oldval = oldval.to_hash if oldval.respond_to?(:to_hash) + newval = newval.to_hash if newval.respond_to?(:to_hash) + oldval.class.to_s == 'Hash' && newval.class.to_s == 'Hash' ? oldval.deep_merge(newval) : newval + end + end - # def deep_merge!(other_hash) - # replace(deep_merge(other_hash)) - # end + def deep_merge!(other_hash) + replace(deep_merge(other_hash)) + end end |