Class: Jekyll::PaginateV2::Generator::Paginator
- Inherits:
-
Object
- Object
- Jekyll::PaginateV2::Generator::Paginator
- Defined in:
- lib/jekyll-paginate-v2/generator/paginator.rb
Overview
Handles the preparation of all the posts based on the current page index
Instance Attribute Summary collapse
-
#first_page ⇒ Object
readonly
Returns the value of attribute first_page.
-
#first_page_path ⇒ Object
readonly
Returns the value of attribute first_page_path.
-
#last_page ⇒ Object
readonly
Returns the value of attribute last_page.
-
#last_page_path ⇒ Object
readonly
Returns the value of attribute last_page_path.
-
#next_page ⇒ Object
readonly
Returns the value of attribute next_page.
-
#next_page_path ⇒ Object
readonly
Returns the value of attribute next_page_path.
-
#page ⇒ Object
readonly
Returns the value of attribute page.
-
#page_path ⇒ Object
readonly
Returns the value of attribute page_path.
-
#page_trail ⇒ Object
Returns the value of attribute page_trail.
-
#per_page ⇒ Object
readonly
Returns the value of attribute per_page.
-
#posts ⇒ Object
readonly
Returns the value of attribute posts.
-
#previous_page ⇒ Object
readonly
Returns the value of attribute previous_page.
-
#previous_page_path ⇒ Object
readonly
Returns the value of attribute previous_page_path.
-
#total_pages ⇒ Object
readonly
Returns the value of attribute total_pages.
-
#total_posts ⇒ Object
readonly
Returns the value of attribute total_posts.
Instance Method Summary collapse
-
#initialize(config_per_page, first_index_page_url, paginated_page_url, posts, cur_page_nr, num_pages, default_indexpage, default_ext) ⇒ Paginator
constructor
Initialize a new Paginator.
-
#to_liquid ⇒ Object
Convert this Paginator’s data to a Hash suitable for use by Liquid.
Constructor Details
#initialize(config_per_page, first_index_page_url, paginated_page_url, posts, cur_page_nr, num_pages, default_indexpage, default_ext) ⇒ Paginator
Initialize a new Paginator.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 22 def initialize(config_per_page, first_index_page_url, paginated_page_url, posts, cur_page_nr, num_pages, default_indexpage, default_ext) @page = cur_page_nr @per_page = config_per_page.to_i @total_pages = num_pages if @page > @total_pages raise RuntimeError, "page number can't be greater than total pages: #{@page} > #{@total_pages}" end init = (@page - 1) * @per_page offset = (init + @per_page - 1) >= posts.size ? posts.size : (init + @per_page - 1) # Ensure that the current page has correct extensions if needed this_page_url = Utils.ensure_full_path(@page == 1 ? first_index_page_url : paginated_page_url, !default_indexpage || default_indexpage.length == 0 ? 'index' : default_indexpage, !default_ext || default_ext.length == 0 ? '.html' : default_ext) # To support customizable pagination pages we attempt to explicitly append the page name to # the url incase the user is using extensionless permalinks. if default_indexpage && default_indexpage.length > 0 # Adjust first page url first_index_page_url = Utils.ensure_full_path(first_index_page_url, default_indexpage, default_ext) # Adjust the paginated pages as well paginated_page_url = Utils.ensure_full_path(paginated_page_url, default_indexpage, default_ext) end @total_posts = posts.size @posts = posts[init..offset] @page_path = Utils.format_page_number(this_page_url, cur_page_nr, @total_pages) @previous_page = @page != 1 ? @page - 1 : nil @previous_page_path = @page == 1 ? nil : @page == 2 ? Utils.format_page_number(first_index_page_url, 1, @total_pages) : Utils.format_page_number(paginated_page_url, @previous_page, @total_pages) @next_page = @page != @total_pages ? @page + 1 : nil @next_page_path = @page != @total_pages ? Utils.format_page_number(paginated_page_url, @next_page, @total_pages) : nil @first_page = 1 @first_page_path = Utils.format_page_number(first_index_page_url, 1, @total_pages) @last_page = @total_pages @last_page_path = Utils.format_page_number(paginated_page_url, @total_pages, @total_pages) end |
Instance Attribute Details
#first_page ⇒ Object (readonly)
Returns the value of attribute first_page.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def first_page @first_page end |
#first_page_path ⇒ Object (readonly)
Returns the value of attribute first_page_path.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def first_page_path @first_page_path end |
#last_page ⇒ Object (readonly)
Returns the value of attribute last_page.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def last_page @last_page end |
#last_page_path ⇒ Object (readonly)
Returns the value of attribute last_page_path.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def last_page_path @last_page_path end |
#next_page ⇒ Object (readonly)
Returns the value of attribute next_page.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def next_page @next_page end |
#next_page_path ⇒ Object (readonly)
Returns the value of attribute next_page_path.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def next_page_path @next_page_path end |
#page ⇒ Object (readonly)
Returns the value of attribute page.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def page @page end |
#page_path ⇒ Object (readonly)
Returns the value of attribute page_path.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def page_path @page_path end |
#page_trail ⇒ Object
Returns the value of attribute page_trail.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def page_trail @page_trail end |
#per_page ⇒ Object (readonly)
Returns the value of attribute per_page.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def per_page @per_page end |
#posts ⇒ Object (readonly)
Returns the value of attribute posts.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def posts @posts end |
#previous_page ⇒ Object (readonly)
Returns the value of attribute previous_page.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def previous_page @previous_page end |
#previous_page_path ⇒ Object (readonly)
Returns the value of attribute previous_page_path.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def previous_page_path @previous_page_path end |
#total_pages ⇒ Object (readonly)
Returns the value of attribute total_pages.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def total_pages @total_pages end |
#total_posts ⇒ Object (readonly)
Returns the value of attribute total_posts.
8 9 10 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 8 def total_posts @total_posts end |
Instance Method Details
#to_liquid ⇒ Object
Convert this Paginator’s data to a Hash suitable for use by Liquid.
Returns the Hash representation of this Paginator.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/jekyll-paginate-v2/generator/paginator.rb', line 68 def to_liquid { 'per_page' => per_page, 'posts' => posts, 'total_posts' => total_posts, 'total_pages' => total_pages, 'page' => page, 'page_path' => page_path, 'previous_page' => previous_page, 'previous_page_path' => previous_page_path, 'next_page' => next_page, 'next_page_path' => next_page_path, 'first_page' => first_page, 'first_page_path' => first_page_path, 'last_page' => last_page, 'last_page_path' => last_page_path, 'page_trail' => page_trail } end |