Sha256: 757dc818bdc76fb7a39eec3f8e8ef5e6718fff411ec77375177473099d23c617

Contents?: true

Size: 1.78 KB

Versions: 13

Compression:

Stored size: 1.78 KB

Contents

module MongoMapper
  module Plugins
    module Pagination
      class Proxy
        instance_methods.each { |m| undef_method m unless m =~ /(^__|^nil\?$|^send$|respond_to\?|proxy_|^object_id$)/ }
                
        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 # for will paginate support

        def send(method, *args, &block)
          if respond_to?(method)
            super
          else
            subject.send(method, *args, &block)
          end
        end

        def ===(other)
          other === subject
        end

        def method_missing(name, *args, &block)
          @subject.send(name, *args, &block)
        end
        
        def respond_to?(name, *args, &block)
          super || @subject.respond_to?(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
end

Version data entries

13 entries across 13 versions & 5 rubygems

Version Path
mongo_mapper-0.7.5 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper_ign-0.7.4 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-0.7.4 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-0.7.3 lib/mongo_mapper/plugins/pagination/proxy.rb
numon-0.0.1 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-0.7.2 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-0.7.1 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-unstable-2010.3.8 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-unstable-2010.3.5 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-unstable-2010.3.4 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-unstable-2010.3.3 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-rails3-0.7.0.1 lib/mongo_mapper/plugins/pagination/proxy.rb
mongo_mapper-unstable-2010.2.28 lib/mongo_mapper/plugins/pagination/proxy.rb