Class: Hash
Direct Known Subclasses
Instance Method Summary collapse
- #__recurse_deep_symbolize_keys(value) ⇒ Object
-
#deep_merge(other_hash) ⇒ Object
from ActiveSupport:.
-
#deep_merge!(other_hash) ⇒ Object
Returns a new hash with
selfandother_hashmerged recursively. - #deep_symbolize_keys ⇒ Object
- #delete_all_of(*keys) ⇒ Object
-
#symbolize_keys ⇒ Object
Return a new hash with all keys converted to symbols.
-
#symbolize_keys! ⇒ Object
Destructively convert all keys to symbols.
Instance Method Details
#__recurse_deep_symbolize_keys(value) ⇒ Object
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/angry_mob/extend/hash.rb', line 46 def __recurse_deep_symbolize_keys(value) case value when Hash value.deep_symbolize_keys when Array value.map {|v| __recurse_deep_symbolize_keys(v)} else value end end |
#deep_merge(other_hash) ⇒ Object
from ActiveSupport:
Returns a new hash with self and other_hash merged recursively.
12 13 14 15 16 17 18 |
# File 'lib/angry_mob/extend/hash.rb', line 12 def deep_merge(other_hash) self.merge(other_hash) do |key, oldval, newval| oldval = oldval.to_hash if oldval.respond_to?(:to_hash) newval = newval.to_hash if newval.respond_to?(:to_hash) oldval.class.to_s == 'Hash' && newval.class.to_s == 'Hash' ? oldval.deep_merge(newval) : newval end end |
#deep_merge!(other_hash) ⇒ Object
Returns a new hash with self and other_hash merged recursively. Modifies the receiver in place.
22 23 24 |
# File 'lib/angry_mob/extend/hash.rb', line 22 def deep_merge!(other_hash) replace(deep_merge(other_hash)) end |
#deep_symbolize_keys ⇒ Object
39 40 41 42 43 44 |
# File 'lib/angry_mob/extend/hash.rb', line 39 def deep_symbolize_keys inject({}) do |, (key, value)| [(key.to_sym rescue key) || key] = __recurse_deep_symbolize_keys(value) end end |
#delete_all_of(*keys) ⇒ Object
2 3 4 5 6 7 |
# File 'lib/angry_mob/extend/hash.rb', line 2 def delete_all_of(*keys) keys = keys.map {|k| [ k.to_s, k.to_sym ]}.flatten.uniq values = values_at(*keys).flatten.compact.uniq keys.each {|k| delete k} values end |
#symbolize_keys ⇒ Object
Return a new hash with all keys converted to symbols.
27 28 29 30 31 32 |
# File 'lib/angry_mob/extend/hash.rb', line 27 def symbolize_keys inject({}) do |, (key, value)| [(key.to_sym rescue key) || key] = value end end |
#symbolize_keys! ⇒ Object
Destructively convert all keys to symbols.
35 36 37 |
# File 'lib/angry_mob/extend/hash.rb', line 35 def symbolize_keys! self.replace(self.symbolize_keys) end |