class Pagy

def initialize(vars)

Merge and validate the options, do some simple arithmetic and set the instance variables
def initialize(vars)
  @vars = VARS.merge( vars.delete_if{|k,v| VARS.key?(k) && (v.nil? || v == '') } )
  @vars[:fragment] = Pagy.deprecated_var(:anchor, @vars[:anchor], :fragment, @vars[:fragment]) if @vars[:anchor]
  INSTANCE_VARS_MIN.each do |name,min|
    raise VariableError.new(self), "expected :#{name} >= #{min}; got #{@vars[name].inspect}" \
          unless @vars[name] && instance_variable_set(:"@#{name}", @vars[name].to_i) >= min
  end
  @pages = @last = [(@count.to_f / @items).ceil, 1].max
  raise OverflowError.new(self), "expected :page in 1..#{@last}; got #{@page.inspect}" \
        if @page > @last
  @offset = @items * (@page - 1) + @outset
  @items  = @count - ((@pages - 1) * @items) if @page == @last && @count.positive?
  @from   = @count.zero? ? 0 : @offset + 1 - @outset
  @to     = @count.zero? ? 0 : @offset + @items - @outset
  @prev   = (@page - 1 unless @page == 1)
  @next   = @page == @last ? (1 if @vars[:cycle]) : @page + 1
end