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 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: