Class: Paginator::Page

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/paginator/page.rb

Overview

Page object

Retrieves items for a page and provides metadata about the position of the page in the paginator

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(pager, number, select) ⇒ Page

:nodoc:



13
14
15
16
17
# File 'lib/paginator/page.rb', line 13

def initialize(pager, number, select) #:nodoc:
  @pager, @number = pager, number
  @offset = (number - 1) * pager.per_page
  @select = select
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, &block) ⇒ Object

:nodoc:



72
73
74
75
76
77
78
# File 'lib/paginator/page.rb', line 72

def method_missing(meth, *args, &block) #:nodoc:
  if @pager.respond_to?(meth)
    @pager.__send__(meth, *args, &block)
  else
    super
  end
end

Instance Attribute Details

#numberObject (readonly)

Returns the value of attribute number.



11
12
13
# File 'lib/paginator/page.rb', line 11

def number
  @number
end

#pagerObject (readonly)

Returns the value of attribute pager.



11
12
13
# File 'lib/paginator/page.rb', line 11

def pager
  @pager
end

Instance Method Details

#==(other) ⇒ Object

:nodoc:



64
65
66
# File 'lib/paginator/page.rb', line 64

def ==(other) #:nodoc:
  @pager == other.pager && self.number == other.number
end

#each(&block) ⇒ Object



68
69
70
# File 'lib/paginator/page.rb', line 68

def each(&block)
  items.each(&block)
end

#empty?Boolean

Does this page have any items?

Returns:

  • (Boolean)


26
27
28
# File 'lib/paginator/page.rb', line 26

def empty?
  items.empty?
end

#first_item_numberObject

The “item number” of the first item on this page



51
52
53
# File 'lib/paginator/page.rb', line 51

def first_item_number
  1 + @offset
end

#itemsObject

Retrieve the items for this page

  • Caches



21
22
23
# File 'lib/paginator/page.rb', line 21

def items
  @items ||= @select.call
end

#last_item_numberObject

The “item number” of the last item on this page



56
57
58
59
60
61
62
# File 'lib/paginator/page.rb', line 56

def last_item_number
  if next?
    @offset + @pager.per_page
  else
    @pager.count
  end
end

#nextObject

Get next page (if possible)



46
47
48
# File 'lib/paginator/page.rb', line 46

def next
  @pager.page(@number + 1) if next?
end

#next?Boolean

Checks to see if there’s a page after this one

Returns:

  • (Boolean)


41
42
43
# File 'lib/paginator/page.rb', line 41

def next?
  @number < @pager.number_of_pages
end

#prevObject

Get previous page (if possible)



36
37
38
# File 'lib/paginator/page.rb', line 36

def prev
  @pager.page(@number - 1) if prev?
end

#prev?Boolean

Checks to see if there’s a page before this one

Returns:

  • (Boolean)


31
32
33
# File 'lib/paginator/page.rb', line 31

def prev?
  @number > 1
end