Sha256: 445f848bd8804ef4cde7bce0eb6f930e5b436abab7a67860d227258abd6359b0

Contents?: true

Size: 491 Bytes

Versions: 2

Compression:

Stored size: 491 Bytes

Contents

require "ostruct"

module StreamElements
  class Object < OpenStruct
    def initialize(attributes)
      attributes["id"] = attributes.delete("_id") if attributes["_id"]
      super to_ostruct(attributes)
    end

    def to_ostruct(obj)
      if obj.is_a?(Hash)
        OpenStruct.new(obj.map { |key, val| [key, to_ostruct(val)] }.to_h)
      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

2 entries across 2 versions & 1 rubygems

Version Path
streamelements-0.5.0 lib/stream_elements/object.rb
streamelements-0.2.0 lib/stream_elements/object.rb