jekyll-paginate-v2 1.3.3 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -1
  3. data/README.md +107 -3
  4. data/examples/01-typicalblog/Gemfile +28 -0
  5. data/examples/01-typicalblog/README.md +91 -0
  6. data/examples/01-typicalblog/_config.yml +51 -0
  7. data/examples/01-typicalblog/_includes/header.html +31 -0
  8. data/examples/01-typicalblog/_layouts/home.html +52 -0
  9. data/examples/01-typicalblog/_posts/2016-11-20-geography-of-minneapolis.md +29 -0
  10. data/examples/01-typicalblog/_posts/2016-11-21-sailing-summer-olympics-1988.md +15 -0
  11. data/examples/01-typicalblog/_posts/2016-11-22-rotary-engine.md +27 -0
  12. data/examples/01-typicalblog/_posts/2016-11-23-luft-fahrzeug-gesellschaft.md +27 -0
  13. data/examples/01-typicalblog/_posts/2016-11-24-narcisse-snake-pits.md +18 -0
  14. data/examples/01-typicalblog/_posts/2016-11-25-tele7jours.md +43 -0
  15. data/examples/01-typicalblog/_posts/2016-11-26-columbia-river.md +41 -0
  16. data/examples/01-typicalblog/_posts/2016-11-27-welcome-to-jekyll-paginate-v2.md +33 -0
  17. data/examples/01-typicalblog/about.md +15 -0
  18. data/examples/01-typicalblog/index.html +8 -0
  19. data/examples/02-category/Gemfile +28 -0
  20. data/examples/02-category/README.md +119 -0
  21. data/examples/02-category/_config.yml +47 -0
  22. data/examples/02-category/_includes/header.html +31 -0
  23. data/examples/02-category/_layouts/home.html +52 -0
  24. data/examples/02-category/_posts/2016-10-27-welcome-to-jekyll-paginate-v2.md +32 -0
  25. data/examples/02-category/about.md +15 -0
  26. data/examples/02-category/cars/_posts/2016-10-18-Porsche-918-Spyder.md +13 -0
  27. data/examples/02-category/cars/_posts/2016-10-19-Porsche-964.md +12 -0
  28. data/examples/02-category/cars/_posts/2016-10-20-porsche-911-gt3.md +13 -0
  29. data/examples/02-category/cars/_posts/2016-10-21-porsche-911.md +13 -0
  30. data/examples/02-category/cars/_posts/2016-10-22-porsche-962.md +18 -0
  31. data/examples/02-category/cars/_posts/2016-10-23-Toyota-GT-One.md +20 -0
  32. data/examples/02-category/cars/_posts/2016-10-24-Mercedes-Benz-CLK-GTR.md +40 -0
  33. data/examples/02-category/cars/_posts/2016-10-25-rolls-royce-silver-ghost.md +31 -0
  34. data/examples/02-category/categories/byname.md +11 -0
  35. data/examples/02-category/categories/porsche.md +10 -0
  36. data/examples/02-category/index.md +13 -0
  37. data/examples/02-category/toyota/index.md +7 -0
  38. data/examples/03-tags/Gemfile +28 -0
  39. data/examples/03-tags/README.md +60 -0
  40. data/examples/03-tags/_config.yml +45 -0
  41. data/examples/03-tags/_includes/header.html +31 -0
  42. data/examples/03-tags/_layouts/home.html +51 -0
  43. data/examples/03-tags/_layouts/post.html +20 -0
  44. data/examples/03-tags/biography/_posts/2016-10-27-born-to-run.md +26 -0
  45. data/examples/03-tags/biography/_posts/2016-10-27-forty-autumns.md +26 -0
  46. data/examples/03-tags/biography/_posts/2016-10-27-life-in-questions-a.md +27 -0
  47. data/examples/03-tags/biography/_posts/2016-10-27-not-dead-yet.md +24 -0
  48. data/examples/03-tags/biography/_posts/2016-10-27-princess-diarist-the.md +26 -0
  49. data/examples/03-tags/biography/_posts/2016-10-27-when-breath-becomes-air.md +24 -0
  50. data/examples/03-tags/biography/biography-musicians.md +13 -0
  51. data/examples/03-tags/biography/biography.md +12 -0
  52. data/examples/03-tags/blog/_posts/2016-09-30-welcome-to-jekyll-paginate-v2.md +32 -0
  53. data/examples/03-tags/byisbn.md +13 -0
  54. data/examples/03-tags/fantasy/_posts/2016-10-27-harry-potter-deathly-hallows.md +24 -0
  55. data/examples/03-tags/fantasy/_posts/2016-10-27-harry-potter-philosophers-stone.md +24 -0
  56. data/examples/03-tags/fantasy/_posts/2016-10-27-mistborn-trilogy.md +24 -0
  57. data/examples/03-tags/fantasy/_posts/2016-10-27-ready-player-one.md +24 -0
  58. data/examples/03-tags/fantasy/_posts/2016-10-27-sword-of-destiny.md +24 -0
  59. data/examples/03-tags/fantasy/_posts/2016-10-27-terry-pratchet-diary-2017.md +24 -0
  60. data/examples/03-tags/index.md +18 -0
  61. data/examples/03-tags/romance/_posts/2016-10-27-breath-of-snow-and-ashes-a.md +25 -0
  62. data/examples/03-tags/romance/_posts/2016-10-27-dressmaker-the.md +24 -0
  63. data/examples/03-tags/romance/_posts/2016-10-27-fiery-cross-the.md +26 -0
  64. data/examples/03-tags/romance/_posts/2016-10-27-it-ends-with-us.md +28 -0
  65. data/examples/03-tags/romance/_posts/2016-10-27-outlander-novel.md +34 -0
  66. data/examples/03-tags/romance/_posts/2016-10-27-virgins-outlander-short-story.md +26 -0
  67. data/examples/03-tags/romance/romance-historical.md +14 -0
  68. data/examples/03-tags/tags/contemporary.md +10 -0
  69. data/examples/03-tags/tags/fantasy.md +12 -0
  70. data/examples/03-tags/tags/sci-fi.md +13 -0
  71. data/examples/README.md +21 -0
  72. data/examples/img/01-example-screenshot-main.png +0 -0
  73. data/examples/img/02-example-screenshot-main.png +0 -0
  74. data/examples/img/03-example-screenshot-main.png +0 -0
  75. data/lib/jekyll-paginate-v2.rb +1 -0
  76. data/lib/jekyll-paginate-v2/compatibilityUtils.rb +4 -3
  77. data/lib/jekyll-paginate-v2/paginationGenerator.rb +15 -8
  78. data/lib/jekyll-paginate-v2/paginationModel.rb +58 -37
  79. data/lib/jekyll-paginate-v2/paginationPage.rb +38 -0
  80. data/lib/jekyll-paginate-v2/paginator.rb +3 -3
  81. data/lib/jekyll-paginate-v2/utils.rb +47 -1
  82. data/lib/jekyll-paginate-v2/version.rb +2 -2
  83. data/spec/spec_helper.rb +1 -0
  84. metadata +74 -2
