Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/cbeer/kaminari into cbeer…
Browse files Browse the repository at this point in the history
…-master
  • Loading branch information
amatsuda committed Dec 11, 2011
2 parents 9891e1a + ab8a450 commit a54c3ce
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions lib/kaminari/helpers/paginator.rb
Expand Up @@ -11,6 +11,31 @@ class Paginator < Tag
# so that this instance can actually "render"
include ::ActionView::Context

module Windows
def relevant_pages options
[left_window(options), inside_window(options), right_window(options)].map(&:to_a).flatten.uniq.sort.reject { |x| x < 1 or x > options[:num_pages] }
end

def all_pages options
1.upto(options[:num_pages])
end

protected
def left_window options
1.upto(options[:left] + 1)
end

def right_window options
(options[:num_pages] - options[:right]).upto(options[:num_pages])
end

def inside_window options
(options[:current_page] - options[:window]).upto(options[:current_page] + options[:window])
end
end

include Windows

def initialize(template, options) #:nodoc:
@window_options = {}.tap do |h|
h[:window] = options.delete(:window) || options.delete(:inner_window) || Kaminari.config.window
Expand Down Expand Up @@ -42,6 +67,14 @@ def each_page
end
end

def each_relevant_page
return to_enum(:each_relevant_page) unless block_given?

relevant_pages(@window_options.merge(@options)).each do |i|
yield PageProxy.new(@window_options.merge(@options), i, @last)
end
end

def page_tag(page)
@last = Page.new @template, @options.merge(:page => page)
end
Expand Down

0 comments on commit a54c3ce

Please sign in to comment.