asciidoctor-multipage 0.0.1 → 0.0.6
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 +34 -33
- metadata +25 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1536862b822c7ec9f66f5f53f3b6a9bad7f6983ee5ff1f5c742e718a3cb66a76
|
4
|
+
data.tar.gz: f612e848167857d28c7c42f4684355e7082a45379038a5265e472797dae99b11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c652de15f77d2c32e7574b7edf9351e49623170aada76a8c577b16ade65db6294660fb07dbebe27095b5500167c804a4a3ac70d82383d3d56a84ca9d4c1aeed8
|
7
|
+
data.tar.gz: 8db9f9e909ae211891384483624affd6f7c78ada48d78c27b7bb1667c5da4300ab3bc257c233912c1495505d412a7402275579f569bd3524e6f7011f1debb4f2
|
@@ -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
|
@@ -77,16 +78,16 @@ class Asciidoctor::Section
|
|
77
78
|
def sectnum(delimiter = '.', append = nil)
|
78
79
|
append ||= (append == false ? '' : delimiter)
|
79
80
|
if @level == 1
|
80
|
-
%(#{@
|
81
|
+
%(#{@numeral}#{append})
|
81
82
|
elsif @level > 1
|
82
83
|
if @parent.class == Asciidoctor::Section ||
|
83
84
|
(@mplevel && @parent.class == Asciidoctor::Document)
|
84
|
-
%(#{@parent.sectnum(delimiter)}#{@
|
85
|
+
%(#{@parent.sectnum(delimiter)}#{@numeral}#{append})
|
85
86
|
else
|
86
|
-
%(#{@
|
87
|
+
%(#{@numeral}#{append})
|
87
88
|
end
|
88
89
|
else # @level == 0
|
89
|
-
%(#{Asciidoctor::Helpers.int_to_roman @
|
90
|
+
%(#{Asciidoctor::Helpers.int_to_roman @numeral}#{append})
|
90
91
|
end
|
91
92
|
end
|
92
93
|
end
|
@@ -117,15 +118,11 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
117
118
|
page << block
|
118
119
|
end
|
119
120
|
|
120
|
-
def convert(node, transform = nil, opts = {})
|
121
|
-
transform ||= node.node_name
|
122
|
-
opts.empty? ? (send transform, node) : (send transform, node, opts)
|
123
|
-
end
|
124
|
-
|
125
121
|
# Process Document (either the original full document or a processed page)
|
126
|
-
def
|
122
|
+
def convert_document(node)
|
127
123
|
if node.processed
|
128
|
-
# This node can now be handled by
|
124
|
+
# This node (an individual page) can now be handled by
|
125
|
+
# Html5Converter.
|
129
126
|
super
|
130
127
|
else
|
131
128
|
# This node is the original full document which has not yet been
|
@@ -151,6 +148,7 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
151
148
|
# Set multipage chunk types
|
152
149
|
set_multipage_attrs(node)
|
153
150
|
|
151
|
+
# FIXME: This can result in a duplicate ID without a warning.
|
154
152
|
# Set the "id" attribute for the Document, using the "docname", which is
|
155
153
|
# based on the file name. Then register the document ID using the
|
156
154
|
# document title. This allows cross-references to refer to (1) the
|
@@ -198,14 +196,15 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
198
196
|
|
199
197
|
# Process Document in embeddable mode (either the original full document or a
|
200
198
|
# processed page)
|
201
|
-
def
|
199
|
+
def convert_embedded(node)
|
202
200
|
if node.processed
|
203
|
-
# This node can now be handled by
|
201
|
+
# This node (an individual page) can now be handled by
|
202
|
+
# Html5Converter.
|
204
203
|
super
|
205
204
|
else
|
206
205
|
# This node is the original full document which has not yet been
|
207
|
-
# processed; it can be handled by
|
208
|
-
|
206
|
+
# processed; it can be handled by convert_document().
|
207
|
+
convert_document(node)
|
209
208
|
end
|
210
209
|
end
|
211
210
|
|
@@ -221,7 +220,8 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
221
220
|
previous_page = pages[page_index-1]
|
222
221
|
parent_page = page.parent
|
223
222
|
home_page = doc
|
224
|
-
# NOTE
|
223
|
+
# NOTE: There are some non-breaking spaces (U+00A0) below, in
|
224
|
+
# the "links <<" lines and "links.join" line.
|
225
225
|
if previous_page != parent_page
|
226
226
|
links << %(← Previous: <<#{previous_page.id}>>)
|
227
227
|
end
|
@@ -242,12 +242,11 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
242
242
|
end
|
243
243
|
|
244
244
|
# Generate the actual HTML outline for the TOC. This method is analogous to
|
245
|
-
# Html5Converter
|
245
|
+
# Html5Converter convert_outline().
|
246
246
|
def generate_outline(node, opts = {})
|
247
|
-
# This is the same as Html5Converter outline()
|
248
247
|
return unless node.sections?
|
249
|
-
sectnumlevels = opts[:sectnumlevels] || (node.document.
|
250
|
-
toclevels = opts[:toclevels] || (node.document.
|
248
|
+
sectnumlevels = opts[:sectnumlevels] || (node.document.attributes['sectnumlevels'] || 3).to_i
|
249
|
+
toclevels = opts[:toclevels] || (node.document.attributes['toclevels'] || 2).to_i
|
251
250
|
sections = node.sections
|
252
251
|
result = [%(<ul class="sectlevel#{sections[0].level}">)]
|
253
252
|
sections.each do |section|
|
@@ -282,12 +281,12 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
282
281
|
end
|
283
282
|
result << %(<li><a href="#{link}">#{stitle}</a>)
|
284
283
|
|
285
|
-
# Finish in a manner similar to Html5Converter
|
284
|
+
# Finish in a manner similar to Html5Converter convert_outline()
|
286
285
|
if slevel < toclevels &&
|
287
286
|
(child_toc_level = generate_outline section,
|
288
|
-
|
289
|
-
|
290
|
-
|
287
|
+
toclevels: toclevels,
|
288
|
+
secnumlevels: sectnumlevels,
|
289
|
+
page_id: opts[:page_id])
|
291
290
|
result << child_toc_level
|
292
291
|
end
|
293
292
|
result << '</li>'
|
@@ -298,7 +297,7 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
298
297
|
|
299
298
|
# Include chapter pages in cross-reference links. This method overrides for
|
300
299
|
# the :xref node type only.
|
301
|
-
def
|
300
|
+
def convert_inline_anchor(node)
|
302
301
|
if node.type == :xref
|
303
302
|
# This is the same as super...
|
304
303
|
if (path = node.attributes['path'])
|
@@ -369,7 +368,7 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
369
368
|
new_section.title = node.title
|
370
369
|
new_section.mplevel = node.mplevel
|
371
370
|
new_parent << new_section
|
372
|
-
new_parent.sections.last.
|
371
|
+
new_parent.sections.last.numeral = node.numeral
|
373
372
|
new_parent = new_section
|
374
373
|
node.sections.each do |section|
|
375
374
|
new_outline_doc(section, new_parent: new_parent,
|
@@ -379,8 +378,9 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
379
378
|
return new_document
|
380
379
|
end
|
381
380
|
|
382
|
-
# Override Html5Converter
|
383
|
-
|
381
|
+
# Override Html5Converter convert_outline() to return a custom TOC
|
382
|
+
# outline.
|
383
|
+
def convert_outline(node, opts = {})
|
384
384
|
doc = node.document
|
385
385
|
# Find this node in the @@full_outline skeleton document
|
386
386
|
page_node = @@full_outline.find_by(id: node.id).first
|
@@ -424,7 +424,7 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
424
424
|
|
425
425
|
# Process a Section. Each Section will either be split off into its own page
|
426
426
|
# or processed as normal by Html5Converter.
|
427
|
-
def
|
427
|
+
def convert_section(node)
|
428
428
|
doc = node.document
|
429
429
|
if doc.processed
|
430
430
|
# This node can now be handled by Html5Converter.
|
@@ -491,7 +491,8 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
491
491
|
doc = node.document
|
492
492
|
node.mplevel = :root if node.class == Asciidoctor::Document
|
493
493
|
node.sections.each do |section|
|
494
|
-
# Check custom multipage-level attribute on section
|
494
|
+
# Check custom multipage-level attribute on section; warn and
|
495
|
+
# discard if invalid
|
495
496
|
if section.attr?('multipage-level', nil, false) &&
|
496
497
|
section.attr('multipage-level').to_i <
|
497
498
|
node.attr('multipage-level').to_i
|
@@ -499,15 +500,15 @@ class MultipageHtml5Converter < Asciidoctor::Converter::Html5Converter
|
|
499
500
|
%(section cannot be less than the parent section value)
|
500
501
|
section.set_attr('multipage-level', nil)
|
501
502
|
end
|
502
|
-
#
|
503
|
+
# Propagate custom multipage-level value to child node
|
503
504
|
if !section.attr?('multipage-level', nil, false) &&
|
504
505
|
node.attr('multipage-level') != doc.attr('multipage-level')
|
505
506
|
section.set_attr('multipage-level', node.attr('multipage-level'))
|
506
507
|
end
|
507
508
|
# Set section type
|
508
|
-
if section.level < section.attr('multipage-level').to_i
|
509
|
+
if section.level < section.attr('multipage-level', nil, true).to_i
|
509
510
|
section.mplevel = :branch
|
510
|
-
elsif section.level == section.attr('multipage-level').to_i
|
511
|
+
elsif section.level == section.attr('multipage-level', nil, true).to_i
|
511
512
|
section.mplevel = :leaf
|
512
513
|
else
|
513
514
|
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.6
|
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-27 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,30 +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:
|
62
|
-
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - '='
|
75
|
+
version: 2.0.11
|
76
|
+
- - "<"
|
67
77
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: thread_safe
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
78
|
+
version: '2.1'
|
76
79
|
type: :runtime
|
77
80
|
prerelease: false
|
78
81
|
version_requirements: !ruby/object:Gem::Requirement
|
79
82
|
requirements:
|
80
|
-
- - "
|
83
|
+
- - ">="
|
81
84
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
85
|
+
version: 2.0.11
|
86
|
+
- - "<"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '2.1'
|
83
89
|
description: An Asciidoctor extension that generates HTML output using multiple pages
|
84
90
|
email:
|
85
91
|
- writer@owenh.net
|