middleman-paginate 0.1.3 → 0.1.4.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|