Sha256: 34f268d6666380e1a740563fdcbfb47f63264807dd952615717d06c948535534
Contents?: true
Size: 1.38 KB
Versions: 3
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true # Locker subsystem module Locker # A paginated list of items (e.g. labels or resources). # # @api private class List # @return [#list] The Ruby class of the item to be listed. attr_reader :item_class # @return [Enumerable] The full list of items. attr_reader :list # @return [Integer] The number of items displayed per page. attr_reader :per_page # @return [Integer] The page the user has requested. attr_reader :page # @return [Integer] The total number of pages. attr_reader :pages # @return [Integer] The zero-based index offset that the requested page starts on within the full list. attr_reader :offset 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 # Whether or not the list has multiple pages. # # @return [Boolean] def multiple_pages? list.count > per_page end # An enumerable of the items in the requested page. # # @return [Enumerable] def requested_page list[offset, per_page] end # Whether or not the requested page exists. # # @return [Boolean] def valid_page? page >= 1 && page <= pages end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lita-locker-1.2.0 | lib/locker/list.rb |
lita-locker-1.1.1 | lib/locker/list.rb |
lita-locker-1.1.0 | lib/locker/list.rb |