Class: Pagez

Inherits:
Object
  • Object
show all
Defined in:
lib/pagez/pagez.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(paginatable, options = {}) ⇒ Pagez

Returns a new instance of Pagez.



4
5
6
7
8
9
# File 'lib/pagez/pagez.rb', line 4

def initialize(paginatable, options = {})
  @paginatable = paginatable
  @page = nil
  @per_page = options[:per_page] || 10
  @items = []
end

Instance Attribute Details

#pageObject (readonly)

Returns the value of attribute page.



2
3
4
# File 'lib/pagez/pagez.rb', line 2

def page
  @page
end

#per_pageObject (readonly)

Returns the value of attribute per_page.



2
3
4
# File 'lib/pagez/pagez.rb', line 2

def per_page
  @per_page
end

Instance Method Details

#to_aObject



41
42
43
44
# File 'lib/pagez/pagez.rb', line 41

def to_a
  to_page(page)
  @items.to_a
end

#to_hObject



31
32
33
34
35
36
37
38
39
# File 'lib/pagez/pagez.rb', line 31

def to_h
  to_page(page)
  {
    page: page,
    per_page: per_page,
    items: to_a,
    total: total
  }
end

#to_page(page) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/pagez/pagez.rb', line 11

def to_page(page)
  page = page.to_i
  page = 1 if page <= 0
  if @page != page
    @page = page
    @items = if defined?(ActiveRecord::Base) && @paginatable.is_a?(ActiveRecord::Base)
               @paginatable
                 .offset(@per_page * (page - 1))
                 .limit(@per_page)
             else
               @paginatable.slice((@per_page * (page - 1)), @per_page)
             end
  end
  self
end

#totalObject



27
28
29
# File 'lib/pagez/pagez.rb', line 27

def total
  (@paginatable.count / per_page.to_f).ceil
end