class ParamsReady::Pagination::BeforeKeysets

Public Instance Methods

page(delta, limit) click to toggle source
# File lib/params_ready/pagination/keysets.rb, line 22
def page(delta, limit)
  raise "Expected positive integer for limit, got: #{limit}" if limit < 1
  raise "Expected non-negative integer for delta, got: #{delta}" if delta < 0

  if delta == 0
    transform(@keysets.first)
  else
    shift = delta * limit
    diff = @keysets.length - shift
    if diff > 0
      transform(@keysets[shift])
    elsif diff.abs < limit
      {}
    else
      nil
    end
  end
end