class PragmaticSerializer::PaginationJSON
Attributes
limit[R]
offset[R]
pagination_evaluator[R]
total[R]
Public Class Methods
new(limit:, offset:, total: nil, pagination_evaluator:)
click to toggle source
# File lib/pragmatic_serializer/pagination_json.rb, line 5 def initialize(limit:, offset:, total: nil, pagination_evaluator:) @limit = limit @offset = offset @total = total @pagination_evaluator = pagination_evaluator end
Public Instance Methods
as_json()
click to toggle source
# File lib/pragmatic_serializer/pagination_json.rb, line 12 def as_json h = { limit: limit, offset: offset, href: href, first: first, next: self.next, prev: prev, } h.merge!(total: total) if total h end
first()
click to toggle source
# File lib/pragmatic_serializer/pagination_json.rb, line 25 def first pagination_evaluator.call(limit: limit, offset: 0) end
href()
click to toggle source
# File lib/pragmatic_serializer/pagination_json.rb, line 44 def href pagination_evaluator.call(limit: limit, offset: offset) end
next()
click to toggle source
# File lib/pragmatic_serializer/pagination_json.rb, line 29 def next show_next = unless total.nil? total > (offset + limit) else true end pagination_evaluator.call(limit: limit, offset: offset + limit) if show_next end
prev()
click to toggle source
# File lib/pragmatic_serializer/pagination_json.rb, line 39 def prev prev_offset = offset < limit ? 0 : offset - limit pagination_evaluator.call(limit: limit, offset: prev_offset) if offset > 0 end