lib/pagy/extras/overflow.rb in pagy-1.0.0 vs lib/pagy/extras/overflow.rb in pagy-1.1.0
- old
+ new
@@ -1,13 +1,13 @@
# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/overflow
# frozen_string_literal: true
class Pagy
- VARS[:overflow] = :last_page
+ VARS[:overflow] = :empty_page
- def overflow?; @overflow end
+ def overflow?; !!@overflow end
module Overflow
def initialize(vars)
super
@@ -27,22 +27,43 @@
else
raise ArgumentError, "expected :overflow variable in [:last_page, :empty_page, :exception]; got #{@vars[:overflow].inspect}"
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
+ end
+ end
+ end
+
end
+ prepend Overflow
- module Series
+ # support for Pagy::Countless
+ if defined?(Pagy::Countless)
+ module CountlessOverflow
- 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
+ def finalize(items)
+ 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 ArgumentError, "expected :overflow variable in [:empty_page, :exception]; got #{@vars[:overflow].inspect}"
+ end
end
- end
+ end
+ Countless.prepend CountlessOverflow
end
-
- prepend Overflow
end