Module: Grape::Formatter::Paginater::Core
- Included in:
- Grape::Formatter::Paginater
- Defined in:
- lib/paginater/core.rb
Instance Method Summary collapse
- #page_count(object_count, size) ⇒ Object
- #paginate(object, page, size) ⇒ Object
- #simple(object, page = 1, size = 1) ⇒ Object
- #total_pages(object_count, size, max_pages = nil) ⇒ Object
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 |