Sha256: 8ee1faec50e5e7afd4048f9b9fe56f569f2012f6af80c510220e730d14c90d1a

Contents?: true

Size: 373 Bytes

Versions: 6

Compression:

Stored size: 373 Bytes

Contents

unless Struct.method_defined? :dig
  class Struct
    def dig(key, *rest)
      return self[key] if key.respond_to?(:to_int)

      return nil unless respond_to?(key)
      val = public_send(key)
      return val if rest.empty? || val == nil
      raise TypeError, "#{val.class} does not have #dig method" unless val.respond_to? :dig
      val.dig(*rest)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
backports-3.25.0 lib/backports/2.3.0/struct/dig.rb
backports-3.24.1 lib/backports/2.3.0/struct/dig.rb
backports-3.24.0 lib/backports/2.3.0/struct/dig.rb
backports-3.23.0 lib/backports/2.3.0/struct/dig.rb
backports-3.22.1 lib/backports/2.3.0/struct/dig.rb
backports-3.22.0 lib/backports/2.3.0/struct/dig.rb