lib/pagy/extras/overflow.rb in pagy-4.11.0 vs lib/pagy/extras/overflow.rb in pagy-5.0.0
- old
+ new
@@ -1,77 +1,74 @@
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/overflow
# frozen_string_literal: true
class Pagy
+ DEFAULT[:overflow] = :empty_page
- module UseOverflowExtra
- VARS[:overflow] = :empty_page
-
- def overflow?
- @overflow
- end
-
- def initialize(vars)
- @overflow ||= false # don't override if :last_page re-run the method after an overflow
- super
- rescue OverflowError
- @overflow = true # add the overflow flag
- case @vars[:overflow]
- when :exception
- raise # same as without the extra
- when :last_page
- initial_page = @vars[:page] # save the very initial page (even after re-run)
- initialize vars.merge!(page: @last) # re-run with the last page
- @vars[:page] = initial_page # restore the inital page
- when :empty_page
- @offset = @items = @from = @to = 0 # vars relative to the actual page
- @prev = @last # prev relative to the actual page
- extend Series # special series for :empty_page
- else
- raise VariableError.new(self), "expected :overflow variable in [:last_page, :empty_page, :exception]; got #{@vars[:overflow].inspect}"
+ # Handles OverflowError exceptions with different options
+ module OverflowExtra
+ # Support for Pagy class
+ module Pagy
+ # Is the requested page overflowing?
+ def overflow?
+ @overflow
end
- end
- module Series
- def series(size=@vars[:size])
- @page = @last # series for last page
- super(size).tap do |s| # call original series
- s[s.index(@page.to_s)] = @page # string to integer (i.e. no current page)
- @page = @vars[:page] # restore the actual page
+ # Add rescue clause for different behaviors
+ def initialize(vars)
+ @overflow ||= false # don't override if :last_page re-run the method after an overflow
+ super
+ rescue OverflowError
+ @overflow = true # add the overflow flag
+ case @vars[:overflow]
+ when :exception
+ raise # same as without the extra
+ when :last_page
+ initial_page = @vars[:page] # save the very initial page (even after re-run)
+ initialize vars.merge!(page: @last) # re-run with the last page
+ @vars[:page] = initial_page # restore the initial page
+ when :empty_page
+ @offset = @items = @from = @to = 0 # vars relative to the actual page
+ @prev = @last # prev relative to the actual page
+ extend Series # special series for :empty_page
+ else
+ raise VariableError.new(self), \
+ "expected :overflow to be in [:last_page, :empty_page, :exception]; got #{@vars[:overflow].inspect}"
end
end
- end
- end
- prepend UseOverflowExtra
-
-
- # support for Pagy::Countless
- if defined?(Pagy::Countless)
- class Countless
-
- module UseOverflowExtra
-
- def finalize(items)
- @overflow = false
- super
- rescue OverflowError
- @overflow = true # add the overflow flag
- case @vars[:overflow]
- when :exception
- raise # same as without the extra
- when :empty_page
- @offset = @items = @from = @to = 0 # vars relative to the actual page
- @vars[:size] = [] # no page in the series
- self
- else
- raise VariableError.new(self), "expected :overflow variable in [:empty_page, :exception]; got #{@vars[:overflow].inspect}"
+ module Series
+ def series(size = @vars[:size])
+ @page = @last # series for last page
+ super(size).tap do |s| # call original series
+ s[s.index(@page.to_s)] = @page # string to integer (i.e. no current page)
+ @page = @vars[:page] # restore the actual page
end
end
-
end
- prepend UseOverflowExtra
+ end
+ # Support for Pagy::Countless class
+ module Countless
+ # Add rescue clause for different behaviors
+ def finalize(items)
+ @overflow = false
+ super
+ rescue OverflowError
+ @overflow = true # add the overflow flag
+ case @vars[:overflow]
+ when :exception
+ raise # same as without the extra
+ when :empty_page
+ @offset = @items = @from = @to = 0 # vars relative to the actual page
+ @vars[:size] = [] # no page in the series
+ self
+ else
+ raise VariableError.new(self), \
+ "expected :overflow to be in [:empty_page, :exception]; got #{@vars[:overflow].inspect}"
+ end
+ end
end
end
-
+ prepend OverflowExtra::Pagy
+ Countless.prepend OverflowExtra::Countless if defined?(Countless)
end