module Wor::Paginate
Constants
- VERSION
Public Class Methods
configure() { |Config| ... }
click to toggle source
# File lib/wor/paginate.rb, line 20 def self.configure yield Config return if Config.adapters.any? || Config.default_adapter.present? raise Exceptions::NoPaginationAdapter end
Public Instance Methods
find_adapter_for_content(content, options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 32 def find_adapter_for_content(content, options) return instance_adapter(options[:adapter], content, options) unless options[:adapter].nil? adapters = [] adapters << Config.default_adapter if Config.default_adapter.present? adapters += Config.adapters adapters.map { |adapter| instance_adapter(adapter, content, options) }.find(&:adapt?) end
formatter_class(options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 28 def formatter_class(options) options[:formatter].presence || Config.formatter end
includes?(options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 61 def includes?(options) !options[:include].nil? end
instance_adapter(adapter, content, options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 41 def instance_adapter(adapter, content, options) adapter.new(content, page(options), limit(options)) end
limit(options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 65 def limit(options) [ option_max_limit(options) || Config.max_limit, option_limit(options) || param_limit || Config.default_per_page ].min end
option_limit(options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 49 def option_limit(options) options[:limit]&.to_i end
option_max_limit(options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 53 def option_max_limit(options) options[:max_limit]&.to_i end
page(options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 45 def page(options) options[:page] || params[Config.page_param] || Config.default_page end
paginate(content, options = {})
click to toggle source
# File lib/wor/paginate/paginate.rb, line 11 def paginate(content, options = {}) current_url = request.original_url if (preserve_records = options[:preserve_records]) content, current_url = Wor::Paginate::Utils::PreserveRecordsHelper .new(content, current_url, preserve_records.is_a?(Hash) ? preserve_records : {}).call end adapter = find_adapter_for_content(content, options) raise Exceptions::NoPaginationAdapter if adapter.blank? formatter_class(options).new(adapter, options.merge(_current_url: current_url)).format end
param_limit()
click to toggle source
# File lib/wor/paginate/paginate.rb, line 57 def param_limit params[Config.per_page_param]&.to_i end
render_paginate_with_include(content, options)
click to toggle source
# File lib/wor/paginate/paginate.rb, line 24 def render_paginate_with_include(content, options) render json: paginate(content, options), include: options[:include] end
render_paginated(content, options = {})
click to toggle source
# File lib/wor/paginate/paginate.rb, line 5 def render_paginated(content, options = {}) return render_paginate_with_include(content, options) if includes?(options) render json: paginate(content, options) end