diff options
author | Caroline Artz <ceartz@gmail.com> | 2020-05-04 20:15:32 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-04 21:15:32 -0400 |
commit | 0bca9255a6234606cbdd98880ccc241f192cfdae (patch) | |
tree | d165924fdabec9b24edca434e2b0bd998d602e33 /lib/hashie/extensions/symbolize_keys.rb | |
parent | c066135a4bd6c75cd19fe342f768d2213df9e684 (diff) | |
download | hashie-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.rb | 13 |
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 |