middleman-paginate 0.1.3 → 0.1.4.pre
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 +4 -4
- data/README.md +31 -1
- data/lib/middleman/paginate/extension.rb +28 -18
- data/lib/middleman/paginate/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 82c55456c0157b6defcafd44b750cc242fa41ef8
|
|
4
|
+
data.tar.gz: 568e49311e123d877ba3af7ea0e58c1e456a05b0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: daf5828b4d983dba7d7490652cae522798282e9ef4db231fbae6533d9c76d9046a243209735044235c3cb768c3833b9e49dc4c2b5d1ef9e0633bc70103d0d23d
|
|
7
|
+
data.tar.gz: 1874e243df4623f1e5395d442ccf12ed169192133fd39caddddd953cde652652ba5c73555535d96fb6da3460b1ea004eeb3c49016be9118b5a89877f35b7c079
|
data/README.md
CHANGED
|
@@ -22,7 +22,37 @@ Or install it yourself as:
|
|
|
22
22
|
|
|
23
23
|
## Usage
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Consider that middleman-paginate creates a page for each set of data sliced from your collection. This page is created by a template. In your config.rb
|
|
26
|
+
|
|
27
|
+
```ruby
|
|
28
|
+
paginate data.your_collection, "/episodes", "/templates/episodes.html"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
in your pagination template you'll find a collection named `items` with the objects for the specific page:
|
|
32
|
+
|
|
33
|
+
```ruby
|
|
34
|
+
- items.each do |episode|
|
|
35
|
+
p= episode.title
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
You also have an object `pager` that offers some helpers to build the pagination links:
|
|
39
|
+
|
|
40
|
+
```ruby
|
|
41
|
+
- if pager.next_page
|
|
42
|
+
= link_to "Next page", pager.page_path(pager.next_page)
|
|
43
|
+
- if pager.previous_page
|
|
44
|
+
= link_to "Previous page", pager.page_path(pager.previous_page)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The final URLs will be:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
http://127.0.0.1:4567/episodes.html
|
|
51
|
+
http://127.0.0.1:4567/episodes/page/2.html
|
|
52
|
+
http://127.0.0.1:4567/episodes/page/3.html
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
and so on.
|
|
26
56
|
|
|
27
57
|
## Development
|
|
28
58
|
|
|
@@ -3,9 +3,18 @@ require 'middleman_dato/middleman_extension'
|
|
|
3
3
|
|
|
4
4
|
module Middleman
|
|
5
5
|
module Paginate
|
|
6
|
-
class Extension < ::Middleman::
|
|
6
|
+
class Extension < ::Middleman::ConfigExtension
|
|
7
|
+
self.resource_list_manipulator_priority = 0
|
|
7
8
|
expose_to_config paginate: :paginate
|
|
8
9
|
|
|
10
|
+
CollectionProxyDescriptor = Struct.new(:descriptors) do
|
|
11
|
+
def execute_descriptor(app, resources)
|
|
12
|
+
descriptors.reduce(resources) do |resources, descriptor|
|
|
13
|
+
descriptor.execute_descriptor(app, resources)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
9
18
|
class Pager
|
|
10
19
|
attr_reader :current_page, :total_pages, :per_page
|
|
11
20
|
|
|
@@ -31,24 +40,25 @@ module Middleman
|
|
|
31
40
|
end
|
|
32
41
|
|
|
33
42
|
def paginate(collection, base_path, template, per_page: 20, suffix: "/page/:num", locals: {}, data: {})
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
end
|
|
43
|
+
pages = collection.each_slice(per_page).to_a
|
|
44
|
+
descriptors = []
|
|
45
|
+
|
|
46
|
+
pages.each_with_index do |page_collection, i|
|
|
47
|
+
pager = Pager.new(base_path, suffix, i + 1, pages.size, per_page)
|
|
48
|
+
|
|
49
|
+
opts = {
|
|
50
|
+
locals: locals.merge(items: page_collection, pager: pager),
|
|
51
|
+
data: data
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
descriptors << Middleman::Sitemap::Extensions::ProxyDescriptor.new(
|
|
55
|
+
Middleman::Util.normalize_path(pager.page_path),
|
|
56
|
+
Middleman::Util.normalize_path(template),
|
|
57
|
+
opts.dup
|
|
58
|
+
)
|
|
51
59
|
end
|
|
60
|
+
|
|
61
|
+
CollectionProxyDescriptor.new(descriptors)
|
|
52
62
|
end
|
|
53
63
|
end
|
|
54
64
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: middleman-paginate
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4.pre
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stefano Verna
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-01-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -103,9 +103,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
103
103
|
version: '0'
|
|
104
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
105
|
requirements:
|
|
106
|
-
- - "
|
|
106
|
+
- - ">"
|
|
107
107
|
- !ruby/object:Gem::Version
|
|
108
|
-
version:
|
|
108
|
+
version: 1.3.1
|
|
109
109
|
requirements: []
|
|
110
110
|
rubyforge_project:
|
|
111
111
|
rubygems_version: 2.5.1
|
|
@@ -113,3 +113,4 @@ signing_key:
|
|
|
113
113
|
specification_version: 4
|
|
114
114
|
summary: A simple helper to generate custom paginated content with Middleman
|
|
115
115
|
test_files: []
|
|
116
|
+
has_rdoc:
|