Sha256: c8fe0d94c5fe6b41c878136b31822776297bda444d9f89cc6b91e556b30b191d

Contents?: true

Size: 1.13 KB

Versions: 10

Compression:

Stored size: 1.13 KB

Contents

module Kaminari
  # Kind of Array that can paginate
  class PaginatableArray < Array
    include Kaminari::ConfigurationMethods::ClassMethods

    attr_internal_accessor :limit_value, :offset_value

    def initialize(original_array, limit_val = default_per_page, offset_val = 0) #:nodoc:
      @_original_array, @_limit_value, @_offset_value = original_array, limit_val, offset_val
      super(original_array[offset_val, limit_val] || [])
    end

    # items at the specified "page"
    def page(num = 1)
      offset(limit_value * ([num.to_i, 1].max - 1))
    end

    # returns another chunk of the original array
    def limit(num)
      self.class.new @_original_array, num, offset_value
    end

    # total item numbers of the original array
    def total_count
      @_original_array.count
    end

    # returns another chunk of the original array
    def offset(num)
      arr = self.class.new @_original_array, limit_value, num
      class << arr
        include Kaminari::PageScopeMethods
      end
      arr
    end
  end

  # Wrap an Array object to make it paginatable
  def self.paginate_array(array)
    PaginatableArray.new array
  end
end

Version data entries

10 entries across 10 versions & 4 rubygems

Version Path
wulffeld_kaminari-0.12.4.2 lib/kaminari/models/array_extension.rb
wulffeld_kaminari-0.12.4.1 lib/kaminari/models/array_extension.rb
sayso-kaminari-0.12.4.001 lib/kaminari/models/array_extension.rb
dimkiriyenko-kaminari-0.12.6 lib/kaminari/models/array_extension.rb
dimkiriyenko-kaminari-0.12.5 lib/kaminari/models/array_extension.rb
dimkiriyenko-kaminari-0.12.4 lib/kaminari/models/array_extension.rb
kaminari-0.12.4 lib/kaminari/models/array_extension.rb
kaminari-0.12.3 lib/kaminari/models/array_extension.rb
kaminari-0.12.2 lib/kaminari/models/array_extension.rb
kaminari-0.12.1 lib/kaminari/models/array_extension.rb