module PaginationRenderLogic::Digg
Provides logic for building digg style pagination First Previous 1 2 3 … 22 23 24 25 26 [27] 28 29 30 31 32 … 48 49 50 Next Last
Attributes
after_first_page[RW]
arround_current_page[RW]
current_page[RW]
first_page_section[RW]
last_page_section[RW]
middle_section[RW]
total_pages[RW]
Public Instance Methods
config(args = {})
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 9 def config(args = {}) @total_pages = args[:total_pages] || 0 @after_first_page = args[:after_first_page] || 3 @arround_current_page = args[:arround_current_page] || 5 @current_page = args[:current_page] || 1 end
config!(args = {})
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 16 def config!(args = {}) config(args) setup end
first_page()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 54 def first_page 1 end
has_first_page?()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 50 def has_first_page? @current_page > 1 end
has_first_page_section?()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 70 def has_first_page_section? not @first_page_section.empty? end
has_last_page?()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 42 def has_last_page? @current_page < @total_pages end
has_last_page_section?()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 74 def has_last_page_section? not @last_page_section.empty? end
has_links?()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 66 def has_links? @total_pages > 1 end
has_next_page?()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 34 def has_next_page? @current_page < @total_pages end
has_previous_page?()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 58 def has_previous_page? @current_page > 1 end
last_page()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 46 def last_page @total_pages end
next_page()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 38 def next_page @current_page + 1 end
previous_page()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 62 def previous_page @current_page - 1 end
setup()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 21 def setup @middle_section = ([current_page - arround_current_page, 1].max..[current_page + arround_current_page, total_pages].min).to_a @first_page_section = (1..[after_first_page, total_pages].min).to_a @last_page_section = ([1, total_pages - after_first_page + 1].max..total_pages).to_a if (total_pages / 2) > current_page merge_left merge_right else merge_right merge_left end end
Private Instance Methods
merge_left()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 80 def merge_left if (not @middle_section.empty?) and @middle_section.first - 1 <= @first_page_section.last @middle_section = @first_page_section | @middle_section @first_page_section.clear end end
merge_right()
click to toggle source
# File lib/pagination_render_logic/digg.rb, line 87 def merge_right if (not @middle_section.empty?) and @middle_section.last + 1 >= @last_page_section.first @middle_section = @middle_section | @last_page_section @last_page_section.clear end end