Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/hash/bbhash.rb
Instance Method Summary collapse
-
#deep_merge(with, merge_arrays: true, overwrite_vals: true) ⇒ Object
Merges with another hash but also merges all nested hashes and arrays/values.
- #deep_merge!(with, merge_arrays: true, overwrite_vals: true) ⇒ Object
-
#keys_to_sym ⇒ Object
Converts the keys of the hash as well as any nested hashes to symbols.
- #keys_to_sym! ⇒ Object
-
#reverse ⇒ Object
Reverses the order of keys in the Hash.
- #reverse! ⇒ Object
Instance Method Details
#deep_merge(with, merge_arrays: true, overwrite_vals: true) ⇒ Object
Merges with another hash but also merges all nested hashes and arrays/values. Based on method found @ stackoverflow.com/questions/9381553/ruby-merge-nested-hash
5 6 7 8 |
# File 'lib/hash/bbhash.rb', line 5 def deep_merge with, merge_arrays: true, overwrite_vals: true merger = proc{ |k, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge(v2, &merger) : (merge_arrays && v1.is_a?(Array) && v2.is_a?(Array) ? (v1 + v2) : (overwrite_vals ? v2 : [v1, v2].flatten)) } self.merge(with, &merger) end |
#deep_merge!(with, merge_arrays: true, overwrite_vals: true) ⇒ Object
10 11 12 |
# File 'lib/hash/bbhash.rb', line 10 def deep_merge! with, merge_arrays: true, overwrite_vals: true replace self.deep_merge(with, merge_arrays: merge_arrays, overwrite_vals: overwrite_vals) end |
#keys_to_sym ⇒ Object
Converts the keys of the hash as well as any nested hashes to symbols. Based on method found @ stackoverflow.com/questions/800122/best-way-to-convert-strings-to-symbols-in-hash
16 17 18 |
# File 'lib/hash/bbhash.rb', line 16 def keys_to_sym self.inject({}){|memo,(k,v)| memo[k.to_sym] = (Hash === v ? v.keys_to_sym : v); memo} end |
#keys_to_sym! ⇒ Object
20 21 22 |
# File 'lib/hash/bbhash.rb', line 20 def keys_to_sym! replace self.keys_to_sym end |
#reverse ⇒ Object
Reverses the order of keys in the Hash
25 26 27 |
# File 'lib/hash/bbhash.rb', line 25 def reverse self.to_a.reverse.to_h end |
#reverse! ⇒ Object
29 30 31 |
# File 'lib/hash/bbhash.rb', line 29 def reverse! replace self.reverse end |