Module: Cartage::Dig

Included in:
StructDig
Defined in:
lib/cartage/backport.rb

Overview

An implementation of #dig for Ruby pre-2.3. Based originally on Invoca/ruby_dig with some inspiration from jrochkind/dig_rb.

Instance Method Summary collapse

Instance Method Details

#dig(key, *rest) ⇒ Object

:nodoc:



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/cartage/backport.rb', line 9

def dig(key, *rest)
  value = self[key]

  if value.nil? || rest.empty?
    value
  elsif value.respond_to?(:dig)
    value.dig(*rest)
  else
    fail TypeError, "#{value.class} does not have #dig method"
  end
end