Module: Hashie::Extensions::StringifyKeys::ClassMethods
- Included in:
- Hashie, Hashie::Extensions::StringifyKeys
- Defined in:
- lib/hashie/extensions/stringify_keys.rb
Instance Method Summary collapse
-
#stringify_keys(hash) ⇒ Object
Return a copy of hash with all keys converted to strings.
-
#stringify_keys!(hash) ⇒ Object
Convert all keys in the hash to strings.
-
#stringify_keys_recursively!(object) ⇒ Object
private
Stringify all keys recursively within nested hashes and arrays.
Instance Method Details
#stringify_keys(hash) ⇒ Object
Return a copy of hash with all keys converted to strings.
57 58 59 60 61 62 63 |
# File 'lib/hashie/extensions/stringify_keys.rb', line 57 def stringify_keys(hash) copy = hash.dup copy.extend(Hashie::Extensions::StringifyKeys) unless copy.respond_to?(:stringify_keys!) copy.tap do |new_hash| stringify_keys!(new_hash) end end |
#stringify_keys!(hash) ⇒ Object
Convert all keys in the hash to strings.
45 46 47 48 49 50 51 52 |
# File 'lib/hashie/extensions/stringify_keys.rb', line 45 def stringify_keys!(hash) hash.extend(Hashie::Extensions::StringifyKeys) unless hash.respond_to?(:stringify_keys!) hash.keys.each do |k| # rubocop:disable Performance/HashEachMethods stringify_keys_recursively!(hash[k]) hash[k.to_s] = hash.delete(k) end hash end |
#stringify_keys_recursively!(object) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Stringify all keys recursively within nested hashes and arrays.
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/hashie/extensions/stringify_keys.rb', line 25 def stringify_keys_recursively!(object) case object when self.class stringify_keys!(object) when ::Array object.each do |i| stringify_keys_recursively!(i) end when ::Hash stringify_keys!(object) end end |