class Kaminari::PaginatableArray

Kind of Array that can paginate

Constants

ENTRY

Public Class Methods

new(original_array = [], limit: nil, offset: nil, total_count: nil, padding: nil) click to toggle source

Options

  • :limit - limit

  • :offset - offset

  • :total_count - total_count

  • :padding - padding

Calls superclass method
# File lib/kaminari/models/array_extension.rb, line 18
def initialize(original_array = [], limit: nil, offset: nil, total_count: nil, padding: nil)
  @_original_array, @_limit_value, @_offset_value, @_total_count, @_padding = original_array, (limit || default_per_page).to_i, offset.to_i, total_count, padding.to_i

  if limit && offset
    extend Kaminari::PageScopeMethods
  end

  if @_total_count && (@_total_count <= original_array.count)
    original_array = original_array.first(@_total_count)[@_offset_value, @_limit_value]
  end

  unless @_total_count
    original_array = original_array[@_offset_value, @_limit_value]
  end

  super(original_array || [])
end

Public Instance Methods

entry_name(options = {}) click to toggle source

Used for page_entry_info

# File lib/kaminari/models/array_extension.rb, line 37
def entry_name(options = {})
  I18n.t('helpers.page_entries_info.entry', **options.reverse_merge(default: ENTRY.pluralize(options[:count])))
end
limit(num) click to toggle source

returns another chunk of the original array

# File lib/kaminari/models/array_extension.rb, line 49
def limit(num)
  self.class.new @_original_array, limit: num, offset: @_offset_value, total_count: @_total_count, padding: @_padding
end
offset(num) click to toggle source

returns another chunk of the original array

# File lib/kaminari/models/array_extension.rb, line 59
def offset(num)
  self.class.new @_original_array, limit: @_limit_value, offset: num, total_count: @_total_count, padding: @_padding
end
total_count() click to toggle source

total item numbers of the original array

# File lib/kaminari/models/array_extension.rb, line 54
def total_count
  @_total_count || @_original_array.length
end