class ParamsReady::Pagination::AfterKeysets

Attributes

last[R]

Public Class Methods

new(last, keysets, &block) click to toggle source
# File lib/params_ready/pagination/keysets.rb, line 45
def initialize(last, keysets, &block)
  @last = last
  super keysets, &block
end

Public Instance Methods

page(delta, limit) click to toggle source
# File lib/params_ready/pagination/keysets.rb, line 50
def page(delta, limit)
  raise "Expected positive integer for limit, got: #{limit}" if limit < 1
  raise "Expected positive integer for delta, got: #{delta}" if delta < 1
  return if @keysets.length.zero?

  shift = (delta - 1) * limit

  if shift == 0
    @last
  else
    diff = @keysets.length - shift
    if diff < 1
      nil
    else
      transform(@keysets[shift - 1])
    end
  end
end