summaryrefslogtreecommitdiff
path: root/lib/leap_cli/core_ext/hash.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/leap_cli/core_ext/hash.rb')
-rw-r--r--lib/leap_cli/core_ext/hash.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/leap_cli/core_ext/hash.rb b/lib/leap_cli/core_ext/hash.rb
index 7df33b2..4eb3af3 100644
--- a/lib/leap_cli/core_ext/hash.rb
+++ b/lib/leap_cli/core_ext/hash.rb
@@ -32,4 +32,23 @@ class Hash
replace(deep_merge(other_hash))
end
+ #
+ # A recursive symbolize_keys
+ #
+ unless Hash.method_defined?(:symbolize_keys)
+ def symbolize_keys
+ self.inject({}) {|result, (key, value)|
+ new_key = case key
+ when String then key.to_sym
+ else key
+ end
+ new_value = case value
+ when Hash then symbolize_keys(value)
+ else value
+ end
+ result[new_key] = new_value
+ result
+ }
+ end
+ end
end