Sha256: d2b5e17b1d493b30249bfbc425a4b64b41da42bd07b54c1e86e4322a53b97acb

Contents?: true

Size: 1.01 KB

Versions: 9

Compression:

Stored size: 1.01 KB

Contents

module RemoteResource
  class Collection
    include Enumerable

    delegate :[], :at, :reverse, :size, to: :to_a

    attr_reader :resource_klass, :resources_collection, :meta, :_response

    def initialize(resource_klass, resources_collection, response_hash)
      @resource_klass       = resource_klass
      @resources_collection = resources_collection
      @response_hash        = response_hash
      @meta                 = response_hash[:meta] || {}
      @_response            = response_hash[:_response]
    end

    def each(&block)
      if resources_collection.is_a? Array
        if defined?(@collection)
          @collection.each(&block)
        else
          @collection = []
          resources_collection.each do |element|
            record = resource_klass.new element.merge(@response_hash)
            @collection << record
            yield(record)
          end
        end
      end
    end

    def empty?
      resources_collection.blank?
    end

    def success?
      _response.success?
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ddy_remote_resource-1.0.0.rc2 lib/remote_resource/collection.rb
ddy_remote_resource-0.4.11 lib/remote_resource/collection.rb
ddy_remote_resource-1.0.0.rc1 lib/remote_resource/collection.rb
ddy_remote_resource-0.4.10 lib/remote_resource/collection.rb
ddy_remote_resource-0.4.9 lib/remote_resource/collection.rb
ddy_remote_resource-0.4.8 lib/remote_resource/collection.rb
ddy_remote_resource-0.4.7 lib/remote_resource/collection.rb
ddy_remote_resource-0.4.6 lib/remote_resource/collection.rb
ddy_remote_resource-0.4.5 lib/remote_resource/collection.rb