Class: Hash

Inherits:
Object
  • Object
show all
Defined in:
lib/core_ext/hash.rb

Instance Method Summary collapse

Instance Method Details

#get_by_keys(*keys) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/core_ext/hash.rb', line 2

def get_by_keys *keys
  case keys.size
  when 0
    self
  when 1
    self[keys.first]
  else
    key = keys.shift
    if self.key?(key) && self[key].is_a?(Hash)
      self[key].get_by_keys(*keys)
    else
      nil
    end
  end
end

#keys?(*keys) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/core_ext/hash.rb', line 29

def keys? *keys
  h = self
  keys.each_with_index do |key, i|
    if h.key? key
      unless i == (keys.size-1)
        return false unless h[key].is_a? Hash
        h = h[key]
      else
        return true
      end
    else
      return false
    end
  end
end

#set_by_keys(keys, value) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/core_ext/hash.rb', line 18

def set_by_keys keys, value
  key = keys.shift

  if keys.empty?
    self[key] = value
  else
    self[key] ||= {}
    self[key].set_by_keys keys, value
  end
end