class GearedPagination::PortionAtOffset

Attributes

page_number[R]
ratios[R]

Public Class Methods

new(page_number: 1, per_page: Ratios.new) click to toggle source
# File lib/geared_pagination/portions/portion_at_offset.rb, line 7
def initialize(page_number: 1, per_page: Ratios.new)
  @page_number, @ratios = page_number, per_page
end

Public Instance Methods

cache_key() click to toggle source
# File lib/geared_pagination/portions/portion_at_offset.rb, line 31
def cache_key
  "#{page_number}:#{ratios.cache_key}"
end
from(scope) click to toggle source
# File lib/geared_pagination/portions/portion_at_offset.rb, line 11
def from(scope)
  scope.limit(limit).offset(offset)
end
limit() click to toggle source
# File lib/geared_pagination/portions/portion_at_offset.rb, line 15
def limit
  ratios[page_number]
end
next_param(*) click to toggle source
# File lib/geared_pagination/portions/portion_at_offset.rb, line 26
def next_param(*)
  page_number + 1
end
offset() click to toggle source
# File lib/geared_pagination/portions/portion_at_offset.rb, line 19
def offset
  variable = [(page_number - 1), ratios.size - 1].min.times.sum { |index| ratios[index + 1] }
  fixed = [page_number - ratios.size, 0].max * ratios.fixed

  variable + fixed
end