asciidoctor 2.0.0.rc.2 → 2.0.0.rc.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +31 -3
- data/README-de.adoc +2 -8
- data/README-fr.adoc +2 -8
- data/README-jp.adoc +2 -2
- data/README-zh_CN.adoc +2 -2
- data/README.adoc +3 -7
- data/data/locale/attributes-fr.adoc +1 -1
- data/data/stylesheets/asciidoctor-default.css +3 -2
- data/lib/asciidoctor.rb +13 -7
- data/lib/asciidoctor/abstract_block.rb +33 -27
- data/lib/asciidoctor/abstract_node.rb +6 -10
- data/lib/asciidoctor/block.rb +4 -4
- data/lib/asciidoctor/cli/options.rb +23 -24
- data/lib/asciidoctor/converter.rb +17 -16
- data/lib/asciidoctor/converter/docbook5.rb +102 -102
- data/lib/asciidoctor/converter/html5.rb +142 -84
- data/lib/asciidoctor/converter/manpage.rb +81 -81
- data/lib/asciidoctor/converter/template.rb +2 -2
- data/lib/asciidoctor/core_ext.rb +1 -0
- data/lib/asciidoctor/core_ext/hash/merge.rb +7 -0
- data/lib/asciidoctor/document.rb +28 -14
- data/lib/asciidoctor/extensions.rb +4 -3
- data/lib/asciidoctor/inline.rb +2 -9
- data/lib/asciidoctor/parser.rb +27 -17
- data/lib/asciidoctor/reader.rb +41 -26
- data/lib/asciidoctor/section.rb +1 -8
- data/lib/asciidoctor/substitutors.rb +125 -124
- data/lib/asciidoctor/syntax_highlighter/highlightjs.rb +1 -1
- data/lib/asciidoctor/table.rb +1 -1
- data/lib/asciidoctor/version.rb +1 -1
- data/man/asciidoctor.1 +4 -4
- data/man/asciidoctor.adoc +1 -1
- metadata +3 -2
@@ -28,7 +28,7 @@ class Converter::ManPageConverter < Converter::Base
|
|
28
28
|
init_backend_traits basebackend: 'manpage', filetype: 'man', outfilesuffix: '.man', supports_templates: true
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
31
|
+
def convert_document node
|
32
32
|
unless node.attr? 'mantitle'
|
33
33
|
raise 'asciidoctor: ERROR: doctype must be set to manpage when using manpage backend'
|
34
34
|
end
|
@@ -49,7 +49,7 @@ class Converter::ManPageConverter < Converter::Base
|
|
49
49
|
.\\" Language: English
|
50
50
|
.\\")
|
51
51
|
# TODO add document-level setting to disable capitalization of manname
|
52
|
-
result << %(.TH "#{
|
52
|
+
result << %(.TH "#{manify manname.upcase}" "#{manvolnum}" "#{docdate}" "#{mansource ? (manify mansource) : '\ \&'}" "#{manmanual ? (manify manmanual) : '\ \&'}")
|
53
53
|
# define portability settings
|
54
54
|
# see http://bugs.debian.org/507673
|
55
55
|
# see http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
|
@@ -91,7 +91,7 @@ class Converter::ManPageConverter < Converter::Base
|
|
91
91
|
if node.attr? 'manpurpose'
|
92
92
|
mannames = node.attr 'mannames', [manname]
|
93
93
|
result << %(.SH "#{(node.attr 'manname-title', 'NAME').upcase}"
|
94
|
-
#{mannames.map {|n|
|
94
|
+
#{mannames.map {|n| manify n }.join ', '} \\- #{manify node.attr('manpurpose'), whitespace: :normalize})
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
@@ -121,7 +121,7 @@ class Converter::ManPageConverter < Converter::Base
|
|
121
121
|
end
|
122
122
|
|
123
123
|
# NOTE embedded doesn't really make sense in the manpage backend
|
124
|
-
def
|
124
|
+
def convert_embedded node
|
125
125
|
result = [node.content]
|
126
126
|
|
127
127
|
if node.footnotes? && !(node.attr? 'nofootnotes')
|
@@ -134,7 +134,7 @@ class Converter::ManPageConverter < Converter::Base
|
|
134
134
|
result.join LF
|
135
135
|
end
|
136
136
|
|
137
|
-
def
|
137
|
+
def convert_section node
|
138
138
|
result = []
|
139
139
|
if node.level > 1
|
140
140
|
macro = 'SS'
|
@@ -144,12 +144,12 @@ class Converter::ManPageConverter < Converter::Base
|
|
144
144
|
macro = 'SH'
|
145
145
|
stitle = node.title.upcase
|
146
146
|
end
|
147
|
-
result << %(.#{macro} "#{
|
147
|
+
result << %(.#{macro} "#{manify stitle}"
|
148
148
|
#{node.content})
|
149
149
|
result.join LF
|
150
150
|
end
|
151
151
|
|
152
|
-
def
|
152
|
+
def convert_admonition node
|
153
153
|
result = []
|
154
154
|
result << %(.if n .sp
|
155
155
|
.RS 4
|
@@ -158,19 +158,19 @@ class Converter::ManPageConverter < Converter::Base
|
|
158
158
|
.nr an-break-flag 1
|
159
159
|
.br
|
160
160
|
.ps +1
|
161
|
-
.B #{node.attr 'textlabel'}#{node.title? ? "\\fP: #{
|
161
|
+
.B #{node.attr 'textlabel'}#{node.title? ? "\\fP: #{manify node.title}" : ''}
|
162
162
|
.ps -1
|
163
163
|
.br
|
164
|
-
#{
|
164
|
+
#{enclose_content node}
|
165
165
|
.sp .5v
|
166
166
|
.RE)
|
167
167
|
result.join LF
|
168
168
|
end
|
169
169
|
|
170
|
-
def
|
170
|
+
def convert_colist node
|
171
171
|
result = []
|
172
172
|
result << %(.sp
|
173
|
-
.B #{
|
173
|
+
.B #{manify node.title}
|
174
174
|
.br) if node.title?
|
175
175
|
result << '.TS
|
176
176
|
tab(:);
|
@@ -179,7 +179,7 @@ r lw(\n(.lu*75u/100u).'
|
|
179
179
|
num = 0
|
180
180
|
node.items.each do |item|
|
181
181
|
result << %(\\fB(#{num += 1})\\fP\\h'-2n':T{)
|
182
|
-
result << (
|
182
|
+
result << (manify item.text, whitespace: :normalize)
|
183
183
|
result << item.content if item.blocks?
|
184
184
|
result << 'T}'
|
185
185
|
end
|
@@ -188,10 +188,10 @@ r lw(\n(.lu*75u/100u).'
|
|
188
188
|
end
|
189
189
|
|
190
190
|
# TODO implement horizontal (if it makes sense)
|
191
|
-
def
|
191
|
+
def convert_dlist node
|
192
192
|
result = []
|
193
193
|
result << %(.sp
|
194
|
-
.B #{
|
194
|
+
.B #{manify node.title}
|
195
195
|
.br) if node.title?
|
196
196
|
counter = 0
|
197
197
|
node.items.each do |terms, dd|
|
@@ -199,15 +199,15 @@ r lw(\n(.lu*75u/100u).'
|
|
199
199
|
case node.style
|
200
200
|
when 'qanda'
|
201
201
|
result << %(.sp
|
202
|
-
#{counter}. #{
|
202
|
+
#{counter}. #{manify terms.map {|dt| dt.text }.join ' '}
|
203
203
|
.RS 4)
|
204
204
|
else
|
205
205
|
result << %(.sp
|
206
|
-
#{
|
206
|
+
#{manify terms.map {|dt| dt.text }.join(', '), whitespace: :normalize}
|
207
207
|
.RS 4)
|
208
208
|
end
|
209
209
|
if dd
|
210
|
-
result << (
|
210
|
+
result << (manify dd.text, whitespace: :normalize) if dd.text?
|
211
211
|
result << dd.content if dd.blocks?
|
212
212
|
end
|
213
213
|
result << '.RE'
|
@@ -215,73 +215,73 @@ r lw(\n(.lu*75u/100u).'
|
|
215
215
|
result.join LF
|
216
216
|
end
|
217
217
|
|
218
|
-
def
|
218
|
+
def convert_example node
|
219
219
|
result = []
|
220
220
|
result << (node.title? ? %(.sp
|
221
|
-
.B #{
|
221
|
+
.B #{manify node.captioned_title}
|
222
222
|
.br) : '.sp')
|
223
223
|
result << %(.RS 4
|
224
|
-
#{
|
224
|
+
#{enclose_content node}
|
225
225
|
.RE)
|
226
226
|
result.join LF
|
227
227
|
end
|
228
228
|
|
229
|
-
def
|
230
|
-
%(.SS "#{
|
229
|
+
def convert_floating_title node
|
230
|
+
%(.SS "#{manify node.title}")
|
231
231
|
end
|
232
232
|
|
233
|
-
def
|
233
|
+
def convert_image node
|
234
234
|
result = []
|
235
235
|
result << (node.title? ? %(.sp
|
236
|
-
.B #{
|
236
|
+
.B #{manify node.captioned_title}
|
237
237
|
.br) : '.sp')
|
238
238
|
result << %([#{node.alt}])
|
239
239
|
result.join LF
|
240
240
|
end
|
241
241
|
|
242
|
-
def
|
242
|
+
def convert_listing node
|
243
243
|
result = []
|
244
244
|
result << %(.sp
|
245
|
-
.B #{
|
245
|
+
.B #{manify node.captioned_title}
|
246
246
|
.br) if node.title?
|
247
247
|
result << %(.sp
|
248
248
|
.if n .RS 4
|
249
249
|
.nf
|
250
|
-
#{
|
250
|
+
#{manify node.content, whitespace: :preserve}
|
251
251
|
.fi
|
252
252
|
.if n .RE)
|
253
253
|
result.join LF
|
254
254
|
end
|
255
255
|
|
256
|
-
def
|
256
|
+
def convert_literal node
|
257
257
|
result = []
|
258
258
|
result << %(.sp
|
259
|
-
.B #{
|
259
|
+
.B #{manify node.title}
|
260
260
|
.br) if node.title?
|
261
261
|
result << %(.sp
|
262
262
|
.if n .RS 4
|
263
263
|
.nf
|
264
|
-
#{
|
264
|
+
#{manify node.content, whitespace: :preserve}
|
265
265
|
.fi
|
266
266
|
.if n .RE)
|
267
267
|
result.join LF
|
268
268
|
end
|
269
269
|
|
270
|
-
def
|
270
|
+
def convert_sidebar node
|
271
271
|
result = []
|
272
272
|
result << (node.title? ? %(.sp
|
273
|
-
.B #{
|
273
|
+
.B #{manify node.title}
|
274
274
|
.br) : '.sp')
|
275
275
|
result << %(.RS 4
|
276
|
-
#{
|
276
|
+
#{enclose_content node}
|
277
277
|
.RE)
|
278
278
|
result.join LF
|
279
279
|
end
|
280
280
|
|
281
|
-
def
|
281
|
+
def convert_olist node
|
282
282
|
result = []
|
283
283
|
result << %(.sp
|
284
|
-
.B #{
|
284
|
+
.B #{manify node.title}
|
285
285
|
.br) if node.title?
|
286
286
|
|
287
287
|
node.items.each_with_index do |item, idx|
|
@@ -294,46 +294,46 @@ r lw(\n(.lu*75u/100u).'
|
|
294
294
|
. sp -1
|
295
295
|
. IP " #{idx + 1}." 4.2
|
296
296
|
.\\}
|
297
|
-
#{
|
297
|
+
#{manify item.text, whitespace: :normalize})
|
298
298
|
result << item.content if item.blocks?
|
299
299
|
result << '.RE'
|
300
300
|
end
|
301
301
|
result.join LF
|
302
302
|
end
|
303
303
|
|
304
|
-
def
|
304
|
+
def convert_open node
|
305
305
|
case node.style
|
306
306
|
when 'abstract', 'partintro'
|
307
|
-
|
307
|
+
enclose_content node
|
308
308
|
else
|
309
309
|
node.content
|
310
310
|
end
|
311
311
|
end
|
312
312
|
|
313
313
|
# TODO use Page Control https://www.gnu.org/software/groff/manual/html_node/Page-Control.html#Page-Control
|
314
|
-
alias
|
314
|
+
alias convert_page_break skip
|
315
315
|
|
316
|
-
def
|
316
|
+
def convert_paragraph node
|
317
317
|
if node.title?
|
318
318
|
%(.sp
|
319
|
-
.B #{
|
319
|
+
.B #{manify node.title}
|
320
320
|
.br
|
321
|
-
#{
|
321
|
+
#{manify node.content, whitespace: :normalize})
|
322
322
|
else
|
323
323
|
%(.sp
|
324
|
-
#{
|
324
|
+
#{manify node.content, whitespace: :normalize})
|
325
325
|
end
|
326
326
|
end
|
327
327
|
|
328
|
-
alias
|
329
|
-
alias
|
328
|
+
alias convert_pass content_only
|
329
|
+
alias convert_preamble content_only
|
330
330
|
|
331
|
-
def
|
331
|
+
def convert_quote node
|
332
332
|
result = []
|
333
333
|
if node.title?
|
334
334
|
result << %(.sp
|
335
335
|
.RS 3
|
336
|
-
.B #{
|
336
|
+
.B #{manify node.title}
|
337
337
|
.br
|
338
338
|
.RE)
|
339
339
|
end
|
@@ -341,7 +341,7 @@ r lw(\n(.lu*75u/100u).'
|
|
341
341
|
attribution_line = (node.attr? 'attribution') ? %[#{attribution_line}\\(em #{node.attr 'attribution'}] : nil
|
342
342
|
result << %(.RS 3
|
343
343
|
.ll -.6i
|
344
|
-
#{
|
344
|
+
#{enclose_content node}
|
345
345
|
.br
|
346
346
|
.RE
|
347
347
|
.ll)
|
@@ -355,16 +355,16 @@ r lw(\n(.lu*75u/100u).'
|
|
355
355
|
result.join LF
|
356
356
|
end
|
357
357
|
|
358
|
-
def
|
358
|
+
def convert_stem node
|
359
359
|
result = []
|
360
360
|
result << (node.title? ? %(.sp
|
361
|
-
.B #{
|
361
|
+
.B #{manify node.title}
|
362
362
|
.br) : '.sp')
|
363
363
|
open, close = BLOCK_MATH_DELIMITERS[node.style.to_sym]
|
364
364
|
if ((equation = node.content).start_with? open) && (equation.end_with? close)
|
365
365
|
equation = equation.slice open.length, equation.length - open.length - close.length
|
366
366
|
end
|
367
|
-
result << %(#{
|
367
|
+
result << %(#{manify equation, whitespace: :preserve} (#{node.style}))
|
368
368
|
result.join LF
|
369
369
|
end
|
370
370
|
|
@@ -374,7 +374,7 @@ r lw(\n(.lu*75u/100u).'
|
|
374
374
|
# create empty cells as placeholders of the span.
|
375
375
|
# To fix this, asciidoctor needs to provide an API to tell the user if a
|
376
376
|
# given cell is being used as a colspan or rowspan.
|
377
|
-
def
|
377
|
+
def convert_table node
|
378
378
|
result = []
|
379
379
|
if node.title?
|
380
380
|
result << %(.sp
|
@@ -382,7 +382,7 @@ r lw(\n(.lu*75u/100u).'
|
|
382
382
|
.nr an-no-space-flag 1
|
383
383
|
.nr an-break-flag 1
|
384
384
|
.br
|
385
|
-
.B #{
|
385
|
+
.B #{manify node.captioned_title}
|
386
386
|
)
|
387
387
|
end
|
388
388
|
result << '.TS
|
@@ -419,7 +419,7 @@ allbox tab(:);'
|
|
419
419
|
row_header[row_index][cell_index + 1] ||= []
|
420
420
|
row_header[row_index][cell_index + 1] << %(#{cell_halign}tB)
|
421
421
|
end
|
422
|
-
row_text[row_index] << %(#{
|
422
|
+
row_text[row_index] << %(#{manify cell.text, whitespace: :normalize}#{LF})
|
423
423
|
elsif tsec == :body
|
424
424
|
if row_header[row_index].empty? || row_header[row_index][cell_index].empty?
|
425
425
|
row_header[row_index][cell_index] << %(#{cell_halign}t)
|
@@ -431,9 +431,9 @@ allbox tab(:);'
|
|
431
431
|
when :asciidoc
|
432
432
|
cell_content = cell.content
|
433
433
|
when :literal
|
434
|
-
cell_content = %(.nf#{LF}#{
|
434
|
+
cell_content = %(.nf#{LF}#{manify cell.text, whitespace: :preserve}#{LF}.fi)
|
435
435
|
else
|
436
|
-
cell_content =
|
436
|
+
cell_content = manify cell.content.join, whitespace: :normalize
|
437
437
|
end
|
438
438
|
row_text[row_index] << %(#{cell_content}#{LF})
|
439
439
|
elsif tsec == :foot
|
@@ -443,7 +443,7 @@ allbox tab(:);'
|
|
443
443
|
row_header[row_index][cell_index + 1] ||= []
|
444
444
|
row_header[row_index][cell_index + 1] << %(#{cell_halign}tB)
|
445
445
|
end
|
446
|
-
row_text[row_index] << %(#{
|
446
|
+
row_text[row_index] << %(#{manify cell.text, whitespace: :normalize}#{LF})
|
447
447
|
end
|
448
448
|
if cell.colspan && cell.colspan > 1
|
449
449
|
(cell.colspan - 1).times do |i|
|
@@ -496,18 +496,18 @@ allbox tab(:);'
|
|
496
496
|
result.join
|
497
497
|
end
|
498
498
|
|
499
|
-
def
|
499
|
+
def convert_thematic_break node
|
500
500
|
'.sp
|
501
501
|
.ce
|
502
502
|
\l\'\n(.lu*25u/100u\(ap\''
|
503
503
|
end
|
504
504
|
|
505
|
-
alias
|
505
|
+
alias convert_toc skip
|
506
506
|
|
507
|
-
def
|
507
|
+
def convert_ulist node
|
508
508
|
result = []
|
509
509
|
result << %(.sp
|
510
|
-
.B #{
|
510
|
+
.B #{manify node.title}
|
511
511
|
.br) if node.title?
|
512
512
|
node.items.map do |item|
|
513
513
|
result << %[.sp
|
@@ -519,7 +519,7 @@ allbox tab(:);'
|
|
519
519
|
. sp -1
|
520
520
|
. IP \\(bu 2.3
|
521
521
|
.\\}
|
522
|
-
#{
|
522
|
+
#{manify item.text, whitespace: :normalize}]
|
523
523
|
result << item.content if item.blocks?
|
524
524
|
result << '.RE'
|
525
525
|
end
|
@@ -527,16 +527,16 @@ allbox tab(:);'
|
|
527
527
|
end
|
528
528
|
|
529
529
|
# FIXME git uses [verse] for the synopsis; detect this special case
|
530
|
-
def
|
530
|
+
def convert_verse node
|
531
531
|
result = []
|
532
532
|
result << (node.title? ? %(.sp
|
533
|
-
.B #{
|
533
|
+
.B #{manify node.title}
|
534
534
|
.br) : '.sp')
|
535
535
|
attribution_line = (node.attr? 'citetitle') ? %(#{node.attr 'citetitle'} ) : nil
|
536
536
|
attribution_line = (node.attr? 'attribution') ? %[#{attribution_line}\\(em #{node.attr 'attribution'}] : nil
|
537
537
|
result << %(.sp
|
538
538
|
.nf
|
539
|
-
#{
|
539
|
+
#{manify node.content, whitespace: :preserve}
|
540
540
|
.fi
|
541
541
|
.br)
|
542
542
|
if attribution_line
|
@@ -549,18 +549,18 @@ allbox tab(:);'
|
|
549
549
|
result.join LF
|
550
550
|
end
|
551
551
|
|
552
|
-
def
|
552
|
+
def convert_video node
|
553
553
|
start_param = (node.attr? 'start') ? %(&start=#{node.attr 'start'}) : ''
|
554
554
|
end_param = (node.attr? 'end') ? %(&end=#{node.attr 'end'}) : ''
|
555
555
|
result = []
|
556
556
|
result << (node.title? ? %(.sp
|
557
|
-
.B #{
|
557
|
+
.B #{manify node.title}
|
558
558
|
.br) : '.sp')
|
559
559
|
result << %(<#{node.media_uri(node.attr 'target')}#{start_param}#{end_param}> (video))
|
560
560
|
result.join LF
|
561
561
|
end
|
562
562
|
|
563
|
-
def
|
563
|
+
def convert_inline_anchor node
|
564
564
|
target = node.target
|
565
565
|
case node.type
|
566
566
|
when :link
|
@@ -596,20 +596,20 @@ allbox tab(:);'
|
|
596
596
|
end
|
597
597
|
end
|
598
598
|
|
599
|
-
def
|
599
|
+
def convert_inline_break node
|
600
600
|
%(#{node.text}#{LF}#{ESC_FS}br)
|
601
601
|
end
|
602
602
|
|
603
|
-
def
|
603
|
+
def convert_inline_button node
|
604
604
|
%(#{ESC_BS}fB[#{ESC_BS}0#{node.text}#{ESC_BS}0]#{ESC_BS}fP)
|
605
605
|
end
|
606
606
|
|
607
|
-
def
|
607
|
+
def convert_inline_callout node
|
608
608
|
%(#{ESC_BS}fB(#{node.text})#{ESC_BS}fP)
|
609
609
|
end
|
610
610
|
|
611
611
|
# TODO supposedly groff has footnotes, but we're in search of an example
|
612
|
-
def
|
612
|
+
def convert_inline_footnote node
|
613
613
|
if (index = node.attr 'index')
|
614
614
|
%([#{index}])
|
615
615
|
elsif node.type == :xref
|
@@ -617,15 +617,15 @@ allbox tab(:);'
|
|
617
617
|
end
|
618
618
|
end
|
619
619
|
|
620
|
-
def
|
620
|
+
def convert_inline_image node
|
621
621
|
(node.attr? 'link') ? %([#{node.alt}] <#{node.attr 'link'}>) : %([#{node.alt}])
|
622
622
|
end
|
623
623
|
|
624
|
-
def
|
624
|
+
def convert_inline_indexterm node
|
625
625
|
node.type == :visible ? node.text : ''
|
626
626
|
end
|
627
627
|
|
628
|
-
def
|
628
|
+
def convert_inline_kbd node
|
629
629
|
if (keys = node.attr 'keys').size == 1
|
630
630
|
keys[0]
|
631
631
|
else
|
@@ -633,7 +633,7 @@ allbox tab(:);'
|
|
633
633
|
end
|
634
634
|
end
|
635
635
|
|
636
|
-
def
|
636
|
+
def convert_inline_menu node
|
637
637
|
caret = %[#{ESC_BS}0#{ESC_BS}(fc#{ESC_BS}0]
|
638
638
|
menu = node.attr 'menu'
|
639
639
|
if !(submenus = node.attr 'submenus').empty?
|
@@ -647,7 +647,7 @@ allbox tab(:);'
|
|
647
647
|
end
|
648
648
|
|
649
649
|
# NOTE use fake <BOUNDARY> element to prevent creating artificial word boundaries
|
650
|
-
def
|
650
|
+
def convert_inline_quoted node
|
651
651
|
case node.type
|
652
652
|
when :emphasis
|
653
653
|
%(#{ESC_BS}fI<BOUNDARY>#{node.text}</BOUNDARY>#{ESC_BS}fP)
|
@@ -680,7 +680,7 @@ allbox tab(:);'
|
|
680
680
|
# Converts HTML entity references back to their original form, escapes
|
681
681
|
# special man characters and strips trailing whitespace.
|
682
682
|
#
|
683
|
-
# It's crucial that text only ever pass through
|
683
|
+
# It's crucial that text only ever pass through manify once.
|
684
684
|
#
|
685
685
|
# str - the String to convert
|
686
686
|
# opts - an Hash of options to control processing (default: {})
|
@@ -689,7 +689,7 @@ allbox tab(:);'
|
|
689
689
|
# (remove spaces around newlines); :collapse - collapse adjacent whitespace to a single
|
690
690
|
# space (default: :collapse)
|
691
691
|
# * :append_newline a Boolean that indicates whether to append a newline to the result (default: false)
|
692
|
-
def
|
692
|
+
def manify str, opts = {}
|
693
693
|
case opts.fetch :whitespace, :collapse
|
694
694
|
when :preserve
|
695
695
|
str = str.gsub TAB, ET
|
@@ -732,8 +732,8 @@ allbox tab(:);'
|
|
732
732
|
opts[:append_newline] ? %(#{str}#{LF}) : str
|
733
733
|
end
|
734
734
|
|
735
|
-
def
|
736
|
-
node.content_model == :compound ? node.content : %(.sp#{LF}#{
|
735
|
+
def enclose_content node
|
736
|
+
node.content_model == :compound ? node.content : %(.sp#{LF}#{manify node.content, whitespace: :normalize})
|
737
737
|
end
|
738
738
|
end
|
739
739
|
end
|