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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a84f25e6ff6b38f219a0fd27053bd75aa094bca2
4
- data.tar.gz: fe0775c19cbd7bae7df0f3ded11e0807d30c5544
3
+ metadata.gz: 82c55456c0157b6defcafd44b750cc242fa41ef8
4
+ data.tar.gz: 568e49311e123d877ba3af7ea0e58c1e456a05b0
5
5
  SHA512:
6
- metadata.gz: f32d457d783865981779024eb32fbde0c46a36e47dfa1d72caef9baaa8f058c3a3f5bec469b6277e0080aba09b80dad837e1e570c4042035ec713a12057fbd15
7
- data.tar.gz: a45eb9b23387c961c144c8a6fd97e55131f395045d5c4d5eaae112e6c2f995540e0985ea9c75314287082ab62c8c45241ceaead2cae4da624cc9170854171425
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
- TODO: Write usage instructions here
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::Extension
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
- collection.tap do |collection|
35
- pages = collection.each_slice(per_page).to_a
36
-
37
- pages.each_with_index do |page_collection, i|
38
- pager = Pager.new(base_path, suffix, i + 1, pages.size, per_page)
39
-
40
- opts = {
41
- locals: locals.merge(items: page_collection, pager: pager),
42
- data: data
43
- }
44
-
45
- proxy(
46
- Middleman::Util.normalize_path(pager.page_path),
47
- Middleman::Util.normalize_path(template),
48
- opts
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
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Paginate
3
- VERSION = "0.1.3"
3
+ VERSION = "0.1.4.pre"
4
4
  end
5
5
  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.3
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: 2016-11-08 00:00:00.000000000 Z
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: '0'
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: