Class: Hash

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

Instance Method Summary collapse

Instance Method Details

#deep_fetch(*args, &block) ⇒ Object

Raises:

  • (ArgumentError)


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/ruby_utils/core_ext/hash.rb', line 2

def deep_fetch *args, &block
  raise ArgumentError.new("wrong number of arguments (0 for 1..n)") if args.empty?

  value = fetch(args.shift, &block)
  if args.size > 0
    if value.kind_of?(Hash)
      value.deep_fetch(*args, &block)
    elsif value.kind_of?(Array)
      value = value[args.shift]
      if args.size > 0
        value.deep_fetch(*args, &block)
      else
        value
      end
    else
      {}.fetch(args.shift, &block)
    end
  else
    value
  end
end