lib/pagy.rb in pagy-9.0.1 vs lib/pagy.rb in pagy-9.0.2
- old
+ new
@@ -1,13 +1,14 @@
# See Pagy API documentation: https://ddnexus.github.io/pagy/docs/api/pagy
# frozen_string_literal: true
require 'pathname'
+require_relative 'pagy/shared_methods'
# Top superclass: it should define only what's common to all the subclasses
class Pagy
- VERSION = '9.0.1'
+ VERSION = '9.0.2'
# Core default: constant for easy access, but mutable for customizable defaults
DEFAULT = { count_args: [:all], # rubocop:disable Style/MutableConstant
ends: true,
limit: 20,
@@ -19,32 +20,9 @@
# Gem root pathname to get the path of Pagy files stylesheets, javascripts, apps, locales, etc.
def self.root
@root ||= Pathname.new(__dir__).parent.freeze
end
- # Shared with Keyset
- module SharedMethods
- attr_reader :page, :limit, :vars
-
- # Validates and assign the passed vars: var must be present and value.to_i must be >= to min
- def assign_and_check(name_min)
- name_min.each do |name, min|
- raise VariableError.new(self, name, ">= #{min}", @vars[name]) \
- unless @vars[name]&.respond_to?(:to_i) && \
- instance_variable_set(:"@#{name}", @vars[name].to_i) >= min
- end
- end
-
- # Assign @limit (overridden by the gearbox extra)
- def assign_limit
- assign_and_check(limit: 1)
- end
-
- # Assign @vars
- def assign_vars(default, vars)
- @vars = { **default, **vars.delete_if { |k, v| default.key?(k) && (v.nil? || v == '') } }
- end
- end
include SharedMethods
attr_reader :count, :from, :in, :last, :next, :offset, :prev, :to
alias pages last