class Hash

Public Instance Methods

get_by_keys(*keys) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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