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
@@ -10,7 +10,7 @@ module Jekyll
|
|
10
10
|
:page_trail, :pages, :paginated, :previous_is_first,
|
11
11
|
:prev_is_first, :previous_page, :prev_page, :previous_page_path,
|
12
12
|
:previous_path, :prev_path, :prev_section, :previous_section,
|
13
|
-
:section, :seo, :single_page, :toc, :total_pages, :view_all
|
13
|
+
:section, :section_id, :seo, :single_page, :toc, :total_pages, :view_all
|
14
14
|
|
15
15
|
def initialize(data)
|
16
16
|
data.each do |k,v|
|
@@ -45,6 +45,7 @@ module Jekyll
|
|
45
45
|
'seo' => seo,
|
46
46
|
'single_page' => single_page,
|
47
47
|
'section' => section,
|
48
|
+
'section_id' => section_id,
|
48
49
|
'toc' => toc,
|
49
50
|
'next_section' => next_section,
|
50
51
|
'previous_section' => previous_section,
|
@@ -10,23 +10,34 @@ module Jekyll
|
|
10
10
|
@items = []
|
11
11
|
@skipped = false
|
12
12
|
|
13
|
-
|
13
|
+
is_page = item.is_a?(Jekyll::Page)
|
14
|
+
|
15
|
+
source_prefix = is_page ? site.source : ''
|
14
16
|
source = File.join(source_prefix, item.path)
|
15
17
|
html = item.destination('')
|
16
18
|
|
17
|
-
final_config =
|
19
|
+
final_config = config.dup
|
18
20
|
if item.data.has_key?('paginate_content')
|
21
|
+
fm_config = {}
|
19
22
|
item.data['paginate_content'].each do |k,v|
|
20
23
|
s = k.downcase.strip.to_sym
|
21
|
-
|
24
|
+
fm_config[s] = v
|
22
25
|
end
|
26
|
+
|
27
|
+
Jekyll::Utils.deep_merge_hashes!(final_config, fm_config)
|
23
28
|
end
|
29
|
+
|
24
30
|
@config = final_config
|
25
31
|
|
26
|
-
if
|
27
|
-
|
28
|
-
else
|
32
|
+
if !@config[:force] && (cached_items = Generator::Cache.items(site, item))
|
33
|
+
@items = cached_items
|
29
34
|
@skipped = true
|
35
|
+
|
36
|
+
else
|
37
|
+
split_pages = self.split(item)
|
38
|
+
|
39
|
+
# Store for later retrieval during regeneration
|
40
|
+
Generator::Cache.items(site, item, split_pages)
|
30
41
|
end
|
31
42
|
end
|
32
43
|
|
@@ -36,6 +47,7 @@ module Jekyll
|
|
36
47
|
|
37
48
|
def split(item)
|
38
49
|
sep = @config[:separator].downcase.strip
|
50
|
+
|
39
51
|
# Update the header IDs the original document
|
40
52
|
content = item.content
|
41
53
|
|
@@ -63,7 +75,12 @@ module Jekyll
|
|
63
75
|
content.scan(/(^|\r?\n)((#+)\s*([^\r\n#]+)#*\r?\n|([^\r\n]+)\r?\n(=+|\-{4,})\s*\r?\n|<h([1-6])[^>]*>([^\r\n<]+)(\s*<\/h\7>))/mi).each do |m|
|
64
76
|
header = m[3] || m[4] || m[7]
|
65
77
|
|
78
|
+
# Parse any Liquid page variables here so the ids also get the resulting text
|
79
|
+
header_template = Liquid::Template.parse(header)
|
80
|
+
header = header_template.render({ "page" => item.data })
|
81
|
+
|
66
82
|
next if @config[:toc_exclude] && @config[:toc_exclude].include?(header)
|
83
|
+
next if header == '_last_'
|
67
84
|
|
68
85
|
markup = m[1].strip
|
69
86
|
|
@@ -256,7 +273,7 @@ module Jekyll
|
|
256
273
|
page_data = item.data
|
257
274
|
end
|
258
275
|
|
259
|
-
|
276
|
+
Jekyll::Utils.deep_merge_hashes!(paginator, page_data)
|
260
277
|
new_part = Page.new(item, @site, dirname, filename)
|
261
278
|
else
|
262
279
|
new_part = Document.new(item, @site, @collection)
|
@@ -284,6 +301,11 @@ module Jekyll
|
|
284
301
|
end
|
285
302
|
|
286
303
|
paginator['section'] = section
|
304
|
+
if last && section == '_last_'
|
305
|
+
paginator['section_id'] = section
|
306
|
+
else
|
307
|
+
paginator['section_id'] = section.downcase.gsub(/[[:punct:]]/, '').gsub(/\s+/, '-')
|
308
|
+
end
|
287
309
|
|
288
310
|
paginator['paginated'] = true
|
289
311
|
paginator['page_num'] = num
|
@@ -340,9 +362,8 @@ module Jekyll
|
|
340
362
|
_set_properties(item, new_part, 'part', user_props) if !first && !last
|
341
363
|
|
342
364
|
# Don't allow these to be overriden,
|
343
|
-
# i.e. set/reset
|
365
|
+
# i.e. set/reset date, title, permalink
|
344
366
|
|
345
|
-
new_part.data['layout'] = item.data['layout']
|
346
367
|
new_part.data['date'] = item.data['date']
|
347
368
|
new_part.data['permalink'] = plink
|
348
369
|
|
@@ -356,10 +377,13 @@ module Jekyll
|
|
356
377
|
'id' => id
|
357
378
|
}
|
358
379
|
|
380
|
+
if last && (section == "_last_")
|
381
|
+
page.sub!(/^\s*#+\s+_last_/, '')
|
382
|
+
end
|
383
|
+
|
359
384
|
new_part.content = header + page + footer
|
360
385
|
|
361
386
|
new_items << new_part
|
362
|
-
|
363
387
|
num += 1
|
364
388
|
end
|
365
389
|
|
@@ -425,6 +449,7 @@ module Jekyll
|
|
425
449
|
single.data['layout'] = item.data['layout']
|
426
450
|
single.data['date'] = item.data['date']
|
427
451
|
single.data['title'] = item.data['title']
|
452
|
+
single.data['regenerate'] = false;
|
428
453
|
|
429
454
|
# Just some limited data for the single page
|
430
455
|
seo = @config[:seo_canonical] ?
|
@@ -445,6 +470,8 @@ module Jekyll
|
|
445
470
|
single.pager = Pager.new(single_paginator)
|
446
471
|
single.content = item.content
|
447
472
|
|
473
|
+
single.content.sub!(/^\s*#+\s+_last_/, '<a id="_last_"></a>')
|
474
|
+
|
448
475
|
new_items << single
|
449
476
|
end
|
450
477
|
|
@@ -517,11 +544,10 @@ module Jekyll
|
|
517
544
|
end
|
518
545
|
|
519
546
|
def _set_properties(original, item, stage, user_props = nil)
|
520
|
-
stage_props = {}
|
521
|
-
stage_props.merge!(@config[:properties][stage])
|
547
|
+
stage_props = (@config[:properties][stage] || {}).dup
|
522
548
|
|
523
549
|
if user_props && user_props.has_key?(stage)
|
524
|
-
|
550
|
+
Jekyll::Utils.deep_merge_hashes!(stage_props, user_props[stage])
|
525
551
|
end
|
526
552
|
|
527
553
|
return if stage_props.empty?
|
@@ -541,12 +567,7 @@ module Jekyll
|
|
541
567
|
end
|
542
568
|
end
|
543
569
|
|
544
|
-
|
545
|
-
item.merge_data!(stage_props)
|
546
|
-
else
|
547
|
-
item.data.merge!(stage_props)
|
548
|
-
end
|
549
|
-
|
570
|
+
Jekyll::Utils.deep_merge_hashes!(item.data, stage_props)
|
550
571
|
end
|
551
572
|
|
552
573
|
def _adjust_links(new_items, content, a_locations, num)
|
@@ -569,6 +590,7 @@ module Jekyll
|
|
569
590
|
end
|
570
591
|
|
571
592
|
end
|
593
|
+
|
572
594
|
end
|
573
595
|
|
574
596
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-paginate-content
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Ibrado
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -59,9 +59,34 @@ files:
|
|
59
59
|
- Rakefile
|
60
60
|
- bin/console
|
61
61
|
- bin/setup
|
62
|
+
- example/.gitignore
|
63
|
+
- example/404.html
|
64
|
+
- example/Gemfile
|
65
|
+
- example/_config.yml
|
66
|
+
- example/_demos/jpc-3page-auto.md
|
67
|
+
- example/_includes/header.html
|
68
|
+
- example/_includes/slides.js
|
69
|
+
- example/_layouts/default.html
|
70
|
+
- example/_layouts/home.html
|
71
|
+
- example/_layouts/slides.html
|
72
|
+
- example/_posts/2018-01-27-manual.md
|
73
|
+
- example/_posts/2018-01-27-welcome-to-jekyll.markdown
|
74
|
+
- example/about.md
|
75
|
+
- example/assets/css/fontello.css
|
76
|
+
- example/assets/css/slides.css
|
77
|
+
- example/assets/css/syntax.scss
|
78
|
+
- example/assets/font/fontello.eot
|
79
|
+
- example/assets/font/fontello.svg
|
80
|
+
- example/assets/font/fontello.ttf
|
81
|
+
- example/assets/font/fontello.woff
|
82
|
+
- example/assets/font/fontello.woff2
|
83
|
+
- example/assets/images/slidebg.png
|
84
|
+
- example/index.md
|
85
|
+
- example/slides.md
|
62
86
|
- jekyll-paginate-content.gemspec
|
63
87
|
- lib/jekyll-paginate-content.rb
|
64
88
|
- lib/jekyll-paginate-content/documentpage.rb
|
89
|
+
- lib/jekyll-paginate-content/generator-cache.rb
|
65
90
|
- lib/jekyll-paginate-content/generator.rb
|
66
91
|
- lib/jekyll-paginate-content/pager.rb
|
67
92
|
- lib/jekyll-paginate-content/paginator.rb
|