@@ -0,0 +1,38 @@
1
+ module Jekyll
2
+ module PaginateV2
3
+
4
+ #
5
+ # This page handles the creation of the fake pagination pages based on the original page configuration
6
+ # The code does the same things as the default Jekyll/page.rb code but just forces the code to look
7
+ # into the template instead of the (currently non-existing) pagination page.
8
+ #
9
+ class PaginationPage < Page
10
+ def initialize(site, base, dir, template_path)
11
+ @site = site
12
+ @base = base
13
+ @dir = dir
14
+ @template = template_path
15
+ @name = 'index.html'
16
+
17
+ templ_dir = File.dirname(template_path)
18
+ templ_file = File.basename(template_path)
19
+
20
+ # Path is only used by the convertible module and accessed below when calling read_yaml
21
+ # in our case we have the path point to the original template instead of our faux new pagination page
22
+ @path = if site.in_theme_dir(base) == base # we're in a theme
23
+ site.in_theme_dir(base, templ_dir, templ_file)
24
+ else
25
+ site.in_source_dir(base, templ_dir, templ_file)
26
+ end
27
+
28
+ self.process(@name)
29
+ self.read_yaml(templ_dir, templ_file)
30
+
31
+ data.default_proc = proc do |_, key|
32
+ site.frontmatter_defaults.find(File.join(templ_dir, templ_file), type, key)
33
+ end
34
+
35
+ end
36
+ end # class PaginationPage
37
+ end # module PaginateV2
38
+ end # module Jekyll
@@ -15,7 +15,7 @@ module Jekyll
15
15
  # all_posts - The Array of all the site's Posts.
