summaryrefslogtreecommitdiff
path: root/lib/hashie/extensions/symbolize_keys.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/hashie/extensions/symbolize_keys.rb')
-rw-r--r--lib/hashie/extensions/symbolize_keys.rb13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/hashie/extensions/symbolize_keys.rb b/lib/hashie/extensions/symbolize_keys.rb
index e4315bd..d1da9cb 100644
--- a/lib/hashie/extensions/symbolize_keys.rb
+++ b/lib/hashie/extensions/symbolize_keys.rb
@@ -46,7 +46,7 @@ module Hashie
hash.extend(Hashie::Extensions::SymbolizeKeys) unless hash.respond_to?(:symbolize_keys!)
hash.keys.each do |k| # rubocop:disable Performance/HashEachMethods
symbolize_keys_recursively!(hash[k])
- hash[k.to_sym] = hash.delete(k)
+ hash[convert_key(k)] = hash.delete(k)
end
hash
end
@@ -61,6 +61,17 @@ module Hashie
symbolize_keys!(new_hash)
end
end
+
+ private
+
+ # Converts a key to a symbol, if possible
+ #
+ # @api private
+ # @param [<K>] key the key to attempt convert to a symbol
+ # @return [Symbol, K]
+ def convert_key(key)
+ key.respond_to?(:to_sym) ? key.to_sym : key
+ end
end
class << self