class PaginateResponder::Base

Attributes

resource[R]
responder[R]

Public Class Methods

new(responder) click to toggle source
# File lib/paginate-responder/base.rb, line 5
def initialize(responder)
  @responder = responder
  @resource  = responder.resource
end

Private Class Methods

suitable?(resource) click to toggle source
# File lib/paginate-responder/base.rb, line 127
def suitable?(resource)
  false
end

Public Instance Methods

controller() click to toggle source
# File lib/paginate-responder/base.rb, line 14
def controller
  responder.controller
end
paginate!() click to toggle source
# File lib/paginate-responder/base.rb, line 22
def paginate!
  @resource = paginate

  update

  @resource
end
request() click to toggle source
# File lib/paginate-responder/base.rb, line 10
def request
  responder.request
end
response() click to toggle source
# File lib/paginate-responder/base.rb, line 18
def response
  controller.response
end

Protected Instance Methods

cast_page(page) click to toggle source
# File lib/paginate-responder/base.rb, line 57
def cast_page(page)
  Integer(page)
rescue ArgumentError
  1
end
default_max_per_page() click to toggle source
# File lib/paginate-responder/base.rb, line 108
def default_max_per_page
  100
end
default_per_page() click to toggle source
# File lib/paginate-responder/base.rb, line 104
def default_per_page
  50
end
first_page() click to toggle source
# File lib/paginate-responder/base.rb, line 80
def first_page
  1
end
last_page() click to toggle source
# File lib/paginate-responder/base.rb, line 92
def last_page
  total_pages
end
max_per_page() click to toggle source
# File lib/paginate-responder/base.rb, line 72
def max_per_page
  @max_per_page ||= begin
    val ||= controller.max_per_page if controller.respond_to? :max_per_page
    val ||= default_max_per_page
    val
  end
end
next_page() click to toggle source
# File lib/paginate-responder/base.rb, line 88
def next_page
  page + 1 if total_pages && page < total_pages
end
page() click to toggle source
# File lib/paginate-responder/base.rb, line 48
def page
  @page ||= begin
    val ||= controller.page if controller.respond_to? :page
    val ||= controller.params[:page]
    val ||= first_page
    cast_page val
  end
end
paginate() click to toggle source
# File lib/paginate-responder/base.rb, line 32
def paginate
  resource
end
per_page() click to toggle source
# File lib/paginate-responder/base.rb, line 63
def per_page
  @per_page ||= begin
    val ||= controller.per_page if controller.respond_to? :per_page
    val ||= controller.params[:per_page].try(:to_i)
    val ||= default_per_page
    val < 1 ? 1 : (val > max_per_page) ? max_per_page : val
  end
end
prev_page() click to toggle source
# File lib/paginate-responder/base.rb, line 84
def prev_page
  page - 1 if page > 1
end
total_count() click to toggle source
# File lib/paginate-responder/base.rb, line 100
def total_count
  nil
end
total_pages() click to toggle source
# File lib/paginate-responder/base.rb, line 96
def total_pages
  nil
end
update() click to toggle source
# File lib/paginate-responder/base.rb, line 36
def update
  link! 'first', page: first_page if first_page
  link! 'prev',  page: prev_page  if prev_page
  link! 'next',  page: next_page  if next_page
  link! 'last',  page: last_page  if last_page

  response.headers["X-Total-Pages"]  = total_pages.to_s if total_pages
  response.headers["X-Total-Count"]  = total_count.to_s if total_count
  response.headers["X-Per-Page"]     = per_page.to_s    if per_page
  response.headers["X-Current-Page"] = page.to_s        if page
end

Private Instance Methods