Module: RubyDig2

Included in:
Array, Hash
Defined in:
lib/ruby_dig2.rb,
lib/ruby_dig2/version.rb

Constant Summary collapse

VERSION =
'0.0.1'

Instance Method Summary collapse

Instance Method Details

#dig2(key, *rest) ⇒ Object



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

def dig2(key, *rest)
  value =
    if key.is_a?(Hash)
      detect do |e| 
        key.all? { |k, v| e[k] == v }
      end
    else
      self[key]
    end
  if value.nil? || rest.empty?
    value
  elsif value.respond_to?(:dig2)
    value.dig2(*rest)
  else
    fail TypeError, "#{value.class} does not have #dig2 method"
  end
end