class Locker::List

A paginated list of items (e.g. labels or resources).

@api private

Attributes

item_class[R]

@return [#list] The Ruby class of the item to be listed.

list[R]

@return [Enumerable] The full list of items.

offset[R]

@return [Integer] The zero-based index offset that the requested page starts on within the full list.

page[R]

@return [Integer] The page the user has requested.

pages[R]

@return [Integer] The total number of pages.

per_page[R]

@return [Integer] The number of items displayed per page.

Public Class Methods

new(item_class, per_page, page) click to toggle source
# File lib/locker/list.rb, line 27
def initialize(item_class, per_page, page)
  @item_class = item_class
  @list = item_class.list
  @per_page = per_page
  @page = Integer(page.to_s, 10)
  @pages = (list.count / per_page).ceil + 1
  @offset = per_page * (self.page - 1)
end

Public Instance Methods

multiple_pages?() click to toggle source

Whether or not the list has multiple pages.

@return [Boolean]

# File lib/locker/list.rb, line 39
def multiple_pages?
  list.count > per_page
end
requested_page() click to toggle source

An enumerable of the items in the requested page.

@return [Enumerable]

# File lib/locker/list.rb, line 46
def requested_page
  list[offset, per_page]
end
valid_page?() click to toggle source

Whether or not the requested page exists.

@return [Boolean]

# File lib/locker/list.rb, line 53
def valid_page?
  page >= 1 && page <= pages
end