class PageUp::Pages

Attributes

page[R]
per_page[R]

Public Class Methods

new(collection, page, per_page, opts = {}) click to toggle source
Calls superclass method
# File lib/page_up/pages.rb, line 5
def initialize collection, page, per_page, opts = {}
  @page     = parse page, 1
  @per_page = parse per_page, 25
  @origin   = collection
  @opts     = opts
  super (collection[page_range] || [])
end

Public Instance Methods

current_slice() click to toggle source
# File lib/page_up/pages.rb, line 25
def current_slice
  slice_start..slice_end
end
pages() click to toggle source
# File lib/page_up/pages.rb, line 17
def pages
  if total_size > 0
    (total_size.to_f / per_page).ceil
  else
    1
  end
end
total_size() click to toggle source
# File lib/page_up/pages.rb, line 13
def total_size
  @opts.fetch(:total_size) { @origin.size }
end

Private Instance Methods

current_page() click to toggle source
# File lib/page_up/pages.rb, line 37
def current_page
  (page-1)*per_page
end
page_range() click to toggle source
# File lib/page_up/pages.rb, line 33
def page_range
  current_page...current_page+per_page
end
parse(value, default) click to toggle source
# File lib/page_up/pages.rb, line 41
def parse value, default
  Integer(value)
rescue TypeError
  default
end
slice_end() click to toggle source
# File lib/page_up/pages.rb, line 56
def slice_end
  if page + 2 > pages || pages < 5
    pages
  elsif page - 2 <= 0
    5
  else
    page + 2
  end
end
slice_start() click to toggle source
# File lib/page_up/pages.rb, line 47
def slice_start
  start = if page + 2 > pages
            pages - 4
          else
            page - 2
          end
  start > 0 ? start : 1
end