class HALPresenter::Pagination
Attributes
collection[RW]
self_uri[RW]
serialized[RW]
Public Class Methods
included(base)
click to toggle source
# File lib/hal_presenter/pagination.rb, line 7 def self.included(base) base.extend ClassMethods end
new(serialized, collection)
click to toggle source
# File lib/hal_presenter/pagination.rb, line 54 def initialize(serialized, collection) @serialized = serialized @collection = collection @self_uri = Uri.parse serialized.dig(:_links, :self, :href) end
paginate!(serialized, collection)
click to toggle source
# File lib/hal_presenter/pagination.rb, line 50 def self.paginate!(serialized, collection) new(serialized, collection).call end
Public Instance Methods
call()
click to toggle source
# File lib/hal_presenter/pagination.rb, line 60 def call return unless should_paginate? add_query_to_self add_prev_link add_next_link end
Private Instance Methods
add_next_link()
click to toggle source
# File lib/hal_presenter/pagination.rb, line 94 def add_next_link return if serialized[:_links][:next] || !next_page serialized[:_links][:next] = { href: (self_uri + query(next_page)).to_s } end
add_prev_link()
click to toggle source
# File lib/hal_presenter/pagination.rb, line 87 def add_prev_link return if serialized[:_links][:prev] || !prev_page serialized[:_links][:prev] = { href: (self_uri + query(prev_page)).to_s } end
add_query_to_self()
click to toggle source
# File lib/hal_presenter/pagination.rb, line 83 def add_query_to_self serialized[:_links][:self][:href] = (self_uri + query(current_page)).to_s end
current_page()
click to toggle source
Supported by Sequel, Kaminari and will_paginate
# File lib/hal_presenter/pagination.rb, line 102 def current_page collection.respond_to?(:current_page) && collection.current_page end
next_page()
click to toggle source
Supported by Sequel, Kaminari and will_paginate
# File lib/hal_presenter/pagination.rb, line 112 def next_page collection.respond_to?(:next_page) && collection.next_page end
per_page()
click to toggle source
# File lib/hal_presenter/pagination.rb, line 116 def per_page if collection.respond_to?(:page_size) collection.page_size # Supported by Sequel elsif collection.respond_to?(:max_per_page) collection.max_per_page # Supported by Kaminari elsif collection.respond_to?(:per_page) collection.per_page # Supported by will_paginate end end
prev_page()
click to toggle source
# File lib/hal_presenter/pagination.rb, line 106 def prev_page return collection.prev_page if collection.respond_to?(:prev_page) # Sequel and Kaminari return collection.previous_page if collection.respond_to?(:previous_page) # will_paginate end
query(page)
click to toggle source
# File lib/hal_presenter/pagination.rb, line 75 def query(page) return {} unless page { page: page, per_page: per_page, } end
should_paginate?()
click to toggle source
# File lib/hal_presenter/pagination.rb, line 71 def should_paginate? self_uri && current_page end