lib/pagy.rb in pagy-5.0.0 vs lib/pagy.rb in pagy-5.0.1
- old
+ new
@@ -3,11 +3,11 @@
require 'pathname'
# Core class
class Pagy
- VERSION = '5.0.0'
+ VERSION = '5.0.1'
# Root pathname to get the path of Pagy files like templates or dictionaries
def self.root
@root ||= Pathname.new(__dir__).freeze
end
@@ -30,12 +30,11 @@
def initialize(vars)
normalize_vars(vars)
setup_vars(count: 0, page: 1, outset: 0)
setup_items_var
setup_pages_var
- raise OverflowError.new(self), "expected :page in 1..#{@last}; got #{@page.inspect}" \
- if @page > @last
+ raise OverflowError.new(self, :page, "in 1..#{@last}", @page) if @page > @last
@offset = (@items * (@page - 1)) + @outset
@from = [@offset - @outset + 1, @count].min
@to = [@offset - @outset + @items, @count].min
@in = [@to - @from + 1, @count].min
@@ -44,11 +43,11 @@
end
# Return the array of page numbers and :gap items e.g. [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
def series(size = @vars[:size])
return [] if size.empty?
- raise VariableError.new(self), "expected 4 items >= 0 in :size; got #{size.inspect}" \
+ raise VariableError.new(self, :size, 'to contain 4 items >= 0', size) \
unless size.size == 4 && size.all? { |num| !num.negative? rescue false } # rubocop:disable Style/RescueModifier
# This algorithm is up to ~5x faster and ~2.3x lighter than the previous one (pagy < 4.3)
left_gap_start = 1 + size[0] # rubocop:disable Layout/ExtraSpacing, Layout/SpaceAroundOperators
left_gap_end = @page - size[1] - 1
@@ -79,10 +78,10 @@
end
# Setup and validates the passed vars: var must be present and value.to_i must be >= to min
def setup_vars(name_min)
name_min.each do |name, min|
- raise VariableError.new(self), "expected :#{name} >= #{min}; got #{@vars[name].inspect}" \
+ raise VariableError.new(self, name, ">= #{min}", @vars[name]) \
unless @vars[name] && instance_variable_set(:"@#{name}", @vars[name].to_i) >= min
end
end
# Setup and validate the items (overridden by the gearbox extra)