Class: Bridgetown::Paginate::Generator::Paginator
- Inherits:
-
Object
- Object
- Bridgetown::Paginate::Generator::Paginator
- Defined in:
- lib/bridgetown-paginate/paginator.rb
Overview
Handles the preparation of all the documents based on the current page index
Instance Attribute Summary collapse
-
#documents ⇒ Object
readonly
Returns the value of attribute documents.
-
#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.
-
#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_documents ⇒ Object
readonly
Returns the value of attribute total_documents.
-
#total_pages ⇒ Object
readonly
Returns the value of attribute total_pages.
Instance Method Summary collapse
-
#initialize(config_per_page, first_index_page_url, paginated_page_url, documents, 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, documents, cur_page_nr, num_pages, default_indexpage, default_ext) ⇒ Paginator
Initialize a new Paginator.
17 18 19 20 21 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 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/bridgetown-paginate/paginator.rb', line 17 def initialize( config_per_page, first_index_page_url, paginated_page_url, documents, 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 "page number can't be greater than total pages:" \ " #{@page} > #{@total_pages}" end init = (@page - 1) * @per_page offset = if init + @per_page - 1 >= documents.size documents.size else init + @per_page - 1 end # 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.empty? ? "index" : default_indexpage, !default_ext || default_ext.empty? ? ".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&.length&.positive? # 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_documents = documents.size @documents = documents[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 = unless @page == 1 if @page == 2 Utils.format_page_number( first_index_page_url, 1, @total_pages ) else Utils.format_page_number( paginated_page_url, @previous_page, @total_pages ) end end @next_page = @page != @total_pages ? @page + 1 : nil @next_page_path = if @page != @total_pages Utils.format_page_number( paginated_page_url, @next_page, @total_pages ) end @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
#documents ⇒ Object (readonly)
Returns the value of attribute documents.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def documents @documents end |
#first_page ⇒ Object (readonly)
Returns the value of attribute first_page.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def first_page @first_page end |
#first_page_path ⇒ Object (readonly)
Returns the value of attribute first_page_path.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def first_page_path @first_page_path end |
#last_page ⇒ Object (readonly)
Returns the value of attribute last_page.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def last_page @last_page end |
#last_page_path ⇒ Object (readonly)
Returns the value of attribute last_page_path.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def last_page_path @last_page_path end |
#next_page ⇒ Object (readonly)
Returns the value of attribute next_page.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def next_page @next_page end |
#next_page_path ⇒ Object (readonly)
Returns the value of attribute next_page_path.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def next_page_path @next_page_path end |
#page ⇒ Object (readonly)
Returns the value of attribute page.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def page @page end |
#page_path ⇒ Object (readonly)
Returns the value of attribute page_path.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def page_path @page_path end |
#page_trail ⇒ Object
Returns the value of attribute page_trail.
13 14 15 |
# File 'lib/bridgetown-paginate/paginator.rb', line 13 def page_trail @page_trail end |
#per_page ⇒ Object (readonly)
Returns the value of attribute per_page.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def per_page @per_page end |
#previous_page ⇒ Object (readonly)
Returns the value of attribute previous_page.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def previous_page @previous_page end |
#previous_page_path ⇒ Object (readonly)
Returns the value of attribute previous_page_path.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def previous_page_path @previous_page_path end |
#total_documents ⇒ Object (readonly)
Returns the value of attribute total_documents.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def total_documents @total_documents end |
#total_pages ⇒ Object (readonly)
Returns the value of attribute total_pages.
10 11 12 |
# File 'lib/bridgetown-paginate/paginator.rb', line 10 def total_pages @total_pages 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.
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/bridgetown-paginate/paginator.rb', line 97 def to_liquid { "per_page" => per_page, "documents" => documents, "total_documents" => total_documents, "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 |