Sha256: e285e213c7774e9092d720cf0690f66abbcba6d86b0f61cbdef840b3e2a45452

Contents?: true

Size: 874 Bytes

Versions: 6

Compression:

Stored size: 874 Bytes

Contents

module Aws
  # @api private
  class Structure < Struct

    @classes = {}

    # Yields non-nil property names and values.
    def each(&block)
      members.each do |member|
        value = self[member]
        yield(member, value) unless value.nil?
      end
    end
    alias each_pair each

    # @overload to_hash()
    #   @return [Hash]
    def to_hash(obj = self)
      case obj
      when Structure
        obj.members.inject({}) do |hash, member|
          hash[member] = to_hash(obj[member]) unless obj[member].nil?
          hash
        end
      when Array then obj.map { |v| to_hash(v) }
      else obj
      end
    end

    # @param [Array<Symbol>] properties
    # @return [Structure]
    def self.new(properties, values = [])
      properties = [:_] if properties.empty?
      (@classes[properties] ||= super(*properties)).new(*values)
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
aws-sdk-core-2.0.0.rc6 lib/aws/structure.rb
aws-sdk-core-2.0.0.rc5 lib/aws/structure.rb
aws-sdk-core-2.0.0.rc4 lib/aws/structure.rb
aws-sdk-core-2.0.0.rc3 lib/aws/structure.rb
aws-sdk-core-2.0.0.rc2 lib/aws/structure.rb
aws-sdk-core-2.0.0.rc1 lib/aws/structure.rb