Class: Bridgetown::Paginate::Utils
- Inherits:
-
Object
- Object
- Bridgetown::Paginate::Utils
- Defined in:
- lib/bridgetown-paginate/utils.rb
Overview
Static utility functions that are used in the code and don’t belong in once place in particular
Class Method Summary collapse
-
.calculate_number_of_pages(all_posts, per_page) ⇒ Object
Static: Calculate the number of pages.
-
.ensure_full_path(url, default_index, default_ext) ⇒ Object
Ensures that the passed in url has a index and extension applied.
-
.ensure_leading_dot(path) ⇒ Object
Static: Return a String version of the input which has a leading dot.
-
.ensure_leading_slash(path) ⇒ Object
Static: Return a String version of the input which has a leading slash.
-
.ensure_trailing_slash(path) ⇒ Object
Static: Return a String version of the input which has a trailing slash.
-
.format_page_number(to_format, cur_page_nr, total_page_count = nil) ⇒ Object
Static: returns a fully formatted string with the current (:num) page number and maximum (:max) page count replaced if configured.
-
.format_page_title(to_format, title, cur_page_nr = nil, total_page_count = nil) ⇒ Object
Static: returns a fully formatted string with the :title variable and the current (:num) page number and maximum (:max) page count replaced.
-
.remove_leading_slash(path) ⇒ Object
Static: Return a String version of the input without a leading slash.
-
.sort_get_post_data(post_data, sort_field) ⇒ Object
Retrieves the given sort field from the given post the sort_field variable can be a hierarchical value on the form “parent_field:child_field” repeated as many times as needed only the leaf child_field will be retrieved.
-
.sort_values(a, b) ⇒ Object
Sorting routine used for ordering posts by custom fields.
Class Method Details
.calculate_number_of_pages(all_posts, per_page) ⇒ Object
Static: Calculate the number of pages.
all_posts - The Array of all Posts. per_page - The Integer of entries per page.
Returns the Integer number of pages.
14 15 16 |
# File 'lib/bridgetown-paginate/utils.rb', line 14 def self.calculate_number_of_pages(all_posts, per_page) (all_posts.size.to_f / per_page.to_i).ceil end |
.ensure_full_path(url, default_index, default_ext) ⇒ Object
Ensures that the passed in url has a index and extension applied
126 127 128 129 130 131 132 133 134 |
# File 'lib/bridgetown-paginate/utils.rb', line 126 def self.ensure_full_path(url, default_index, default_ext) if url.end_with?("/") url + default_index + default_ext elsif !url.include?(".") url + default_index else url end end |
.ensure_leading_dot(path) ⇒ Object
Static: Return a String version of the input which has a leading dot.
If the input already has a dot in position zero, it will be
returned unchanged.
path - a String path
Returns the path with a leading slash
42 43 44 |
# File 'lib/bridgetown-paginate/utils.rb', line 42 def self.ensure_leading_dot(path) path[0..0] == "." ? path : ".#{path}" end |
.ensure_leading_slash(path) ⇒ Object
Static: Return a String version of the input which has a leading slash.
If the input already has a forward slash in position zero, it will be
returned unchanged.
path - a String path
Returns the path with a leading slash
53 54 55 |
# File 'lib/bridgetown-paginate/utils.rb', line 53 def self.ensure_leading_slash(path) path[0..0] == "/" ? path : "/#{path}" end |
.ensure_trailing_slash(path) ⇒ Object
Static: Return a String version of the input which has a trailing slash.
If the input already has a forward slash at the end, it will be
returned unchanged.
path - a String path
Returns the path with a trailing slash
73 74 75 |
# File 'lib/bridgetown-paginate/utils.rb', line 73 def self.ensure_trailing_slash(path) path[-1] == "/" ? path : "#{path}/" end |
.format_page_number(to_format, cur_page_nr, total_page_count = nil) ⇒ Object
Static: returns a fully formatted string with the current (:num) page number and maximum (:max) page count replaced if configured
21 22 23 24 25 26 |
# File 'lib/bridgetown-paginate/utils.rb', line 21 def self.format_page_number(to_format, cur_page_nr, total_page_count = nil) s = to_format.sub(":num", cur_page_nr.to_s) s = s.sub(":max", total_page_count.to_s) unless total_page_count.nil? s end |
.format_page_title(to_format, title, cur_page_nr = nil, total_page_count = nil) ⇒ Object
Static: returns a fully formatted string with the :title variable and the current (:num) page number and maximum (:max) page count replaced
31 32 33 |
# File 'lib/bridgetown-paginate/utils.rb', line 31 def self.format_page_title(to_format, title, cur_page_nr = nil, total_page_count = nil) format_page_number(to_format.sub(":title", title.to_s), cur_page_nr, total_page_count) end |
.remove_leading_slash(path) ⇒ Object
Static: Return a String version of the input without a leading slash.
path - a String path
Returns the input without the leading slash
62 63 64 |
# File 'lib/bridgetown-paginate/utils.rb', line 62 def self.remove_leading_slash(path) path[0..0] == "/" ? path[1..-1] : path end |
.sort_get_post_data(post_data, sort_field) ⇒ Object
Retrieves the given sort field from the given post the sort_field variable can be a hierarchical value on the form “parent_field:child_field” repeated as many times as needed only the leaf child_field will be retrieved
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/bridgetown-paginate/utils.rb', line 104 def self.sort_get_post_data(post_data, sort_field) # Begin by splitting up the sort_field by (;,:.) sort_split = sort_field.split(":") sort_value = post_data sort_split.each do |r_key| key = r_key.downcase.strip # Remove any erronious whitespace and convert to lower case return nil unless sort_value.key?(key) # Work my way through the hash sort_value = sort_value[key] end # If the sort value is a hash then return nil else return the value if sort_value.is_a?(Hash) nil else sort_value end end |
.sort_values(a, b) ⇒ Object
Sorting routine used for ordering posts by custom fields. Handles Strings separately as we want a case-insenstive sorting
rubocop:disable Naming/MethodParameterName, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/bridgetown-paginate/utils.rb', line 82 def self.sort_values(a, b) if a.nil? && !b.nil? return -1 elsif !a.nil? && b.nil? return 1 end return a.downcase <=> b.downcase if a.is_a?(String) if a.respond_to?("to_datetime") && b.respond_to?("to_datetime") return a.to_datetime <=> b.to_datetime end # By default use the built in sorting for the data type a <=> b end |