Module: Kim::Hash

Included in:
Hash
Defined in:
lib/kim/hash.rb

Instance Method Summary collapse

Instance Method Details

#deep_has_key?(*keys) ⇒ Boolean

Returns:

  • (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