Module: Grape::Formatter::Paginater::Core

Included in:
Grape::Formatter::Paginater
Defined in:
lib/paginater/core.rb

Instance Method Summary collapse

Instance Method Details

#page_count(object_count, size) ⇒ Object



28
29
30
31
32
33
34
# 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) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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) ⇒ Object



46
47
48
49
# 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) ⇒ Object



36
37
38
39
40
41
42
43
44
# 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