module Grape::Formatter::Paginater::Core

Public Instance Methods

page_count(object_count, size) click to toggle source
# File lib/paginater/core.rb, line 28
def page_count(object_count, size)
  page_count = if (object_count%size).zero?
    object_count/size
  else
    object_count/size + 1
  end
end
paginate(object, page, size) click to toggle source
# File lib/paginater/core.rb, line 8
def paginate(object, page, size)
  if object.respond_to?(:to_a)
    object = object.to_a
    if page > object.count || page.zero?
      raise Constants::PaginaterError, "invalid page #{page}"
    end
    if size.nil? || size <= 0
      raise Constants::PaginaterError, "invalid size #{size}"
    end
    size = object.count if size > object.count
    if page > page_count(object.count, size)
      raise Constants::PaginaterError, "page #{page} out"
    end
    object = object[((page - 1) * size)...(page * size)]
  else
    puts "Can't paginate #{object.class}"
    object
  end
end
simple(object, page = 1, size = 1) click to toggle source
# File lib/paginater/core.rb, line 46
def simple(object, page = 1, size = 1)
  object = object.to_a
  object = object[((page.to_i - 1) * size.to_i)...(page.to_i * size.to_i)]
end
total_pages(object_count, size, max_pages = nil) click to toggle source
# File lib/paginater/core.rb, line 36
def total_pages(object_count, size, max_pages = nil)
  return 1 if size.nil?
  total_pages_count = (object_count.to_f / size).ceil
  if max_pages && max_pages < total_pages_count
    max_pages
  else
    total_pages_count
  end
end