class Hash

Public Instance Methods

deep_fetch(*args, &block) click to toggle source
# File lib/flyml/core_ext/hash.rb, line 29
def deep_fetch(*args, &block)
  return self if args.empty?

  value = fetch(args.shift, &block)

  if value.is_a?(Hash)
    value.deep_fetch(*args, &block)
  elsif value.is_a?(Array) && !args.empty?
    value = value[args.shift]
    value.deep_fetch(*args, &block)
  else
    value
  end
end
recursive_symbolize_keys!() click to toggle source
# File lib/flyml/core_ext/hash.rb, line 14
def recursive_symbolize_keys!
  symbolize_keys!

  # symbolize each hash in .values
  values.each { |h| h.recursive_symbolize_keys! if h.is_a?(Hash) }

  # symbolize each hash inside an array in .values
  values.
    select { |v| v.is_a?(Array) }.
    flatten.
    each { |h| h.recursive_symbolize_keys! if h.is_a?(Hash) }

  self
end
symbolize_keys!() click to toggle source
# File lib/flyml/core_ext/hash.rb, line 2
def symbolize_keys!
  keys.each do |key|
    new_key = begin
      key.to_sym
    rescue
      key
    end

    self[new_key] = delete(key)
  end
end