middleman-pagination 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fe0923ecf34b591da48f68db56accf21a08c464c
4
- data.tar.gz: 069471197145f7573a3b6f697caa7b04c420b0db
3
+ metadata.gz: 2ec4df12de80b850fef444d0be189c97c8fdd2d7
4
+ data.tar.gz: ebdf7415e47c6bc08cf8ac98279c9ffaceec21f6
5
5
  SHA512:
6
- metadata.gz: 7ff7468e609f467d947bf3262edeaad95bff8a22ad167ad9ad193d74b4b18071f3c06b4bbf42be80eb12a74700a4e1fb0e1f401ee2c77acf02ace7a44c854bc7
7
- data.tar.gz: 812a870bf801ba01fe2da1efbd2c99f236fa4a1c1abb113eb83593a117d16c7f7dbb73e5f32cb2436456a31df753e796438bcb1d1639202a77bedbe953c427e1
6
+ metadata.gz: f26c742c07023224891ca0c2ca321d3f30ec835a83fa7ecb5d384d4e70fb40d821a2b10eb1ed6aafbdb7aaad3e4358b7c9ce2f8ac176b9daad70fdf0247a79c3
7
+ data.tar.gz: 627b85c502bd9acf4c906b22ba2b3e26bac09a4c1bc2c27f2fc0cc71596b56a95e8a4bd5633458adbd7a8f9ab981d66cc519b8af8c6e5983a02346309dc519d7
data/README.md CHANGED
@@ -4,13 +4,23 @@
4
4
  [![Code Climate](https://codeclimate.com/github/Aupajo/middleman-pagination.png)](https://codeclimate.com/github/Aupajo/middleman-pagination)
5
5
  [![Dependency Status](https://gemnasium.com/Aupajo/middleman-pagination.png)](https://gemnasium.com/Aupajo/middleman-pagination)
6
6
 
7
- **Warning: this extension is brand-new, and the API liable to change until the prerelease identifier is dropped.**
8
-
9
7
  General-purpose pagination support for Middleman pages.
10
8
 
11
9
  ## Installation
12
10
 
13
- Coming soon.
11
+ Add this line to your Middleman site's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'middleman-pagination'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install middleman-pagination
14
24
 
15
25
  ## Usage
16
26
 
@@ -23,7 +33,7 @@ Let's say you have a set of recipes that you want to create pagination for:
23
33
  bacon.html
24
34
  cake.html
25
35
 
26
- You can create named pageable resources based on a criteria. In this case, we're going to use any page that lives inside the `recipes` as the criteria for paging through recipes. Inside your `config.rb`:
36
+ Inside your `config.rb`:
27
37
 
28
38
  ```ruby
29
39
  activate :pagination do
@@ -64,8 +74,7 @@ Showing <%= pagination.per_page %> per page
64
74
 
65
75
  **Note:** the `for` and `per_page` properties must be indented for the `pagination` frontmatter.
66
76
 
67
-
68
- You can define as many different types of pageable resources as you like:
77
+ You can define as many different types of pageable resources as you like, with whatever criteria you like:
69
78
 
70
79
  ```ruby
71
80
  activate :pagination do
@@ -86,6 +95,7 @@ end
86
95
  * Customisable path
87
96
  * Custom sorting (e.g. by date)
88
97
  * Convenience helper methods (e.g. make `pagination.` optional)
98
+ * Pagination link generator (e.g. `Pages: 1 2 [3] ... 7 8 9`)
89
99
 
90
100
  ## Contributing
91
101
 
@@ -44,8 +44,14 @@ module Middleman
44
44
 
45
45
  def build_new_index(first_index, pageable_context, page_num)
46
46
  sitemap = context.sitemap
47
- pattern = %r{(^|/)#{Regexp.escape(context.index_file)}}
48
- path = first_index.path.sub(pattern, "pages/#{page_num}.html")
47
+ pattern = %r{(^|/)#{Regexp.escape(context.index_file)}$}
48
+
49
+ path = if first_index.path.match(pattern)
50
+ first_index.path.sub(pattern, "pages/#{page_num}.html")
51
+ else
52
+ first_index.path.sub(%r{(^|/)([^/]*)\.([^/]*)$}, "\\1\\2/pages/#{page_num}.\\3")
53
+ end
54
+
49
55
  source_file = first_index.source_file
50
56
 
51
57
  new_index = ::Middleman::Sitemap::Resource.new(sitemap, path, source_file)
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Pagination
3
- VERSION = "1.0.0"
3
+ VERSION = "1.0.1"
4
4
  end
5
5
  end
@@ -87,4 +87,26 @@ describe "Pagination with directory indexes", :feature do
87
87
  find_on_page 'Prev page: /pages/3/'
88
88
  find_on_page 'Next page: none'
89
89
  end
90
+ end
91
+
92
+ describe "Pagination with indexes not named index", :feature do
93
+ it "produces pages for a set of resources" do
94
+ run_site 'recipes' do
95
+ activate :pagination do
96
+ pageable :recipes do |resource|
97
+ resource.path.start_with?('recipes')
98
+ end
99
+ end
100
+ end
101
+
102
+ visit '/all-recipes.html'
103
+ find_on_page 'First page: /all-recipes.html'
104
+ find_on_page 'Prev page: none'
105
+ find_on_page 'Last page: /all-recipes/pages/2.html'
106
+ find_on_page 'Next page: /all-recipes/pages/2.html'
107
+
108
+ visit '/all-recipes/pages/2.html'
109
+ find_on_page 'Prev page: /all-recipes.html'
110
+ find_on_page 'Next page: none'
111
+ end
90
112
  end
@@ -0,0 +1,21 @@
1
+ ---
2
+ pagination:
3
+ for: recipes
4
+ per_page: 4
5
+ ---
6
+
7
+ <% pagination.each do |recipe| %>
8
+ - <%= recipe.data.title %>
9
+ <% end %>
10
+
11
+ Page <%= pagination.page_num %> of <%= pagination.total_page_num %>
12
+
13
+ Showing <%= pagination.per_page %> per page
14
+
15
+ First page: <%= pagination.first_page.url %>
16
+
17
+ Next page: <%= pagination.next_page.try(:url) || 'none' %>
18
+
19
+ Prev page: <%= pagination.prev_page.try(:url) || 'none' %>
20
+
21
+ Last page: <%= pagination.last_page.url %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-pagination
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Nicholls
@@ -119,6 +119,7 @@ files:
119
119
  - lib/middleman_extension.rb
120
120
  - middleman-pagination.gemspec
121
121
  - spec/features/pagination_feature_spec.rb
122
+ - spec/fixtures/recipes/source/all-recipes.html.erb
122
123
  - spec/fixtures/recipes/source/index.html.erb
123
124
  - spec/fixtures/recipes/source/layouts/layout.erb
124
125
  - spec/fixtures/recipes/source/recipes/bacon.html.erb
@@ -159,6 +160,7 @@ specification_version: 4
159
160
  summary: Pagination for Middleman pages.
160
161
  test_files:
161
162
  - spec/features/pagination_feature_spec.rb
163
+ - spec/fixtures/recipes/source/all-recipes.html.erb
162
164
  - spec/fixtures/recipes/source/index.html.erb
163
165
  - spec/fixtures/recipes/source/layouts/layout.erb
164
166
  - spec/fixtures/recipes/source/recipes/bacon.html.erb