Sha256: 209b7d8928a64331eefda087d31899d59636fe34bf656ca341aa2b02e36f830e

Contents?: true

Size: 1.22 KB

Versions: 31

Compression:

Stored size: 1.22 KB

Contents

module MongoMapper
  module Pagination
    class PaginationProxy < BasicObject
      attr_accessor :subject
      attr_reader :total_entries, :per_page, :current_page
      alias limit per_page
      
      def initialize(total_entries, current_page, per_page=nil)
        @total_entries    = total_entries.to_i
        self.per_page     = per_page
        self.current_page = current_page
      end
      
      def total_pages
        (total_entries / per_page.to_f).ceil
      end
      
      def out_of_bounds?
        current_page > total_pages
      end
      
      def previous_page
        current_page > 1 ? (current_page - 1) : nil
      end
      
      def next_page
        current_page < total_pages ? (current_page + 1) : nil
      end
      
      def skip
        (current_page - 1) * per_page
      end
      alias offset skip
      
      def method_missing(name, *args, &block)
        @subject.send(name, *args, &block)
      end
      
      private
        def per_page=(value)
          value = 25 if value.blank?
          @per_page = value.to_i
        end
        
        def current_page=(value)
          value = value.to_i
          value = 1 if value < 1
          @current_page = value
        end
    end
  end
end

Version data entries

31 entries across 31 versions & 6 rubygems

Version Path
crnixon-mongomapper-0.3.4 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.1.1 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.1 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.3 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.5.1 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.5.2 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.5.4 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.5.5 lib/mongomapper/pagination.rb
djsun-mongomapper-0.3.5 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.10 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.11 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.12 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.13 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.14 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.15 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.3 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.4.1 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.4 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.5 lib/mongomapper/pagination.rb
hashrocket-mongomapper-0.3.6 lib/mongomapper/pagination.rb