Module: Ro::Pagination

Included in:
Model::List
Defined in:
lib/ro/pagination.rb

Instance Method Summary collapse

Instance Method Details

#current_pageObject



31
32
33
# File 'lib/ro/pagination.rb', line 31

def current_page
  page
end

#num_pagesObject



48
49
50
51
# File 'lib/ro/pagination.rb', line 48

def num_pages
  paginate unless @num_pages
  @num_pages
end

#num_pages=(num_pages) ⇒ Object



44
45
46
# File 'lib/ro/pagination.rb', line 44

def num_pages=(num_pages)
  @num_pages = num_pages
end

#page(*_args) ⇒ Object



26
27
28
29
# File 'lib/ro/pagination.rb', line 26

def page(*_args)
  paginate unless @page
  @page
end

#page=(page) ⇒ Object



22
23
24
# File 'lib/ro/pagination.rb', line 22

def page=(page)
  @page = page
end

#paginate(*args) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/ro/pagination.rb', line 3

def paginate(*args)
  options = Map.options_for!(args)

  page = Integer(args.shift || options[:page] || 1)
  per = Integer(args.shift || options[:per] || options[:size] || 10)

  page = [page.abs, 1].max
  per = [per.abs, 1].max
d
  offset = (page - 1) * per
  length = per

  slice = dup.slice(offset, length)
  slice.page = page
  slice.per = per
  slice.num_pages = (size.to_f / per).ceil
  slice
end

#perObject



39
40
41
42
# File 'lib/ro/pagination.rb', line 39

def per
  paginate unless @per
  @per
end

#per=(per) ⇒ Object



35
36
37
# File 'lib/ro/pagination.rb', line 35

def per=(per)
  @per = per
end

#total_pagesObject



53
54
55
# File 'lib/ro/pagination.rb', line 53

def total_pages
  num_pages
end