jekyll-paginate-content 1.0.4 → 1.1.0
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 +75 -42
- data/example/.gitignore +3 -0
- data/example/404.html +24 -0
- data/example/Gemfile +28 -0
- data/example/_config.yml +54 -0
- data/example/_demos/jpc-3page-auto.md +19 -0
- data/example/_includes/header.html +34 -0
- data/example/_includes/slides.js +23 -0
- data/example/_layouts/default.html +63 -0
- data/example/_layouts/home.html +32 -0
- data/example/_layouts/slides.html +48 -0
- data/example/_posts/2018-01-27-manual.md +31 -0
- data/example/_posts/2018-01-27-welcome-to-jekyll.markdown +25 -0
- data/example/about.md +18 -0
- data/example/assets/css/fontello.css +64 -0
- data/example/assets/css/slides.css +127 -0
- data/example/assets/css/syntax.scss +152 -0
- data/example/assets/font/fontello.eot +0 -0
- data/example/assets/font/fontello.svg +24 -0
- data/example/assets/font/fontello.ttf +0 -0
- data/example/assets/font/fontello.woff +0 -0
- data/example/assets/font/fontello.woff2 +0 -0
- data/example/assets/images/slidebg.png +0 -0
- data/example/index.md +6 -0
- data/example/slides.md +305 -0
- data/lib/jekyll-paginate-content.rb +2 -0
- data/lib/jekyll-paginate-content/generator-cache.rb +28 -0
- data/lib/jekyll-paginate-content/generator.rb +38 -11
- data/lib/jekyll-paginate-content/pager.rb +2 -1
- data/lib/jekyll-paginate-content/paginator.rb +41 -19
- data/lib/jekyll-paginate-content/version.rb +1 -1
- metadata +27 -2
Binary file
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" standalone="no"?>
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4
|
+
<metadata>Copyright (C) 2018 by original authors @ fontello.com</metadata>
|
5
|
+
<defs>
|
6
|
+
<font id="fontello" horiz-adv-x="1000" >
|
7
|
+
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
8
|
+
<missing-glyph horiz-adv-x="1000" />
|
9
|
+
<glyph glyph-name="to-end-alt" unicode="" d="M25-71q-10-11-18-8t-7 18v822q0 14 7 18t18-8l396-396q5-5 8-10v396q0 14 7 18t18-8l396-396q5-5 7-10v378q0 14 11 25t25 11h71q15 0 25-11t11-25v-786q0-14-11-25t-25-11h-71q-15 0-25 11t-11 25v379q-2-6-7-11l-396-396q-11-11-18-8t-7 18v397q-3-6-8-11z" horiz-adv-x="1000" />
|
10
|
+
|
11
|
+
<glyph glyph-name="to-start-alt" unicode="" d="M975 771q11 11 18 8t7-18v-822q0-14-7-18t-18 8l-396 396q-5 5-8 11v-397q0-14-7-18t-18 8l-396 396q-5 5-7 11v-379q0-14-11-25t-25-11h-71q-15 0-25 11t-11 25v786q0 14 11 25t25 11h71q15 0 25-11t11-25v-378q2 5 7 10l396 396q11 11 18 8t7-18v-396q3 5 8 10z" horiz-adv-x="1000" />
|
12
|
+
|
13
|
+
<glyph glyph-name="fast-fw" unicode="" d="M25-71q-10-11-18-8t-7 18v822q0 14 7 18t18-8l396-396q5-5 8-10v396q0 14 7 18t18-8l396-396q11-10 11-25t-11-25l-396-396q-11-11-18-8t-7 18v397q-3-6-8-11z" horiz-adv-x="928.6" />
|
14
|
+
|
15
|
+
<glyph glyph-name="fast-bw" unicode="" d="M904 771q10 11 17 8t8-18v-822q0-14-8-18t-17 8l-397 396q-5 5-7 11v-397q0-14-7-18t-18 8l-396 396q-11 11-11 25t11 25l396 396q11 11 18 8t7-18v-396q2 5 7 10z" horiz-adv-x="928.6" />
|
16
|
+
|
17
|
+
<glyph glyph-name="twitter" unicode="" d="M904 622q-37-54-90-93 0-8 0-23 0-73-21-145t-64-139-103-117-144-82-181-30q-151 0-276 81 19-2 43-2 126 0 224 77-59 1-105 36t-64 89q19-3 34-3 24 0 48 6-63 13-104 62t-41 115v2q38-21 82-23-37 25-59 64t-22 86q0 49 25 91 68-83 164-133t208-55q-5 21-5 41 0 75 53 127t127 53q79 0 132-57 61 12 115 44-21-64-80-100 52 6 104 28z" horiz-adv-x="928.6" />
|
18
|
+
|
19
|
+
<glyph glyph-name="github-circled" unicode="" d="M429 779q116 0 215-58t156-156 57-215q0-140-82-252t-211-155q-15-3-22 4t-7 17q0 1 0 43t0 75q0 54-29 79 32 3 57 10t53 22 45 37 30 58 11 84q0 67-44 115 21 51-4 114-16 5-46-6t-51-25l-21-13q-52 15-107 15t-108-15q-8 6-23 15t-47 22-47 7q-25-63-5-114-44-48-44-115 0-47 12-83t29-59 45-37 52-22 57-10q-21-20-27-58-12-5-25-8t-32-3-36 12-31 35q-11 18-27 29t-28 14l-11 1q-12 0-16-2t-3-7 5-8 7-6l4-3q12-6 24-21t18-29l6-13q7-21 24-34t37-17 39-3 31 1l13 3q0-22 0-50t1-30q0-10-8-17t-22-4q-129 43-211 155t-82 252q0 117 58 215t155 156 216 58z m-267-616q2 4-3 7-6 1-8-1-1-4 4-7 5-3 7 1z m18-19q4 3-1 9-6 5-9 2-4-3 1-9 5-6 9-2z m16-25q6 4 0 11-4 7-9 3-5-3 0-10t9-4z m24-23q4 4-2 10-7 7-11 2-5-5 2-11 6-6 11-1z m32-14q1 6-8 9-8 2-10-4t7-9q8-3 11 4z m35-3q0 7-10 6-9 0-9-6 0-7 10-6 9 0 9 6z m32 5q-1 7-10 5-9-1-8-8t10-4 8 7z" horiz-adv-x="857.1" />
|
20
|
+
|
21
|
+
<glyph glyph-name="smile" unicode="" d="M633 250q-21-67-77-109t-127-41-128 41-77 109q-4 14 3 27t21 18q14 4 27-2t17-22q14-44 52-72t85-28 84 28 52 72q4 15 18 22t27 2 21-18 2-27z m-276 243q0-30-21-51t-50-21-51 21-21 51 21 50 51 21 50-21 21-50z m286 0q0-30-21-51t-51-21-50 21-21 51 21 50 50 21 51-21 21-50z m143-143q0 73-29 139t-76 114-114 76-138 28-139-28-114-76-76-114-29-139 29-139 76-113 114-77 139-28 138 28 114 77 76 113 29 139z m71 0q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" />
|
22
|
+
</font>
|
23
|
+
</defs>
|
24
|
+
</svg>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/example/index.md
ADDED
data/example/slides.md
ADDED
@@ -0,0 +1,305 @@
|
|
1
|
+
---
|
2
|
+
layout: page
|
3
|
+
title: Simple Slides in Jekyll
|
4
|
+
description: "A demonstration of _Jekyll::Paginate::Content_ v1.1.0"
|
5
|
+
author: "Alexander J. N. Ibrado"
|
6
|
+
permalink: "/slides/"
|
7
|
+
paginate_content:
|
8
|
+
separator: h2
|
9
|
+
trail:
|
10
|
+
before: 2
|
11
|
+
after: 3
|
12
|
+
title: ":title - :num/:max :section"
|
13
|
+
properties:
|
14
|
+
all:
|
15
|
+
layout: slides
|
16
|
+
single:
|
17
|
+
layout: $
|
18
|
+
---
|
19
|
+
|
20
|
+
# {{ page.title }}
|
21
|
+
|
22
|
+
**{{ page.description }}** \\
|
23
|
+
by {{ page.author }}{% if paginator.paginated %}
|
24
|
+
{:.subtitle}
|
25
|
+
|
26
|
+
*Navigation:* ⬅ Previous; ⮕ Next; ⬆ Single-page version
|
27
|
+
{:.navigation}
|
28
|
+
{% endif %}
|
29
|
+
|
30
|
+
## What is Paginate::Content (JPC)?
|
31
|
+
|
32
|
+
A plugin for [Jekyll](https://jekyllrb.com) that:
|
33
|
+
|
34
|
+
- Automatically splits pages, posts, and other content at a separator like `<!--page-->`, or HTML headers (`h1`..`h6`)
|
35
|
+
- Self-adjusts internal links, and provides a multipage-aware Table Of Contents
|
36
|
+
- Keeps a single-page version and generates `<link rel>` tags for SEO
|
37
|
+
- Has several methods for navigation
|
38
|
+
|
39
|
+
JPC is available on [GitHub] and [RubyGems].
|
40
|
+
|
41
|
+
## About this demo
|
42
|
+
|
43
|
+
This demo shows that it is possible to:
|
44
|
+
- Have different layouts for the same content;
|
45
|
+
- Have different content for slides vs the single-page view;
|
46
|
+
- And still have a *single* source document:{% raw %}
|
47
|
+
* `{% if paginator.paginated %}` .. `{% endif %}` \\
|
48
|
+
... for content that only shows up in the slide view
|
49
|
+
* `{% unless paginator.paginated %}` .. `{% endunless %}` \\
|
50
|
+
... for content that only shows up in the single-page view{% endraw %}
|
51
|
+
|
52
|
+
{% if paginator.paginated %}
|
53
|
+
*Press ⬆ at any time for the [single-page version].*
|
54
|
+
{% endif %}
|
55
|
+
|
56
|
+
## Creating slides
|
57
|
+
|
58
|
+
1. Make a slide template and some styles
|
59
|
+
2. Set up `paginate_content` properties
|
60
|
+
3. Add navigation
|
61
|
+
|
62
|
+
## 1. Make a slide template...
|
63
|
+
|
64
|
+
```html{% raw %}
|
65
|
+
<!DOCTYPE html>
|
66
|
+
<html>
|
67
|
+
<head>
|
68
|
+
<title>{{ page.title }}</title>
|
69
|
+
<link href="/assets/css/slides.css" rel="stylesheet">
|
70
|
+
</head>
|
71
|
+
<body>
|
72
|
+
<div class="slide-box">
|
73
|
+
<div class="content">{{ content }}</div>
|
74
|
+
</div>
|
75
|
+
</body>
|
76
|
+
</html>{% endraw %}
|
77
|
+
```
|
78
|
+
|
79
|
+
This goes into the `_templates` folder.
|
80
|
+
|
81
|
+
## ...and some styles
|
82
|
+
|
83
|
+
{% if paginator.paginated %}
|
84
|
+
```css
|
85
|
+
h1 {
|
86
|
+
color: #ffcc00;
|
87
|
+
text-shadow: 2px 2px #777;
|
88
|
+
text-align: center;
|
89
|
+
font-size: 2.8em;
|
90
|
+
}
|
91
|
+
|
92
|
+
h2 { /* ... */ }
|
93
|
+
|
94
|
+
li { /* ... */ }
|
95
|
+
|
96
|
+
/* etc... */
|
97
|
+
```
|
98
|
+
|
99
|
+
{% else %}
|
100
|
+
|
101
|
+
```css
|
102
|
+
.slide-box {
|
103
|
+
position: absolute;
|
104
|
+
margin: auto;
|
105
|
+
top: 0;
|
106
|
+
right: 0;
|
107
|
+
bottom: 0;
|
108
|
+
left: 0;
|
109
|
+
background: #122b3b url(slidebg.png) no-repeat;
|
110
|
+
background-position: right bottom;
|
111
|
+
padding: 50px;
|
112
|
+
width: calc(100% - 100px); /* Twice padding */
|
113
|
+
height: auto;
|
114
|
+
|
115
|
+
/*border: 3px solid #000;
|
116
|
+
border-radius: 5px;
|
117
|
+
box-shadow: 3px 3px #ccc;
|
118
|
+
max-width: 80%;
|
119
|
+
min-height: 80%; */
|
120
|
+
}
|
121
|
+
|
122
|
+
h1 {
|
123
|
+
color: #ffcc00;
|
124
|
+
font-family: serif;
|
125
|
+
text-shadow: 2px 2px #777;
|
126
|
+
text-align: center;
|
127
|
+
font-size: 2.8em;
|
128
|
+
margin-top: 25vh;
|
129
|
+
margin-left: auto;
|
130
|
+
}
|
131
|
+
|
132
|
+
h2 {
|
133
|
+
color: #ffcc00;
|
134
|
+
font-family: serif;
|
135
|
+
text-shadow: 2px 2px #777;
|
136
|
+
font-size: 5vw;
|
137
|
+
margin-top: 0;
|
138
|
+
}
|
139
|
+
|
140
|
+
li {
|
141
|
+
margin-left: 20px;
|
142
|
+
padding-bottom: 5px;
|
143
|
+
font-size: 1.2em;
|
144
|
+
}
|
145
|
+
|
146
|
+
/* etc... */
|
147
|
+
```
|
148
|
+
{% endif %}
|
149
|
+
|
150
|
+
This goes with other CSS files, e.g. in `assets/css`.
|
151
|
+
|
152
|
+
## 2. Set up properties
|
153
|
+
|
154
|
+
```yaml
|
155
|
+
---
|
156
|
+
layout: page
|
157
|
+
title: My presentation
|
158
|
+
paginate_content:
|
159
|
+
separator: h2
|
160
|
+
title: ":title - :num/:max :section"
|
161
|
+
trail:
|
162
|
+
before: 2
|
163
|
+
after: 3
|
164
|
+
properties:
|
165
|
+
all:
|
166
|
+
layout: slides
|
167
|
+
single:
|
168
|
+
layout: $
|
169
|
+
---
|
170
|
+
```
|
171
|
+
{:style="font-size: 0.8em"}
|
172
|
+
|
173
|
+
Most of these options can be set in `_config.yml` instead of the front matter.
|
174
|
+
|
175
|
+
{% unless paginator.paginated %}
|
176
|
+
Notice that `properties:all:layout` was set to `slides`, but `single:layout` was set to `$`, [meaning](https://ibrado.org/jpc/readme/5/#special-values) the original layout (`page`).
|
177
|
+
{% endunless %}
|
178
|
+
|
179
|
+
## 3. Add navigation
|
180
|
+
|
181
|
+
This can be via
|
182
|
+
- A [pagination trail](https://ibrado.org/jpc/readme/6/#pagination-trails)
|
183
|
+
- A [page flipper](https://ibrado.org/jpc/readme/6/#page-flipper) *and/or*
|
184
|
+
- Javascript
|
185
|
+
|
186
|
+
## Pagination trails
|
187
|
+
|
188
|
+
```liquid{% raw %}
|
189
|
+
{% if paginator.page_trail %}
|
190
|
+
<ul class="pager">
|
191
|
+
{% for trail in paginator.page_trail %}
|
192
|
+
<li {% if page.url == trail.path %}class="selected"{% endif %}>
|
193
|
+
<a href="{{ trail.path }}" title="{{ trail.title }}">{{ trail.num }}</a>
|
194
|
+
</li>
|
195
|
+
{% endfor %}
|
196
|
+
</ul>
|
197
|
+
{% endif %}{% endraw %}
|
198
|
+
```
|
199
|
+
{:style="font-size: 0.8em"}
|
200
|
+
|
201
|
+
{% if paginator.paginated %} There's an enhanced pagination trail at the bottom-left of this slide. {% endif %} The appearance is dictated by the `trail` properties:
|
202
|
+
|
203
|
+
```yaml
|
204
|
+
paginate_content:
|
205
|
+
trail:
|
206
|
+
before: 2
|
207
|
+
after: 3
|
208
|
+
```
|
209
|
+
{:style="font-size: 0.8em"}
|
210
|
+
|
211
|
+
## Page flipper
|
212
|
+
|
213
|
+
```liquid{% raw %}
|
214
|
+
<div>
|
215
|
+
{% if paginator.previous_section %}
|
216
|
+
« <a href="{{ paginator.previous_path }}">{{ paginator.previous_section }}</a>
|
217
|
+
{% endif %}
|
218
|
+
{% if paginator.previous_section and paginator.next_section %} | {% endif %}
|
219
|
+
{% if paginator.next_section %}
|
220
|
+
<a href="{{ paginator.next_path }}">{{ paginator.next_section }}</a> »
|
221
|
+
{% endif %}
|
222
|
+
</div>{% endraw %}
|
223
|
+
```
|
224
|
+
{:style="font-size: 0.8em"}
|
225
|
+
|
226
|
+
{% if paginator.paginated %}
|
227
|
+
Here's it is, live:
|
228
|
+
|
229
|
+
<div>
|
230
|
+
{% if paginator.previous_section %}
|
231
|
+
« <a href="{{ paginator.previous_path }}">{{ paginator.previous_section }}</a>
|
232
|
+
{% endif %}
|
233
|
+
{% if paginator.previous_section and paginator.next_section %} | {% endif %}
|
234
|
+
{% if paginator.next_section %}
|
235
|
+
<a href="{{ paginator.next_path }}">{{ paginator.next_section }}</a> »
|
236
|
+
{% endif %}
|
237
|
+
</div>
|
238
|
+
{% endif %}
|
239
|
+
|
240
|
+
## Javascript
|
241
|
+
|
242
|
+
```javascript{% raw %}
|
243
|
+
function setup_keypress() {
|
244
|
+
document.onkeydown = function(e) {
|
245
|
+
switch (e.keyCode) {
|
246
|
+
{% if paginator.has_previous %}
|
247
|
+
case 37: // left
|
248
|
+
document.location.href = "{{ paginator.previous_path }}";
|
249
|
+
break;
|
250
|
+
{% endif %}
|
251
|
+
case 38: // up
|
252
|
+
document.location.href = "{{ paginator.single_page }}#{{ paginator.section_id }}";
|
253
|
+
break;
|
254
|
+
{% if paginator.has_next %}
|
255
|
+
case 39: // right
|
256
|
+
document.location.href = "{{ paginator.next_path }}";
|
257
|
+
break;
|
258
|
+
{% endif %}
|
259
|
+
}
|
260
|
+
}
|
261
|
+
}
|
262
|
+
{% endraw %}
|
263
|
+
```
|
264
|
+
{:style="font-size: 0.6em"}
|
265
|
+
|
266
|
+
```html
|
267
|
+
<body onload="setup_keypress()">
|
268
|
+
```
|
269
|
+
{:style="font-size: 0.7em"}
|
270
|
+
|
271
|
+
{% unless paginator.paginated %}
|
272
|
+
This captures keypresses and redirects to the appropriate page.
|
273
|
+
{% endunless %}
|
274
|
+
|
275
|
+
See source code for full example and code attribution.
|
276
|
+
|
277
|
+
## Javascript gotcha
|
278
|
+
|
279
|
+
> Since we need the `paginator` and `page` properties, such Javascript files should not be included via `<script src="...">` .. `</script>`.
|
280
|
+
>
|
281
|
+
> Instead, save these in the `_includes` folder and `{% raw %}{% include filename.js %}{% endraw %}` somewhere in the template, e.g. the `<head>` section.
|
282
|
+
|
283
|
+
## Resources
|
284
|
+
|
285
|
+
The full source code and resources for this demo are available in the gem and on GitHub.
|
286
|
+
|
287
|
+
> <https://github.com/ibrado/jekyll-paginate-content>
|
288
|
+
|
289
|
+
|
290
|
+
## _last_
|
291
|
+
|
292
|
+
# Thank you!
|
293
|
+
|
294
|
+
Alex Ibrado \| <i class="demo-icon icon-twitter" aria-hidden="true"></i> [@ibrado](https://twitter.com/ibrado) \| <i class="demo-icon icon-github-circled" aria-hidden="true"></i> [github](https://github.com/ibrado)
|
295
|
+
{:.subtitle}
|
296
|
+
|
297
|
+
<!--page_footer-->
|
298
|
+
|
299
|
+
{% if paginator.paginated %}
|
300
|
+
[single-page version]: {{ paginator.single_page }}
|
301
|
+
{% endif %}
|
302
|
+
|
303
|
+
[GitHub]: https://github.com/ibrado/jekyll-paginate-content
|
304
|
+
[RubyGems]: https://rubygems.org/gems/jekyll-paginate-content
|
305
|
+
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require "jekyll-paginate-content/version"
|
2
2
|
|
3
3
|
require "jekyll-paginate-content/generator"
|
4
|
+
require "jekyll-paginate-content/generator-cache"
|
5
|
+
|
4
6
|
require "jekyll-paginate-content/documentpage"
|
5
7
|
require "jekyll-paginate-content/pager"
|
6
8
|
require "jekyll-paginate-content/paginator"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Jekyll
|
2
|
+
module Paginate::Content
|
3
|
+
|
4
|
+
module Generator::Cache
|
5
|
+
@cache = {}
|
6
|
+
|
7
|
+
def self.items(site, item, items = nil)
|
8
|
+
return if !item.respond_to?('path')
|
9
|
+
|
10
|
+
prefix = item.is_a?(Jekyll::Page) ? site.source : ''
|
11
|
+
source = File.join(prefix, item.path)
|
12
|
+
dest = item.destination(site.dest)
|
13
|
+
|
14
|
+
if !@cache[source]
|
15
|
+
@cache[source] = items
|
16
|
+
|
17
|
+
elsif !File.exists?(dest) || (File.mtime(source) > File.mtime(dest))
|
18
|
+
@cache.delete(source)
|
19
|
+
return
|
20
|
+
|
21
|
+
else
|
22
|
+
return @cache[source]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
@@ -11,11 +11,10 @@ module Jekyll
|
|
11
11
|
return unless sconfig["enabled"].nil? || sconfig["enabled"]
|
12
12
|
|
13
13
|
@debug = sconfig["debug"]
|
14
|
+
@force = @force.nil?
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
collections = [ sconfig['collection'], sconfig["collections"] ].flatten.compact.uniq;
|
18
|
-
collections = [ "posts", "pages" ] if collections.empty?
|
16
|
+
collections = config_values(sconfig, 'collection')
|
17
|
+
debug "Checking the following: #{collections.inspect}"
|
19
18
|
|
20
19
|
# Use this hash syntax to facilite merging _config.yml overrides
|
21
20
|
properties = {
|
@@ -62,7 +61,9 @@ module Jekyll
|
|
62
61
|
:toc_exclude => sconfig['toc_exclude'],
|
63
62
|
|
64
63
|
:properties => properties,
|
65
|
-
:user_props => sconfig['properties'] || {}
|
64
|
+
:user_props => sconfig['properties'] || {},
|
65
|
+
|
66
|
+
:force => @force
|
66
67
|
}
|
67
68
|
|
68
69
|
# Run through each specified collection
|
@@ -91,7 +92,7 @@ module Jekyll
|
|
91
92
|
process = items.select { |item| item.content.include?(@config[:separator]) }
|
92
93
|
end
|
93
94
|
else
|
94
|
-
process = items.select { |item| item.data['paginate'] }
|
95
|
+
process = items.select { |item| item.data['paginate'] || item.data['paginate_content'] }
|
95
96
|
end
|
96
97
|
|
97
98
|
process.each do |item|
|
@@ -107,9 +108,12 @@ module Jekyll
|
|
107
108
|
|
108
109
|
next if paginator.items.empty?
|
109
110
|
|
110
|
-
|
111
|
-
|
112
|
-
|
111
|
+
if !paginator.skipped && paginator.items.length > 1
|
112
|
+
debug "[#{collection}] \"#{item.data['title']}\", #{paginator.items.length-1}+1 pages"
|
113
|
+
total_parts += paginator.items.length-1;
|
114
|
+
total_copies += 1
|
115
|
+
end
|
116
|
+
|
113
117
|
new_items << paginator.items
|
114
118
|
old_items << item
|
115
119
|
end
|
@@ -125,7 +129,7 @@ module Jekyll
|
|
125
129
|
items << new_item
|
126
130
|
end
|
127
131
|
|
128
|
-
info "[#{collection}] Generated #{total_parts}+#{total_copies} pages"
|
132
|
+
info "[#{collection}] Generated #{total_parts}+#{total_copies} pages" if total_copies > 0
|
129
133
|
end
|
130
134
|
end
|
131
135
|
|
@@ -136,7 +140,7 @@ module Jekyll
|
|
136
140
|
|
137
141
|
if total_single > 0
|
138
142
|
s = (total_single == 1 ? '' : 's')
|
139
|
-
info "#{total_single}
|
143
|
+
info "#{total_single} item#{s} could not be split (no separators?)"
|
140
144
|
end
|
141
145
|
|
142
146
|
runtime = "%.6f" % (Time.now - start_time).to_f
|
@@ -155,6 +159,29 @@ module Jekyll
|
|
155
159
|
def debug(msg)
|
156
160
|
Jekyll.logger.warn "PaginateContent:", msg if @debug
|
157
161
|
end
|
162
|
+
|
163
|
+
# Constructs the plural for a key
|
164
|
+
def plural(config_key)
|
165
|
+
(config_key =~ /s$/) ? config_key :
|
166
|
+
(config_key.dup.sub!(/y$/, 'ies') || "#{config_key}s")
|
167
|
+
end
|
168
|
+
|
169
|
+
# Converts a string or array to a downcased, stripped array
|
170
|
+
def config_array(config, key, keepcase = nil)
|
171
|
+
[ config[key] ].flatten.compact.uniq.map { |c|
|
172
|
+
c.split(/[,;]\s*/).map { |v|
|
173
|
+
keepcase ? v.to_s.strip : v.to_s.downcase.strip
|
174
|
+
}
|
175
|
+
}.flatten.uniq
|
176
|
+
end
|
177
|
+
|
178
|
+
# Merges singular and plural config values into an array
|
179
|
+
def config_values(config, key, keepcase = nil)
|
180
|
+
singular = config_array(config, key, keepcase)
|
181
|
+
plural = config_array(config, plural(key), keepcase)
|
182
|
+
[ singular, plural ].flatten.uniq
|
183
|
+
end
|
184
|
+
|
158
185
|
end
|
159
186
|
|
160
187
|
|