16
16
  # num_pages - The Integer number of pages or nil if you'd like the number
17
17
  # of pages calculated.
18
- def initialize(config_per_page, config_permalink, posts, cur_page_nr, num_pages, template_url )
18
+ def initialize(config_per_page, config_permalink, posts, cur_page_nr, num_pages, template_url, template_path )
19
19
  @page = cur_page_nr
20
20
  @per_page = config_per_page.to_i
21
21
  @total_pages = num_pages
@@ -30,9 +30,9 @@ module Jekyll
30
30
  @total_posts = posts.size
31
31
  @posts = posts[init..offset]
32
32
  @previous_page = @page != 1 ? @page - 1 : nil
33
- @previous_page_path = @page != 1 ? Utils.paginate_path(template_url, @previous_page, config_permalink) : nil
33
+ @previous_page_path = @page != 1 ? Utils.paginate_path(template_url, template_path, @previous_page, config_permalink) : nil
34
34
  @next_page = @page != @total_pages ? @page + 1 : nil
35
- @next_page_path = @page != @total_pages ? Utils.paginate_path(template_url, @next_page, config_permalink) : nil
35
+ @next_page_path = @page != @total_pages ? Utils.paginate_path(template_url, template_path, @next_page, config_permalink) : nil
36
36
  end
37
37
 
38
38
  # Convert this Paginator's data to a Hash suitable for use by Liquid.
@@ -24,7 +24,7 @@ module Jekyll
24
24
  # config - the current configuration in use
25
25
  #
26
26
  # Returns the pagination path as a string
27
- def self.paginate_path(template_url, cur_page_nr, permalink_format)
27
+ def self.paginate_path(template_url, template_path, cur_page_nr, permalink_format)
28
28
  return nil if cur_page_nr.nil?
29
29
  return template_url if cur_page_nr <= 1
30
30
  if permalink_format.include?(":num")
@@ -32,6 +32,13 @@ module Jekyll
32
32
  else
33
33
  raise ArgumentError.new("Invalid pagination path: '#{permalink_format}'. It must include ':num'.")
34
34
  end
35
+
36
+ # If the template url is not just root "/" then pre-pend the template_url path to it
37
+ template_dir = File.dirname(template_path)
38
+ if( template_dir != "" && template_dir != "/" )
39
+ permalink_format = File.join(template_url, permalink_format)
40
+ end
41
+
35
42
  Utils.ensure_leading_slash(permalink_format)
36
43
  end #function paginate_path
37
44
 
@@ -61,6 +68,45 @@ module Jekyll
61
68
  path[0..0] == "/" ? path[1..-1] : path
62
69
  end
63
70
 
71
+ #
72
+ # Sorting routine used for ordering posts by custom fields.
73
+ # Handles Strings separately as we want a case-insenstive sorting
74
+ #
75
+ def self.sort_values(a, b)
76
+ if a.is_a?(String)
77
+ return a.downcase <=> b.downcase
78
+ end
79
+
80
+ # By default use the built in sorting for the data type
81
+ return a <=> b
82
+ end
83
+
84
+ # Retrieves the given sort field from the given post
85
+ # the sort_field variable can be a hierarchical value on the form "parent_field:child_field" repeated as many times as needed
86
+ # only the leaf child_field will be retrieved
87
+ def self.sort_get_post_data(post, sort_field)
88
+
89
+ # Begin by splitting up the sort_field by (;,:.)
90
+ sort_split = sort_field.split(":")
91
+ sort_value = post.data
92
+
93
+ for r_key in sort_split
94
+ key = r_key.downcase.strip # Remove any erronious whitespace and convert to lower case
95
+ if !sort_value.has_key?(key)
96
+ return nil
97
+ end
98
+ # Work my way through the hash
99
+ sort_value = sort_value[key]
100
+ end
101
+
102
+ # If the sort value is a hash then return nil else return the value
103
+ if( sort_value.is_a?(Hash) )
104
+ return nil
105
+ else
106
+ return sort_value
107
+ end
108
+ end
109
+
64
110
  end
