Sha256: 2dc488ab09a83c5d9fd2e907b21d48a230559f5203c0681dbbc49c8b89b24692

Contents?: true

Size: 440 Bytes

Versions: 6

Compression:

Stored size: 440 Bytes

Contents

# frozen_string_literal: true

require "ostruct"

module Pinata
  class Object < OpenStruct
    def initialize(attributes)
      super(to_ostruct(attributes))
    end

    def to_ostruct(obj)
      if obj.is_a?(Hash)
        OpenStruct.new(obj.transform_values { |val| to_ostruct(val) })
      elsif obj.is_a?(Array)
        obj.map { |o| to_ostruct(o) }
      else # Assumed to be a primitive value
        obj
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pinata-1.0.5 lib/pinata/object.rb
pinata-1.0.4 lib/pinata/object.rb
pinata-1.0.3 lib/pinata/object.rb
pinata-1.0.2 lib/pinata/object.rb
pinata-1.0.1 lib/pinata/object.rb
pinata-1.0.0 lib/pinata/object.rb