Sha256: b26e7c3c78793a4265b43e615c1e8e7c51cfd8ef439e5b6c5dc4c1c231c63680

Contents?: true

Size: 844 Bytes

Versions: 3

Compression:

Stored size: 844 Bytes

Contents

module Mongomatic
  class Cursor
    attr_accessor :mongo_cursor
    
    def initialize(obj_class, mongo_cursor)
      @obj_class    = obj_class
      @mongo_cursor = mongo_cursor
      
      @mongo_cursor.public_methods(false).each do |meth|
        next if ["next_document","each","to_a"].include?(meth.to_s)
        (class << self; self; end).class_eval do
          define_method meth do |*args|
            @mongo_cursor.send meth, *args
          end
        end
      end
    end
    
    def next_document
      if doc = @mongo_cursor.next_document
        @obj_class.new(doc)
      end
    end
    
    alias :next :next_document
    
    def each
      @mongo_cursor.each do |doc|
        yield(@obj_class.new(doc))
      end
    end
    
    def to_a
      @mongo_cursor.to_a.collect { |doc| @obj_class.new(doc) }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mongomatic-0.0.3 lib/mongomatic/cursor.rb
mongomatic-0.0.2 lib/mongomatic/cursor.rb
mongomatic-0.0.1 lib/mongomatic/cursor.rb