module Pagy::OverflowExtra::PagyOverride

def initialize(**vars)

Add rescue clause for different behaviors
def initialize(**vars)
  @overflow ||= false                            # still true 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
    requested_page = @vars[:page]                # save the requested page (even after re-run)
    initialize(**vars, page: @last)              # re-run with the last page
    @vars[:page] = requested_page                # restore the requested page
  when :empty_page
    @in = @from = @to = 0                        # vars relative to the actual page
    if defined?(::Pagy::Calendar::Unit) \
        && is_a?(Calendar::Unit)                 # only for Calendar::Units instances
      edge = @order == :asc ? @final : @initial  # get the edge of the overflow side (neat, but any time would do)
      @from = @to = edge                         # set both to the edge time (a >=&&< query will get no records)
    end
    @prev = @last                                # prev relative to the actual page
    extend Series                                # special series for :empty_page
  else
    raise VariableError.new(self, :overflow, 'to be in [:last_page, :empty_page, :exception]', @vars[:overflow])
  end
end

def overflow?

Is the requested page overflowing?
def overflow?
  @overflow
end