asciidoctor 2.0.15 → 2.0.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +38 -2
- data/LICENSE +1 -1
- data/README-de.adoc +3 -3
- data/README-fr.adoc +3 -3
- data/README-jp.adoc +3 -3
- data/README-zh_CN.adoc +3 -3
- data/README.adoc +2 -2
- data/asciidoctor.gemspec +1 -8
- data/data/locale/attributes-th.adoc +23 -0
- data/data/locale/attributes-vi.adoc +23 -0
- data/data/stylesheets/asciidoctor-default.css +50 -48
- data/lib/asciidoctor.rb +7 -7
- data/lib/asciidoctor/abstract_block.rb +4 -4
- data/lib/asciidoctor/abstract_node.rb +9 -8
- data/lib/asciidoctor/block.rb +6 -6
- data/lib/asciidoctor/cli/invoker.rb +0 -1
- data/lib/asciidoctor/cli/options.rb +22 -22
- data/lib/asciidoctor/convert.rb +1 -0
- data/lib/asciidoctor/converter.rb +5 -3
- data/lib/asciidoctor/converter/docbook5.rb +20 -22
- data/lib/asciidoctor/converter/html5.rb +70 -60
- data/lib/asciidoctor/converter/manpage.rb +61 -52
- data/lib/asciidoctor/converter/template.rb +11 -12
- data/lib/asciidoctor/document.rb +22 -37
- data/lib/asciidoctor/extensions.rb +10 -10
- data/lib/asciidoctor/list.rb +2 -6
- data/lib/asciidoctor/load.rb +10 -9
- data/lib/asciidoctor/logging.rb +10 -8
- data/lib/asciidoctor/parser.rb +122 -141
- data/lib/asciidoctor/path_resolver.rb +3 -3
- data/lib/asciidoctor/reader.rb +67 -68
- data/lib/asciidoctor/rx.rb +2 -1
- data/lib/asciidoctor/substitutors.rb +97 -99
- data/lib/asciidoctor/syntax_highlighter.rb +8 -11
- data/lib/asciidoctor/syntax_highlighter/coderay.rb +2 -1
- data/lib/asciidoctor/syntax_highlighter/highlightjs.rb +1 -1
- data/lib/asciidoctor/syntax_highlighter/pygments.rb +2 -1
- data/lib/asciidoctor/syntax_highlighter/rouge.rb +2 -1
- data/lib/asciidoctor/table.rb +17 -19
- data/lib/asciidoctor/timings.rb +3 -3
- data/lib/asciidoctor/version.rb +1 -1
- data/man/asciidoctor.1 +8 -9
- data/man/asciidoctor.adoc +7 -6
- metadata +7 -61
@@ -99,9 +99,10 @@ module SyntaxHighlighter
|
|
99
99
|
raise ::NotImplementedError, %(#{SyntaxHighlighter} subclass #{self.class} must implement the ##{__method__} method since #write_stylesheet? returns true)
|
100
100
|
end
|
101
101
|
|
102
|
-
|
102
|
+
def self.included into
|
103
103
|
into.extend Config
|
104
|
-
end
|
104
|
+
end
|
105
|
+
private_class_method :included # use separate declaration for Ruby 2.0.x
|
105
106
|
|
106
107
|
module Config
|
107
108
|
# Public: Statically register the current class in the registry for the specified names.
|
@@ -152,7 +153,7 @@ module SyntaxHighlighter
|
|
152
153
|
end
|
153
154
|
|
154
155
|
private
|
155
|
-
|
156
|
+
|
156
157
|
def registry
|
157
158
|
raise ::NotImplementedError, %(#{Factory} subclass #{self.class} must implement the ##{__method__} method)
|
158
159
|
end
|
@@ -166,19 +167,17 @@ module SyntaxHighlighter
|
|
166
167
|
end
|
167
168
|
|
168
169
|
private
|
169
|
-
|
170
|
-
|
171
|
-
@registry
|
172
|
-
end
|
170
|
+
|
171
|
+
attr_reader :registry
|
173
172
|
end
|
174
173
|
|
175
174
|
module DefaultFactory
|
176
175
|
include Factory
|
177
176
|
|
178
|
-
private
|
179
|
-
|
180
177
|
@@registry = {}
|
181
178
|
|
179
|
+
private
|
180
|
+
|
182
181
|
def registry
|
183
182
|
@@registry
|
184
183
|
end
|
@@ -216,8 +215,6 @@ module SyntaxHighlighter
|
|
216
215
|
'rouge' => %(#{__dir__}/syntax_highlighter/rouge),
|
217
216
|
}
|
218
217
|
|
219
|
-
private
|
220
|
-
|
221
218
|
@@mutex = ::Mutex.new
|
222
219
|
end
|
223
220
|
end
|
@@ -78,7 +78,8 @@ class SyntaxHighlighter::CodeRayAdapter < SyntaxHighlighter::Base
|
|
78
78
|
end
|
79
79
|
|
80
80
|
extend Styles # exports static methods
|
81
|
-
include
|
81
|
+
include Styles # adds methods to instance
|
82
|
+
include Loader # adds methods to instance
|
82
83
|
|
83
84
|
CodeCellStartTagCs = '<td class="code"><pre>'
|
84
85
|
|
@@ -9,7 +9,7 @@ class SyntaxHighlighter::HighlightJsAdapter < SyntaxHighlighter::Base
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def format node, lang, opts
|
12
|
-
super node, lang, (opts.merge transform: proc {|_, code| code['class'] = %(language-#{lang || 'none'} hljs) }
|
12
|
+
super node, lang, (opts.merge transform: proc {|_, code| code['class'] = %(language-#{lang || 'none'} hljs) })
|
13
13
|
end
|
14
14
|
|
15
15
|
def docinfo? location
|
@@ -129,7 +129,8 @@ class SyntaxHighlighter::PygmentsAdapter < SyntaxHighlighter::Base
|
|
129
129
|
end
|
130
130
|
|
131
131
|
extend Styles # exports static methods
|
132
|
-
include
|
132
|
+
include Styles # adds methods to instance
|
133
|
+
include Loader # adds methods to instance
|
133
134
|
|
134
135
|
CodeCellStartTagCs = '<td class="code">'
|
135
136
|
LinenoColumnStartTagsCs = '<td class="linenos"><div class="linenodiv"><pre>'
|
@@ -133,7 +133,8 @@ class SyntaxHighlighter::RougeAdapter < SyntaxHighlighter::Base
|
|
133
133
|
end
|
134
134
|
|
135
135
|
extend Styles # exports static methods
|
136
|
-
include
|
136
|
+
include Styles # adds methods to instance
|
137
|
+
include Loader # adds methods to instance
|
137
138
|
|
138
139
|
CodeCellStartTagCs = '<td class="code">'
|
139
140
|
|
data/lib/asciidoctor/table.rb
CHANGED
@@ -259,7 +259,8 @@ class Table::Cell < AbstractBlock
|
|
259
259
|
cell_style = attributes['style'] || cell_style unless in_header_row
|
260
260
|
update_attributes attributes
|
261
261
|
end
|
262
|
-
|
262
|
+
case cell_style
|
263
|
+
when :asciidoc
|
263
264
|
asciidoc = true
|
264
265
|
inner_document_cursor = opts[:cursor]
|
265
266
|
if (cell_text = cell_text.rstrip).start_with? LF
|
@@ -270,7 +271,7 @@ class Table::Cell < AbstractBlock
|
|
270
271
|
else
|
271
272
|
cell_text = cell_text.lstrip
|
272
273
|
end
|
273
|
-
|
274
|
+
when :literal
|
274
275
|
literal = true
|
275
276
|
cell_text = cell_text.rstrip
|
276
277
|
# QUESTION should we use same logic as :asciidoc cell? strip leading space if text doesn't start with newline?
|
@@ -357,14 +358,10 @@ class Table::Cell < AbstractBlock
|
|
357
358
|
apply_subs @text, @subs
|
358
359
|
end
|
359
360
|
|
360
|
-
# Public: Set the String text.
|
361
|
+
# Public: Set the String text for this cell.
|
361
362
|
#
|
362
363
|
# This method shouldn't be used for cells that have the AsciiDoc style.
|
363
|
-
|
364
|
-
# Returns the new String text assigned to this Cell
|
365
|
-
def text= val
|
366
|
-
@text = val
|
367
|
-
end
|
364
|
+
attr_writer :text
|
368
365
|
|
369
366
|
# Public: Handles the body data (tbody, tfoot), applying styles and partitioning into paragraphs
|
370
367
|
#
|
@@ -406,7 +403,7 @@ class Table::Cell < AbstractBlock
|
|
406
403
|
end
|
407
404
|
|
408
405
|
def to_s
|
409
|
-
|
406
|
+
%(#{super} - [text: #{@text}, colspan: #{@colspan || 1}, rowspan: #{@rowspan || 1}, attributes: #{@attributes}])
|
410
407
|
end
|
411
408
|
end
|
412
409
|
|
@@ -534,12 +531,13 @@ class Table::ParserContext
|
|
534
531
|
#
|
535
532
|
# returns true if the buffer has unclosed quotes, false if it doesn't or it
|
536
533
|
# isn't quoted data
|
537
|
-
def buffer_has_unclosed_quotes? append = nil
|
538
|
-
if (record = append ? (@buffer + append).strip : @buffer.strip) ==
|
534
|
+
def buffer_has_unclosed_quotes? append = nil, q = '"'
|
535
|
+
if (record = append ? (@buffer + append).strip : @buffer.strip) == q
|
539
536
|
true
|
540
|
-
elsif record.start_with?
|
541
|
-
|
542
|
-
|
537
|
+
elsif record.start_with? q
|
538
|
+
qq = q + q
|
539
|
+
if ((trailing_quote = record.end_with? q) && (record.end_with? qq)) || (record.start_with? qq)
|
540
|
+
((record = record.gsub qq, '').start_with? q) && !(record.end_with? q)
|
543
541
|
else
|
544
542
|
!trailing_quote
|
545
543
|
end
|
@@ -632,20 +630,20 @@ class Table::ParserContext
|
|
632
630
|
@buffer = ''
|
633
631
|
cellspec = nil
|
634
632
|
repeat = 1
|
635
|
-
if @format == 'csv' && !cell_text.empty? && cell_text.include?('"')
|
633
|
+
if @format == 'csv' && !cell_text.empty? && (cell_text.include? (q = '"'))
|
636
634
|
# this may not be perfect logic, but it hits the 99%
|
637
|
-
if cell_text.start_with?
|
635
|
+
if (cell_text.start_with? q) && (cell_text.end_with? q)
|
638
636
|
# unquote
|
639
637
|
if (cell_text = cell_text.slice(1, cell_text.length - 2))
|
640
638
|
# trim whitespace and collapse escaped quotes
|
641
|
-
cell_text = cell_text.strip.squeeze
|
639
|
+
cell_text = cell_text.strip.squeeze q
|
642
640
|
else
|
643
641
|
logger.error message_with_context 'unclosed quote in CSV data; setting cell to empty', source_location: @reader.cursor_at_prev_line
|
644
642
|
cell_text = ''
|
645
643
|
end
|
646
644
|
else
|
647
645
|
# collapse escaped quotes
|
648
|
-
cell_text = cell_text.squeeze
|
646
|
+
cell_text = cell_text.squeeze q
|
649
647
|
end
|
650
648
|
end
|
651
649
|
end
|
@@ -664,7 +662,7 @@ class Table::ParserContext
|
|
664
662
|
# QUESTION is this right for cells that span columns?
|
665
663
|
unless (column = @table.columns[@current_row.size])
|
666
664
|
logger.error message_with_context 'dropping cell because it exceeds specified number of columns', source_location: @reader.cursor_before_mark
|
667
|
-
return
|
665
|
+
return nil
|
668
666
|
end
|
669
667
|
end
|
670
668
|
|
data/lib/asciidoctor/timings.rb
CHANGED
@@ -49,9 +49,9 @@ module Asciidoctor
|
|
49
49
|
|
50
50
|
def print_report to = $stdout, subject = nil
|
51
51
|
to.puts %(Input file: #{subject}) if subject
|
52
|
-
to.puts %( Time to read and parse source: #{'%05.5f'
|
53
|
-
to.puts %( Time to convert document: #{'%05.5f'
|
54
|
-
to.puts %( Total time (read, parse and convert): #{'%05.5f'
|
52
|
+
to.puts %( Time to read and parse source: #{sprintf '%05.5f', read_parse.to_f})
|
53
|
+
to.puts %( Time to convert document: #{sprintf '%05.5f', convert.to_f})
|
54
|
+
to.puts %( Total time (read, parse and convert): #{sprintf '%05.5f', read_parse_convert.to_f})
|
55
55
|
end
|
56
56
|
|
57
57
|
private
|
data/lib/asciidoctor/version.rb
CHANGED
data/man/asciidoctor.1
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
'\" t
|
2
2
|
.\" Title: asciidoctor
|
3
3
|
.\" Author: Dan Allen, Sarah White, Ryan Waldron
|
4
|
-
.\" Generator: Asciidoctor 2.0.
|
5
|
-
.\" Date: 2021-
|
4
|
+
.\" Generator: Asciidoctor 2.0.16
|
5
|
+
.\" Date: 2021-08-03
|
6
6
|
.\" Manual: Asciidoctor Manual
|
7
|
-
.\" Source: Asciidoctor 2.0.
|
7
|
+
.\" Source: Asciidoctor 2.0.16
|
8
8
|
.\" Language: English
|
9
9
|
.\"
|
10
|
-
.TH "ASCIIDOCTOR" "1" "2021-
|
10
|
+
.TH "ASCIIDOCTOR" "1" "2021-08-03" "Asciidoctor 2.0.16" "Asciidoctor Manual"
|
11
11
|
.ie \n(.g .ds Aq \(aq
|
12
12
|
.el .ds Aq '
|
13
13
|
.ss \n[.ss] 0
|
@@ -109,11 +109,10 @@ This name is also used to build the full path to the custom converter templates.
|
|
109
109
|
If a template engine is not specified, it will be auto\-detected based on the file extension of the custom converter templates found.
|
110
110
|
.RE
|
111
111
|
.sp
|
112
|
-
\fB\-e, \-\-
|
112
|
+
\fB\-e, \-\-embedded\fP
|
113
113
|
.RS 4
|
114
|
-
|
115
|
-
|
116
|
-
Defaults to \fIerb\fP.
|
114
|
+
Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document.
|
115
|
+
This option is useful for producing documents that can be inserted into an external template.
|
117
116
|
.RE
|
118
117
|
.sp
|
119
118
|
\fB\-I, \-\-load\-path\fP=\fIDIRECTORY\fP
|
@@ -257,7 +256,7 @@ Refer to the \fBAsciidoctor\fP issue tracker at \c
|
|
257
256
|
.URL "http://discuss.asciidoctor.org" "" ""
|
258
257
|
.SH "COPYING"
|
259
258
|
.sp
|
260
|
-
Copyright (C) 2012\-
|
259
|
+
Copyright (C) 2012\-present Dan Allen, Ryan Waldron, and the Asciidoctor Project.
|
261
260
|
Free use of this software is granted under the terms of the MIT License.
|
262
261
|
.SH "AUTHORS"
|
263
262
|
.sp
|
data/man/asciidoctor.adoc
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
= asciidoctor(1)
|
2
2
|
Dan Allen; Sarah White; Ryan Waldron
|
3
3
|
:doctype: manpage
|
4
|
-
:release-version: 2.0.
|
4
|
+
:release-version: 2.0.16
|
5
5
|
:man manual: Asciidoctor Manual
|
6
6
|
:man source: Asciidoctor {release-version}
|
7
7
|
:page-layout: base
|
@@ -22,6 +22,7 @@ If _FILE_ is _-_ then the AsciiDoc source is read from standard input.
|
|
22
22
|
|
23
23
|
== OPTIONS
|
24
24
|
|
25
|
+
// tag::options[]
|
25
26
|
=== Security Settings
|
26
27
|
|
27
28
|
*-B, --base-dir*=_DIR_::
|
@@ -79,10 +80,9 @@ This option may be specified more than once.
|
|
79
80
|
This name is also used to build the full path to the custom converter templates.
|
80
81
|
If a template engine is not specified, it will be auto-detected based on the file extension of the custom converter templates found.
|
81
82
|
|
82
|
-
*-e, --
|
83
|
-
|
84
|
-
|
85
|
-
Defaults to _erb_.
|
83
|
+
*-e, --embedded*::
|
84
|
+
Output an embeddable document, which excludes the header, the footer, and everything outside the body of the document.
|
85
|
+
This option is useful for producing documents that can be inserted into an external template.
|
86
86
|
|
87
87
|
*-I, --load-path*=_DIRECTORY_::
|
88
88
|
Add the specified directory to the load path, so that _-r_ can load extensions from outside the default Ruby load path.
|
@@ -155,6 +155,7 @@ Matching templates found in subsequent directories override ones previously disc
|
|
155
155
|
Print program version number.
|
156
156
|
+
|
157
157
|
*-v* can also be used if no source files are specified.
|
158
|
+
// end::options[]
|
158
159
|
|
159
160
|
== ENVIRONMENT
|
160
161
|
|
@@ -192,5 +193,5 @@ Refer to the *Asciidoctor* issue tracker at https://github.com/asciidoctor/ascii
|
|
192
193
|
|
193
194
|
== COPYING
|
194
195
|
|
195
|
-
Copyright \(C) 2012-
|
196
|
+
Copyright \(C) 2012-present Dan Allen, Ryan Waldron, and the Asciidoctor Project.
|
196
197
|
Free use of this software is granted under the terms of the MIT License.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Allen
|
@@ -13,36 +13,8 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2021-
|
16
|
+
date: 2021-08-03 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
|
-
- !ruby/object:Gem::Dependency
|
19
|
-
name: asciimath
|
20
|
-
requirement: !ruby/object:Gem::Requirement
|
21
|
-
requirements:
|
22
|
-
- - "~>"
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: 2.0.0
|
25
|
-
type: :development
|
26
|
-
prerelease: false
|
27
|
-
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
requirements:
|
29
|
-
- - "~>"
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: 2.0.0
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: coderay
|
34
|
-
requirement: !ruby/object:Gem::Requirement
|
35
|
-
requirements:
|
36
|
-
- - "~>"
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: 1.1.0
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - "~>"
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 1.1.0
|
46
18
|
- !ruby/object:Gem::Dependency
|
47
19
|
name: concurrent-ruby
|
48
20
|
requirement: !ruby/object:Gem::Requirement
|
@@ -105,14 +77,14 @@ dependencies:
|
|
105
77
|
requirements:
|
106
78
|
- - "~>"
|
107
79
|
- !ruby/object:Gem::Version
|
108
|
-
version: 5.
|
80
|
+
version: 5.14.0
|
109
81
|
type: :development
|
110
82
|
prerelease: false
|
111
83
|
version_requirements: !ruby/object:Gem::Requirement
|
112
84
|
requirements:
|
113
85
|
- - "~>"
|
114
86
|
- !ruby/object:Gem::Version
|
115
|
-
version: 5.
|
87
|
+
version: 5.14.0
|
116
88
|
- !ruby/object:Gem::Dependency
|
117
89
|
name: nokogiri
|
118
90
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,34 +113,6 @@ dependencies:
|
|
141
113
|
- - "~>"
|
142
114
|
- !ruby/object:Gem::Version
|
143
115
|
version: 12.3.0
|
144
|
-
- !ruby/object:Gem::Dependency
|
145
|
-
name: rouge
|
146
|
-
requirement: !ruby/object:Gem::Requirement
|
147
|
-
requirements:
|
148
|
-
- - "~>"
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: 3.26.0
|
151
|
-
type: :development
|
152
|
-
prerelease: false
|
153
|
-
version_requirements: !ruby/object:Gem::Requirement
|
154
|
-
requirements:
|
155
|
-
- - "~>"
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: 3.26.0
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
|
-
name: rspec-expectations
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
161
|
-
requirements:
|
162
|
-
- - "~>"
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version: 3.8.0
|
165
|
-
type: :development
|
166
|
-
prerelease: false
|
167
|
-
version_requirements: !ruby/object:Gem::Requirement
|
168
|
-
requirements:
|
169
|
-
- - "~>"
|
170
|
-
- !ruby/object:Gem::Version
|
171
|
-
version: 3.8.0
|
172
116
|
- !ruby/object:Gem::Dependency
|
173
117
|
name: slim
|
174
118
|
requirement: !ruby/object:Gem::Requirement
|
@@ -244,8 +188,10 @@ files:
|
|
244
188
|
- data/locale/attributes-sr.adoc
|
245
189
|
- data/locale/attributes-sr_Latn.adoc
|
246
190
|
- data/locale/attributes-sv.adoc
|
191
|
+
- data/locale/attributes-th.adoc
|
247
192
|
- data/locale/attributes-tr.adoc
|
248
193
|
- data/locale/attributes-uk.adoc
|
194
|
+
- data/locale/attributes-vi.adoc
|
249
195
|
- data/locale/attributes-zh_CN.adoc
|
250
196
|
- data/locale/attributes-zh_TW.adoc
|
251
197
|
- data/locale/attributes.adoc
|
@@ -325,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
325
271
|
- !ruby/object:Gem::Version
|
326
272
|
version: '0'
|
327
273
|
requirements: []
|
328
|
-
rubygems_version: 3.2.
|
274
|
+
rubygems_version: 3.2.22
|
329
275
|
signing_key:
|
330
276
|
specification_version: 4
|
331
277
|
summary: An implementation of the AsciiDoc text processor and publishing toolchain
|