17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/sinja/sequel/pagination.rb', line 17
def page(collection, opts)
return collection, {} unless collection.respond_to?(:paginate) ||
collection.respond_to?(:dataset) && (collection = collection.dataset).respond_to?(:paginate)
opts = settings._sinja.page_using.merge(opts)
collection = collection.paginate \
opts[:number].to_i,
opts[:size].to_i,
(opts[:record_count].to_i if opts[:record_count])
base = {
:size=>collection.page_size,
:record_count=>collection.
}
= {
:first=>base.merge(:number=>1),
:self=>base.merge(:number=>collection.current_page),
:last=>base.merge(:number=>collection.page_count)
}
[:next] = base.merge(:number=>collection.next_page) if collection.next_page
[:prev] = base.merge(:number=>collection.prev_page) if collection.prev_page
return collection,
end
|