Sha256: 05a315c887c22c4d2fca09f569d2b04a0cef35f5679c908bdeba8a9aad86c904

Contents?: true

Size: 1.33 KB

Versions: 13

Compression:

Stored size: 1.33 KB

Contents

# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/docs/api/countless
# frozen_string_literal: true

require_relative '../pagy'

class Pagy
  # No need to know the count to paginate
  class Countless < Pagy
    # Merge and validate the options, do some simple arithmetic and set a few instance variables
    def initialize(vars = {}) # rubocop:disable Lint/MissingSuper
      normalize_vars(vars)
      setup_vars(page: 1, outset: 0)
      setup_items_var
      setup_offset_var
    end

    # Finalize the instance variables based on the fetched size
    def finalize(fetched_size)
      raise OverflowError.new(self, :page, "to be < #{@page}", @page) if fetched_size.zero? && @page > 1

      @last = fetched_size > @items ? @page + 1 : @page
      @last = vars[:max_pages] if vars[:max_pages] && @last > vars[:max_pages]
      raise OverflowError.new(self, :page, "in 1..#{@last}", @page) if @page > @last

      @in   = [fetched_size, @items].min
      @from = @in.zero? ? 0 : @offset - @outset + 1
      @to   = @offset - @outset + @in
      @prev = (@page - 1 unless @page == 1)
      @next = @page == @last ? (1 if @vars[:cycle]) : @page + 1
      self
    end

    # Override the original series.
    # Return nil if :countless_minimal is enabled
    def series(*, **)
      super unless @vars[:countless_minimal]
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
pagy-8.5.0 lib/pagy/countless.rb
pagy-8.4.5 lib/pagy/countless.rb
pagy-8.4.4 lib/pagy/countless.rb
pagy-8.4.3 lib/pagy/countless.rb
pagy-8.4.2 lib/pagy/countless.rb
pagy-8.4.1 lib/pagy/countless.rb
pagy-8.4.0 lib/pagy/countless.rb
pagy-8.3.0 lib/pagy/countless.rb
pagy-8.2.2 lib/pagy/countless.rb
pagy-8.2.1 lib/pagy/countless.rb
pagy-8.2.0 lib/pagy/countless.rb
pagy-8.1.2 lib/pagy/countless.rb
pagy-8.1.1 lib/pagy/countless.rb