module RecursiveOpenStruct::Dig

Public Instance Methods

dig(name, *names) click to toggle source

Replaces +OpenStruct#dig+ to properly support treating nested values as RecursiveOpenStructs instead of returning the nested Hashes.

# File lib/recursive_open_struct/dig.rb, line 6
def dig(name, *names)
  begin
    name = name.to_sym
  rescue NoMethodError
    raise TypeError, "#{name} is not a symbol nor a string"
  end

  name_val = self[name]

  if names.length > 0 && name_val.respond_to?(:dig)
    name_val.dig(*names)
  else
    name_val
  end
end