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