class Pagez

Attributes

page[R]
per_page[R]

Public Class Methods

new(paginatable, options = {}) click to toggle source
# File lib/pagez/pagez.rb, line 4
def initialize(paginatable, options = {})
  @paginatable = paginatable
  @page = nil
  @per_page = options[:per_page] || 10
  @items = []
end

Public Instance Methods

to_a() click to toggle source
# File lib/pagez/pagez.rb, line 41
def to_a
  to_page(page)
  @items.to_a
end
to_h() click to toggle source
# 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) click to toggle source
# 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
total() click to toggle source
# File lib/pagez/pagez.rb, line 27
def total
  (@paginatable.count / per_page.to_f).ceil
end