Module: ApiPagination

Defined in:
lib/api-pagination.rb,
lib/api-pagination/hooks.rb,
lib/api-pagination/railtie.rb,
lib/api-pagination/version.rb,
lib/api-pagination/configuration.rb

Defined Under Namespace

Modules: Hooks Classes: Configuration, Railtie, Version

Constant Summary collapse

VERSION =
Version.to_s

Class Method Summary collapse

Class Method Details

.configObject Also known as: configuration



137
138
139
# File 'lib/api-pagination/configuration.rb', line 137

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



133
134
135
# File 'lib/api-pagination/configuration.rb', line 133

def configure
  yield config
end

.pages_from(collection, options = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/api-pagination.rb', line 23

def pages_from(collection, options = {})
  return pagy_pages_from(collection) if ApiPagination.config.paginator == :pagy && collection.is_a?(Pagy)

  {}.tap do |pages|
    unless collection.first_page?
      pages[:first] = 1
      pages[:prev] = collection.current_page - 1
    end

    if !(collection.last_page? || (ApiPagination.config.paginator == :kaminari && collection.out_of_range?))
      pages[:last] = collection.total_pages if ApiPagination.config.include_total
      pages[:next] = collection.current_page + 1
    end
  end
end

.paginate(collection, options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/api-pagination.rb', line 6

def paginate(collection, options = {})
  options[:page] = options[:page].to_i
  options[:page] = 1 if options[:page] <= 0
  options[:per_page] = options[:per_page].to_i

  case ApiPagination.config.paginator
  when :pagy
    paginate_with_pagy(collection, options)
  when :kaminari
    paginate_with_kaminari(collection, options, options[:paginate_array_options] || {})
  when :will_paginate
    paginate_with_will_paginate(collection, options)
  else
    raise StandardError, "Unknown paginator: #{ApiPagination.config.paginator}"
  end
end

.total_from(collection) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/api-pagination.rb', line 39

def total_from(collection)
  case ApiPagination.config.paginator
  when :pagy then collection.count.to_s
  when :kaminari then collection.total_count.to_s
  when :will_paginate then collection.total_entries.to_s
  end
end