Sha256: 00c231c4c863f07bc2b00701310dd2ae74621da8f3139392cb9af386231b8d0e
Contents?: true
Size: 1.56 KB
Versions: 1
Compression:
Stored size: 1.56 KB
Contents
module Paginator # Page object # # Retrieves items for a page and provides metadata about the position # of the page in the paginator class Page include Enumerable attr_reader :number, :pager def initialize(pager, number, select) #:nodoc: @pager, @number = pager, number @offset = (number - 1) * pager.per_page @select = select end # Retrieve the items for this page # * Caches def items @items ||= @select.call end # Does this page have any items? def empty? items.empty? end # Checks to see if there's a page before this one def prev? @number > 1 end # Get previous page (if possible) def prev @pager.page(@number - 1) if prev? end # Checks to see if there's a page after this one def next? @number < @pager.number_of_pages end # Get next page (if possible) def next @pager.page(@number + 1) if next? end # The "item number" of the first item on this page def first_item_number 1 + @offset end # The "item number" of the last item on this page def last_item_number if next? @offset + @pager.per_page else @pager.count end end def ==(other) #:nodoc: @pager == other.pager && self.number == other.number end def each(&block) items.each(&block) end def method_missing(meth, *args, &block) #:nodoc: if @pager.respond_to?(meth) @pager.__send__(meth, *args, &block) else super end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
paginator-1.2.0 | lib/paginator/page.rb |