65
111
 
66
112
  end # module PaginateV2
@@ -1,8 +1,8 @@
1
1
  module Jekyll
2
2
  module PaginateV2
3
- VERSION = "1.3.3"
3
+ VERSION = "1.4.0"
4
4
  # When modifying remember to issue a new tag command in git before committing, then push the new tag
5
- # git tag -a v1.3.3 -m "Gem v1.3.3"
5
+ # git tag -a v1.4.0 -m "Gem v1.4.0"
6
6
  # git push origin --tags
7
7
  end
8
8
  end
@@ -7,6 +7,7 @@ require_relative '../lib/jekyll-paginate-v2/defaults'
7
7
  require_relative '../lib/jekyll-paginate-v2/utils'
8
8
  require_relative '../lib/jekyll-paginate-v2/compatibilityUtils'
9
9
  require_relative '../lib/jekyll-paginate-v2/paginator'
10
+ require_relative '../lib/jekyll-paginate-v2/paginationPage'
10
11
  require_relative '../lib/jekyll-paginate-v2/paginationModel'
11
12
  require_relative '../lib/jekyll-paginate-v2/paginationGenerator'
12
13
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-paginate-v2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.3
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sverrir Sigmundarson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-26 00:00:00.000000000 Z
11
+ date: 2016-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -67,12 +67,84 @@ files:
67
67
  - LICENSE
68
68
  - README.md
69
69
  - Rakefile
