Sha256: 68b17bae2228965778d0cacedaeb4b42519339f39f2a63796aa15d408e789427

Contents?: true

Size: 493 Bytes

Versions: 5

Compression:

Stored size: 493 Bytes

Contents

module WerckerAPI
  module APICollection
    def self.included(klass)
      klass.class_eval do
        include Enumerable

        private
        attr_accessor :collection
      end
    end

    def initialize(collection = [])
      self.collection = collection.map { |item| item_klass.new(item) }
    end

    def each(&block)
      collection.each(&block)
    end

    private

    def item_klass
      @klass ||= Kernel.const_get(self.class.name.sub(/Collection$/, ''))
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
wercker_api-1.0.8 lib/wercker_api/api_collection.rb
wercker_api-1.0.6 lib/wercker_api/api_collection.rb
wercker_api-1.0.4 lib/wercker_api/api_collection.rb
wercker_api-1.0.2 lib/wercker_api/api_collection.rb
wercker_api-1.0.1 lib/wercker_api/api_collection.rb