class JsonApiClient::Paginating::Paginator
Attributes
links[R]
params[R]
result_set[R]
Public Class Methods
new(result_set, data)
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 12 def initialize(result_set, data) @params = params_for_uri(result_set.uri) @result_set = result_set @links = data["links"] end
Public Instance Methods
current_page()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 62 def current_page params.fetch(page_param, 1).to_i end
first()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 26 def first result_set.links.fetch_link("first") end
last()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 30 def last result_set.links.fetch_link("last") end
next()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 18 def next result_set.links.fetch_link("next") end
next_page()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 74 def next_page current_page < total_pages ? (current_page + 1) : nil end
offset()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 52 def offset per_page * (current_page - 1) end
out_of_bounds?()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 66 def out_of_bounds? current_page > total_pages end
per_page()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 56 def per_page params.fetch(per_page_param) do result_set.length end.to_i end
Also aliased as: limit_value
prev()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 22 def prev result_set.links.fetch_link("prev") end
previous_page()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 70 def previous_page current_page > 1 ? (current_page - 1) : nil end
total_count()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 50 def total_count; total_entries; end
total_entries()
click to toggle source
this number may be off
# File lib/json_api_client/paginating/paginator.rb, line 47 def total_entries per_page * total_pages end
total_pages()
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 34 def total_pages if links["last"] uri = result_set.links.link_url_for("last") last_params = params_for_uri(uri) last_params.fetch(page_param) do current_page end.to_i else current_page end end
Protected Instance Methods
params_for_uri(uri)
click to toggle source
# File lib/json_api_client/paginating/paginator.rb, line 82 def params_for_uri(uri) return {} unless uri uri = Addressable::URI.parse(uri) ( uri.query_values || {} ).with_indifferent_access end