asciidoctor-multipage 0.0.2 → 0.0.7
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/lib/asciidoctor-multipage.rb +37 -20
- metadata +26 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d30d8cf7b55d2e9eac4264bcaf1eb908a2e82b22de1446a4003a889c482a8e56
|
4
|
+
data.tar.gz: 62f1b710405e4fb9fd680720a4d670069761181a369b541c65a7bda50da6733f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec8fc0473fe24f5e10112b4aac65f28fa5a23491e8edabfa8581b54f926201dbeefb3991ec0c1bd1d8fa0f62a1806dd95b610ed0497248c27e53db26e1894f3a
|
7
|
+
data.tar.gz: c50107b5d4a5b5d1349b99b72da9458ddb011469146f9a5a36516fda2fc6f3667881afe942fd6465bebebaf174c883971b305fdcfb67b3424878e590ecd1e928
|
@@ -17,6 +17,7 @@ class Asciidoctor::AbstractNode
|
|
17
17
|
node_tree << current
|
18
18
|
current = current.parent
|
19
19
|
end
|
20
|
+
node_tree << current
|
20
21
|
if node_tree.include?(self) ||
|
21
22
|
node_tree.include?(self.parent)
|
22
23
|
return true
|
@@ -120,7 +121,8 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
120
121
|
# Process Document (either the original full document or a processed page)
|
121
122
|
def convert_document(node)
|
122
123
|
if node.processed
|
123
|
-
# This node can now be handled by
|
124
|
+
# This node (an individual page) can now be handled by
|
125
|
+
# Html5Converter.
|
124
126
|
super
|
125
127
|
else
|
126
128
|
# This node is the original full document which has not yet been
|
@@ -146,6 +148,7 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
146
148
|
# Set multipage chunk types
|
147
149
|
set_multipage_attrs(node)
|
148
150
|
|
151
|
+
# FIXME: This can result in a duplicate ID without a warning.
|
149
152
|
# Set the "id" attribute for the Document, using the "docname", which is
|
150
153
|
# based on the file name. Then register the document ID using the
|
151
154
|
# document title. This allows cross-references to refer to (1) the
|
@@ -195,12 +198,13 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
195
198
|
# processed page)
|
196
199
|
def convert_embedded(node)
|
197
200
|
if node.processed
|
198
|
-
# This node can now be handled by
|
201
|
+
# This node (an individual page) can now be handled by
|
202
|
+
# Html5Converter.
|
199
203
|
super
|
200
204
|
else
|
201
205
|
# This node is the original full document which has not yet been
|
202
|
-
# processed; it can be handled by
|
203
|
-
|
206
|
+
# processed; it can be handled by convert_document().
|
207
|
+
convert_document(node)
|
204
208
|
end
|
205
209
|
end
|
206
210
|
|
@@ -216,7 +220,8 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
216
220
|
previous_page = pages[page_index-1]
|
217
221
|
parent_page = page.parent
|
218
222
|
home_page = doc
|
219
|
-
# NOTE
|
223
|
+
# NOTE: There are some non-breaking spaces (U+00A0) below, in
|
224
|
+
# the "links <<" lines and "links.join" line.
|
220
225
|
if previous_page != parent_page
|
221
226
|
links << %(← Previous: <<#{previous_page.id}>>)
|
222
227
|
end
|
@@ -237,12 +242,12 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
237
242
|
end
|
238
243
|
|
239
244
|
# Generate the actual HTML outline for the TOC. This method is analogous to
|
240
|
-
# Html5Converter
|
245
|
+
# Html5Converter convert_outline().
|
241
246
|
def generate_outline(node, opts = {})
|
242
|
-
#
|
247
|
+
# Do the same as Html5Converter convert_outline() here
|
243
248
|
return unless node.sections?
|
244
|
-
sectnumlevels = opts[:sectnumlevels] || (node.document.
|
245
|
-
toclevels = opts[:toclevels] || (node.document.
|
249
|
+
sectnumlevels = opts[:sectnumlevels] || (node.document.attributes['sectnumlevels'] || 3).to_i
|
250
|
+
toclevels = opts[:toclevels] || (node.document.attributes['toclevels'] || 2).to_i
|
246
251
|
sections = node.sections
|
247
252
|
result = [%(<ul class="sectlevel#{sections[0].level}">)]
|
248
253
|
sections.each do |section|
|
@@ -250,7 +255,17 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
250
255
|
if section.caption
|
251
256
|
stitle = section.captioned_title
|
252
257
|
elsif section.numbered && slevel <= sectnumlevels
|
253
|
-
|
258
|
+
if slevel < 2 && node.document.doctype == 'book'
|
259
|
+
if section.sectname == 'chapter'
|
260
|
+
stitle = %(#{(signifier = node.document.attributes['chapter-signifier']) ? "#{signifier} " : ''}#{section.sectnum} #{section.title})
|
261
|
+
elsif section.sectname == 'part'
|
262
|
+
stitle = %(#{(signifier = node.document.attributes['part-signifier']) ? "#{signifier} " : ''}#{section.sectnum nil, ':'} #{section.title})
|
263
|
+
else
|
264
|
+
stitle = %(#{section.sectnum} #{section.title})
|
265
|
+
end
|
266
|
+
else
|
267
|
+
stitle = %(#{section.sectnum} #{section.title})
|
268
|
+
end
|
254
269
|
else
|
255
270
|
stitle = section.title
|
256
271
|
end
|
@@ -277,12 +292,12 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
277
292
|
end
|
278
293
|
result << %(<li><a href="#{link}">#{stitle}</a>)
|
279
294
|
|
280
|
-
# Finish in a manner similar to Html5Converter
|
295
|
+
# Finish in a manner similar to Html5Converter convert_outline()
|
281
296
|
if slevel < toclevels &&
|
282
297
|
(child_toc_level = generate_outline section,
|
283
|
-
|
284
|
-
|
285
|
-
|
298
|
+
toclevels: toclevels,
|
299
|
+
secnumlevels: sectnumlevels,
|
300
|
+
page_id: opts[:page_id])
|
286
301
|
result << child_toc_level
|
287
302
|
end
|
288
303
|
result << '</li>'
|
@@ -361,7 +376,7 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
361
376
|
numbered = node.numbered)
|
362
377
|
new_section.id = node.id
|
363
378
|
new_section.caption = node.caption
|
364
|
-
new_section.title = node.title
|
379
|
+
new_section.title = node.instance_variable_get(:@title)
|
365
380
|
new_section.mplevel = node.mplevel
|
366
381
|
new_parent << new_section
|
367
382
|
new_parent.sections.last.numeral = node.numeral
|
@@ -374,7 +389,8 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
374
389
|
return new_document
|
375
390
|
end
|
376
391
|
|
377
|
-
# Override Html5Converter
|
392
|
+
# Override Html5Converter convert_outline() to return a custom TOC
|
393
|
+
# outline.
|
378
394
|
def convert_outline(node, opts = {})
|
379
395
|
doc = node.document
|
380
396
|
# Find this node in the @@full_outline skeleton document
|
@@ -486,7 +502,8 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
486
502
|
doc = node.document
|
487
503
|
node.mplevel = :root if node.class == Asciidoctor::Document
|
488
504
|
node.sections.each do |section|
|
489
|
-
# Check custom multipage-level attribute on section
|
505
|
+
# Check custom multipage-level attribute on section; warn and
|
506
|
+
# discard if invalid
|
490
507
|
if section.attr?('multipage-level', nil, false) &&
|
491
508
|
section.attr('multipage-level').to_i <
|
492
509
|
node.attr('multipage-level').to_i
|
@@ -494,15 +511,15 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
494
511
|
%(section cannot be less than the parent section value)
|
495
512
|
section.set_attr('multipage-level', nil)
|
496
513
|
end
|
497
|
-
#
|
514
|
+
# Propagate custom multipage-level value to child node
|
498
515
|
if !section.attr?('multipage-level', nil, false) &&
|
499
516
|
node.attr('multipage-level') != doc.attr('multipage-level')
|
500
517
|
section.set_attr('multipage-level', node.attr('multipage-level'))
|
501
518
|
end
|
502
519
|
# Set section type
|
503
|
-
if section.level < section.attr('multipage-level').to_i
|
520
|
+
if section.level < section.attr('multipage-level', nil, true).to_i
|
504
521
|
section.mplevel = :branch
|
505
|
-
elsif section.level == section.attr('multipage-level').to_i
|
522
|
+
elsif section.level == section.attr('multipage-level', nil, true).to_i
|
506
523
|
section.mplevel = :leaf
|
507
524
|
else
|
508
525
|
section.mplevel = :content
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-multipage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Owen T. Heisler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: appraisal
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,16 +70,22 @@ dependencies:
|
|
56
70
|
name: asciidoctor
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: 2.0.
|
75
|
+
version: 2.0.11
|
76
|
+
- - "<"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '2.1'
|
62
79
|
type: :runtime
|
63
80
|
prerelease: false
|
64
81
|
version_requirements: !ruby/object:Gem::Requirement
|
65
82
|
requirements:
|
66
|
-
- -
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.0.11
|
86
|
+
- - "<"
|
67
87
|
- !ruby/object:Gem::Version
|
68
|
-
version: 2.
|
88
|
+
version: '2.1'
|
69
89
|
description: An Asciidoctor extension that generates HTML output using multiple pages
|
70
90
|
email:
|
71
91
|
- writer@owenh.net
|