class Paged
Public Class Methods
new(items, opts)
click to toggle source
# File lib/paged.rb, line 4 def initialize(items, opts) raise ArgumentError.new ':page_size must be a positive number' unless opts[:page_size] and opts[:page_size] > 0 @items = items @page_size = opts[:page_size] @page = 0 end
Public Instance Methods
next_page()
click to toggle source
# File lib/paged.rb, line 25 def next_page return if outside_bounds page + 1 if page < total_pages end
page()
click to toggle source
# File lib/paged.rb, line 16 def page @page + 1 end
page=(page)
click to toggle source
# File lib/paged.rb, line 11 def page=(page) raise ArgumentError.new 'page must be a number' if not page.kind_of? Numeric @page = page - 1 end
previous_page()
click to toggle source
# File lib/paged.rb, line 20 def previous_page return if outside_bounds page - 1 if page > 1 end
respond_to?(symbol, include_private=false)
click to toggle source
# File lib/paged.rb, line 30 def respond_to?(symbol, include_private=false) @items.respond_to? symbol, include_private end
Private Instance Methods
method_missing(symbol, *args, &block)
click to toggle source
# File lib/paged.rb, line 36 def method_missing(symbol, *args, &block) page_of_items.send(symbol, *args, &block) end
outside_bounds()
click to toggle source
# File lib/paged.rb, line 53 def outside_bounds @page < 0 or @page > total_pages end
page_of_items()
click to toggle source
# File lib/paged.rb, line 40 def page_of_items return [] if outside_bounds @items[start_index, @page_size] end
start_index()
click to toggle source
# File lib/paged.rb, line 45 def start_index @page * @page_size end
total_pages()
click to toggle source
# File lib/paged.rb, line 49 def total_pages (@items.size.quo @page_size).ceil end