module PageNumber

Usage

require "page_number"

class BaseController
  include PageNumber

  protected

  def page_sizes
    [ 25, 50, 100 ]
  end
end

class SubController < BaseController
  def action
    User.all(:page => page(params[:page]), :per_page => per_page(params[:per_page]))
  end
end

Constants

VERSION

Public Instance Methods

__page__(n)
Alias for: page
__page__!(page)
Alias for: page!
__per_page__(n)
Alias for: per_page
page(n) click to toggle source
# File lib/page_number.rb, line 44
def page(n)
  n = __int(n)
  return default_page if n < 1

  max_page_number && n > max_page_number ? max_page_number : n
end
Also aliased as: __page__
page!(page) click to toggle source
# File lib/page_number.rb, line 34
def page!(page)
  n = __int(page)
  raise PageInvalid.new("page must be > 0", page) if n < 1
  raise PageInvalid.new("page must be <= #{max_page_number}", page) if max_page_number && n > max_page_number

  n
end
Also aliased as: __page__!
per_page(n) click to toggle source
# File lib/page_number.rb, line 53
def per_page(n)
  n = __int(n)
  return default_per_page if n < 1

  page_sizes && !page_sizes.include?(n) ? default_per_page : n
end
Also aliased as: __per_page__

Protected Instance Methods

default_page() click to toggle source
# File lib/page_number.rb, line 68
def default_page
  1
end
default_per_page() click to toggle source
# File lib/page_number.rb, line 64
def default_per_page
  10
end
max_page_number() click to toggle source
# File lib/page_number.rb, line 72
def max_page_number
end
page_sizes() click to toggle source
# File lib/page_number.rb, line 75
def page_sizes
end

Private Instance Methods

__int(n) click to toggle source
# File lib/page_number.rb, line 80
def __int(n)
  case
  when n.respond_to?(:to_i)
    n.to_i
  when n.respond_to?(:to_int)
    n.to_int
  else
    -1
  end
end