Sha256: 282ce4b1b2d85da05e680f88e3b83eeae0811ccc16fe4664aabbf63d7553e218

Contents?: true

Size: 580 Bytes

Versions: 2

Compression:

Stored size: 580 Bytes

Contents

require 'geared_pagination/ratios'

module GearedPagination
  class PortionAtOffset
    attr_reader :page_number, :ratios

    def initialize(page_number: 1, per_page: Ratios.new)
      @page_number, @ratios = page_number, per_page
    end

    def from(scope)
      scope.limit(limit).offset(offset)
    end

    def limit
      ratios[page_number]
    end

    def offset
      (page_number - 1).times.sum { |index| ratios[index + 1] }
    end

    def next_param(*)
      page_number + 1
    end


    def cache_key
      "#{page_number}:#{ratios.cache_key}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
geared_pagination-1.0.1 lib/geared_pagination/portions/portion_at_offset.rb
geared_pagination-1.0.0 lib/geared_pagination/portions/portion_at_offset.rb