Sha256: 72fce9121394b25f8d7b27d6b116b00bca669f7c46b3b9a7e3e96b396f65d825

Contents?: true

Size: 734 Bytes

Versions: 1

Compression:

Stored size: 734 Bytes

Contents

require 'geared_pagination/ratios'
require 'geared_pagination/page'

module GearedPagination
  class Recordset
    attr_reader :records, :ratios

    def initialize(records, per_page: nil)
      @records = records
      @ratios  = GearedPagination::Ratios.new(per_page)
    end

    def page(number)
      GearedPagination::Page.new(number, from: self)
    end

    def page_count
      @page_count ||= begin
        count    = 0
        residual = records_count

        while residual > 0
          count   += 1
          residual = residual - ratios[count]
        end

        count > 0 ? count : 1
      end
    end

    def records_count
      @records_count ||= records.unscope(:limit).unscope(:offset).count
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
geared_pagination-0.2 lib/geared_pagination/recordset.rb