70
+ - examples/01-typicalblog/Gemfile
71
+ - examples/01-typicalblog/README.md
72
+ - examples/01-typicalblog/_config.yml
73
+ - examples/01-typicalblog/_includes/header.html
74
+ - examples/01-typicalblog/_layouts/home.html
75
+ - examples/01-typicalblog/_posts/2016-11-20-geography-of-minneapolis.md
76
+ - examples/01-typicalblog/_posts/2016-11-21-sailing-summer-olympics-1988.md
77
+ - examples/01-typicalblog/_posts/2016-11-22-rotary-engine.md
78
+ - examples/01-typicalblog/_posts/2016-11-23-luft-fahrzeug-gesellschaft.md
79
+ - examples/01-typicalblog/_posts/2016-11-24-narcisse-snake-pits.md
80
+ - examples/01-typicalblog/_posts/2016-11-25-tele7jours.md
81
+ - examples/01-typicalblog/_posts/2016-11-26-columbia-river.md
82
+ - examples/01-typicalblog/_posts/2016-11-27-welcome-to-jekyll-paginate-v2.md
83
+ - examples/01-typicalblog/about.md
84
+ - examples/01-typicalblog/index.html
85
+ - examples/02-category/Gemfile
86
+ - examples/02-category/README.md
87
+ - examples/02-category/_config.yml
88
+ - examples/02-category/_includes/header.html
89
+ - examples/02-category/_layouts/home.html
90
+ - examples/02-category/_posts/2016-10-27-welcome-to-jekyll-paginate-v2.md
91
+ - examples/02-category/about.md
92
+ - examples/02-category/cars/_posts/2016-10-18-Porsche-918-Spyder.md
93
+ - examples/02-category/cars/_posts/2016-10-19-Porsche-964.md
94
+ - examples/02-category/cars/_posts/2016-10-20-porsche-911-gt3.md
95
+ - examples/02-category/cars/_posts/2016-10-21-porsche-911.md
96
+ - examples/02-category/cars/_posts/2016-10-22-porsche-962.md
97
+ - examples/02-category/cars/_posts/2016-10-23-Toyota-GT-One.md
98
+ - examples/02-category/cars/_posts/2016-10-24-Mercedes-Benz-CLK-GTR.md
99
+ - examples/02-category/cars/_posts/2016-10-25-rolls-royce-silver-ghost.md
100
+ - examples/02-category/categories/byname.md
101
+ - examples/02-category/categories/porsche.md
102
+ - examples/02-category/index.md
103
+ - examples/02-category/toyota/index.md
104
+ - examples/03-tags/Gemfile
105
+ - examples/03-tags/README.md
106
+ - examples/03-tags/_config.yml
107
+ - examples/03-tags/_includes/header.html
108
+ - examples/03-tags/_layouts/home.html
109
+ - examples/03-tags/_layouts/post.html
110
+ - examples/03-tags/biography/_posts/2016-10-27-born-to-run.md
111
+ - examples/03-tags/biography/_posts/2016-10-27-forty-autumns.md
112
+ - examples/03-tags/biography/_posts/2016-10-27-life-in-questions-a.md
113
+ - examples/03-tags/biography/_posts/2016-10-27-not-dead-yet.md
114
+ - examples/03-tags/biography/_posts/2016-10-27-princess-diarist-the.md
115
+ - examples/03-tags/biography/_posts/2016-10-27-when-breath-becomes-air.md
116
+ - examples/03-tags/biography/biography-musicians.md
117
+ - examples/03-tags/biography/biography.md
118
+ - examples/03-tags/blog/_posts/2016-09-30-welcome-to-jekyll-paginate-v2.md
119
+ - examples/03-tags/byisbn.md
120
+ - examples/03-tags/fantasy/_posts/2016-10-27-harry-potter-deathly-hallows.md
121
+ - examples/03-tags/fantasy/_posts/2016-10-27-harry-potter-philosophers-stone.md
122
+ - examples/03-tags/fantasy/_posts/2016-10-27-mistborn-trilogy.md
123
+ - examples/03-tags/fantasy/_posts/2016-10-27-ready-player-one.md
124
+ - examples/03-tags/fantasy/_posts/2016-10-27-sword-of-destiny.md
125
+ - examples/03-tags/fantasy/_posts/2016-10-27-terry-pratchet-diary-2017.md
126
+ - examples/03-tags/index.md
127
+ - examples/03-tags/romance/_posts/2016-10-27-breath-of-snow-and-ashes-a.md
128
+ - examples/03-tags/romance/_posts/2016-10-27-dressmaker-the.md
129
+ - examples/03-tags/romance/_posts/2016-10-27-fiery-cross-the.md
130
+ - examples/03-tags/romance/_posts/2016-10-27-it-ends-with-us.md
131
+ - examples/03-tags/romance/_posts/2016-10-27-outlander-novel.md
132
+ - examples/03-tags/romance/_posts/2016-10-27-virgins-outlander-short-story.md
133
+ - examples/03-tags/romance/romance-historical.md
134
+ - examples/03-tags/tags/contemporary.md
135
+ - examples/03-tags/tags/fantasy.md
136
+ - examples/03-tags/tags/sci-fi.md
137
+ - examples/README.md
138
+ - examples/img/01-example-screenshot-main.png
139
+ - examples/img/02-example-screenshot-main.png
140
+ - examples/img/03-example-screenshot-main.png
70
141
  - jekyll-paginate-v2.gemspec
71
142
  - lib/jekyll-paginate-v2.rb
72
143
  - lib/jekyll-paginate-v2/compatibilityUtils.rb
73
144
  - lib/jekyll-paginate-v2/defaults.rb
74
145
  - lib/jekyll-paginate-v2/paginationGenerator.rb
75
146
  - lib/jekyll-paginate-v2/paginationModel.rb
147
+ - lib/jekyll-paginate-v2/paginationPage.rb
76
148
  - lib/jekyll-paginate-v2/paginator.rb
77
149
  - lib/jekyll-paginate-v2/utils.rb
78
150
  - lib/jekyll-paginate-v2/version.rb