Module: Kim::Hash
- Included in:
- Hash
- Defined in:
- lib/kim/hash.rb
Instance Method Summary collapse
- #deep_has_key?(*keys) ⇒ Boolean
- #deep_merge(other, bang = false) ⇒ Object
- #deep_merge!(other) ⇒ Object
- #deep_value(*keys) ⇒ Object
Instance Method Details
#deep_has_key?(*keys) ⇒ Boolean
20 21 22 |
# File 'lib/kim/hash.rb', line 20 def deep_has_key? *keys has_key?(key = keys.shift) && ( keys.count < 1 || self[key].deep_has_key?(*keys)) end |
#deep_merge(other, bang = false) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/kim/hash.rb', line 3 def deep_merge other, bang = false merge_method = bang ? :merge! : :merge other.inject(self) do | result, item | key, value = item result.__send__ merge_method, ( if has_key? key and result[key].is_a? Hash and value.is_a? Hash { key => result[key].deep_merge(value) } else { key => value } end ) end end |
#deep_merge!(other) ⇒ Object
16 17 18 |
# File 'lib/kim/hash.rb', line 16 def deep_merge! other deep_merge other, true end |
#deep_value(*keys) ⇒ Object
24 25 26 |
# File 'lib/kim/hash.rb', line 24 def deep_value *keys keys.count <= 1 ? self[keys.first] : self[keys.shift].deep_value(*keys) rescue nil end |