summaryrefslogtreecommitdiff
path: root/lib/hashie/extensions/symbolize_keys.rb
diff options
context:
space:
mode:
authorCaroline Artz <ceartz@gmail.com>2020-05-04 20:15:32 -0500
committerGitHub <noreply@github.com>2020-05-04 21:15:32 -0400
commit0bca9255a6234606cbdd98880ccc241f192cfdae (patch)
treed165924fdabec9b24edca434e2b0bd998d602e33 /lib/hashie/extensions/symbolize_keys.rb
parentc066135a4bd6c75cd19fe342f768d2213df9e684 (diff)
downloadhashie-0bca9255a6234606cbdd98880ccc241f192cfdae.tar.gz
Changes to `Mash` initialization key string conversion. (#521)
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