Sha256: 03095df27a8637dcc9e99242a2d9b825b8ed6eca459115655c9dbcd0eeeca2cb

Contents?: true

Size: 1.41 KB

Versions: 6

Compression:

Stored size: 1.41 KB

Contents

module Mongoo
  class Cursor
    include Enumerable

    attr_accessor :mongo_cursor

    def initialize(obj_class, mongo_cursor)
      @obj_class    = obj_class
      @mongo_cursor = mongo_cursor
    end

    def next_document
      if doc = @mongo_cursor.next_document
        obj = @obj_class.new(doc, true)
        Mongoo::IdentityMap.write(obj) if Mongoo::IdentityMap.on?
        obj
      end
    end

    alias :next :next_document

    def each
      @mongo_cursor.each do |doc|
        obj = @obj_class.new(doc, true)
        Mongoo::IdentityMap.write(obj) if Mongoo::IdentityMap.on?
        yield obj
      end
    end

    def to_a
      arr = @mongo_cursor.to_a.collect { |doc| @obj_class.new(doc, true) }
      if Mongoo::IdentityMap.on?
        arr.each { |obj| Mongoo::IdentityMap.write(obj) }
      end; arr
    end

    def count
      @mongo_cursor.count
    end

    def sort(key_or_list, direction=nil)
      @mongo_cursor.sort(key_or_list, direction)
      self
    end

    def limit(number_to_return=nil)
      @mongo_cursor.limit(number_to_return)
      self
    end

    def skip(number_to_return=nil)
      @mongo_cursor.skip(number_to_return)
      self
    end

    def batch_size(size=0)
      @mongo_cursor.batch_size(size)
      self
    end

    def method_missing(name, *args)
      if @mongo_cursor.respond_to?(name)
        @mongo_cursor.send name, *args
      else
        super
      end
    end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mongoo-0.3.1 lib/mongoo/cursor.rb
mongoo-0.3.0 lib/mongoo/cursor.rb
mongoo-0.2.4 lib/mongoo/cursor.rb
mongoo-0.2.3 lib/mongoo/cursor.rb
mongoo-0.2.2 lib/mongoo/cursor.rb
mongoo-0.2.1 lib/mongoo/cursor.rb