Class: JsonApiClient::Paginating::Paginator
- Inherits:
-
Object
- Object
- JsonApiClient::Paginating::Paginator
- Defined in:
- lib/json_api_client/paginating/paginator.rb
Instance Attribute Summary collapse
-
#links ⇒ Object
readonly
Returns the value of attribute links.
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#result_set ⇒ Object
readonly
Returns the value of attribute result_set.
Instance Method Summary collapse
- #current_page ⇒ Object
- #first ⇒ Object
-
#initialize(result_set, data) ⇒ Paginator
constructor
A new instance of Paginator.
- #last ⇒ Object
- #next ⇒ Object
- #next_page ⇒ Object
- #offset ⇒ Object
- #out_of_bounds? ⇒ Boolean
- #per_page ⇒ Object (also: #limit_value)
- #prev ⇒ Object
- #previous_page ⇒ Object
-
#total_entries ⇒ Object
(also: #total_count)
this number may be off.
- #total_pages ⇒ Object
Constructor Details
#initialize(result_set, data) ⇒ Paginator
Returns a new instance of Paginator.
5 6 7 8 9 |
# File 'lib/json_api_client/paginating/paginator.rb', line 5 def initialize(result_set, data) @params = params_for_uri(result_set.uri) @result_set = result_set @links = data['links'] end |
Instance Attribute Details
#links ⇒ Object (readonly)
Returns the value of attribute links.
4 5 6 |
# File 'lib/json_api_client/paginating/paginator.rb', line 4 def links @links end |
#params ⇒ Object (readonly)
Returns the value of attribute params.
4 5 6 |
# File 'lib/json_api_client/paginating/paginator.rb', line 4 def params @params end |
#result_set ⇒ Object (readonly)
Returns the value of attribute result_set.
4 5 6 |
# File 'lib/json_api_client/paginating/paginator.rb', line 4 def result_set @result_set end |
Instance Method Details
#current_page ⇒ Object
54 55 56 |
# File 'lib/json_api_client/paginating/paginator.rb', line 54 def current_page params.fetch("page", 1).to_i end |
#first ⇒ Object
19 20 21 |
# File 'lib/json_api_client/paginating/paginator.rb', line 19 def first result_set.links.fetch_link("first") end |
#last ⇒ Object
23 24 25 |
# File 'lib/json_api_client/paginating/paginator.rb', line 23 def last result_set.links.fetch_link("last") end |
#next ⇒ Object
11 12 13 |
# File 'lib/json_api_client/paginating/paginator.rb', line 11 def next result_set.links.fetch_link("next") end |
#next_page ⇒ Object
66 67 68 |
# File 'lib/json_api_client/paginating/paginator.rb', line 66 def next_page current_page < total_pages ? (current_page + 1) : nil end |
#offset ⇒ Object
44 45 46 |
# File 'lib/json_api_client/paginating/paginator.rb', line 44 def offset per_page * (current_page - 1) end |
#out_of_bounds? ⇒ Boolean
58 59 60 |
# File 'lib/json_api_client/paginating/paginator.rb', line 58 def out_of_bounds? current_page > total_pages end |
#per_page ⇒ Object Also known as: limit_value
48 49 50 51 52 |
# File 'lib/json_api_client/paginating/paginator.rb', line 48 def per_page params.fetch("per_page") do result_set.length end.to_i end |
#prev ⇒ Object
15 16 17 |
# File 'lib/json_api_client/paginating/paginator.rb', line 15 def prev result_set.links.fetch_link("next") end |
#previous_page ⇒ Object
62 63 64 |
# File 'lib/json_api_client/paginating/paginator.rb', line 62 def previous_page current_page > 1 ? (current_page - 1) : nil end |
#total_entries ⇒ Object Also known as: total_count
this number may be off
39 40 41 |
# File 'lib/json_api_client/paginating/paginator.rb', line 39 def total_entries per_page * total_pages end |
#total_pages ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/json_api_client/paginating/paginator.rb', line 27 def total_pages if links["last"] last_params = params_for_uri(links["last"]) last_params.fetch("page") do current_page end.to_i else current_page end end |