asciidoctor 2.0.5 → 2.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +13 -0
- data/README-de.adoc +2 -2
- data/README-fr.adoc +2 -2
- data/README-jp.adoc +2 -2
- data/README-zh_CN.adoc +2 -2
- data/README.adoc +2 -2
- data/lib/asciidoctor.rb +5 -3
- data/lib/asciidoctor/abstract_node.rb +9 -8
- data/lib/asciidoctor/converter/html5.rb +5 -2
- data/lib/asciidoctor/document.rb +1 -1
- data/lib/asciidoctor/helpers.rb +43 -3
- data/lib/asciidoctor/reader.rb +9 -9
- data/lib/asciidoctor/substitutors.rb +12 -6
- data/lib/asciidoctor/version.rb +1 -1
- data/man/asciidoctor.1 +4 -4
- data/man/asciidoctor.adoc +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9066105e2eb3a4a1eef1b7e03730a3daa81e6b0abcfebef789e5c02e4a070db8
|
4
|
+
data.tar.gz: 902d0e58872adbafcd81a6faa7373b4e207ad5596ec37f3d1a01a6e83fabfac2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a77b68c94c63ba1f783cc1e2af7ead46415a8f49f85195f7367f94506b12d1ad19310b142249d534cc61513633ba4ba8e931e744922f4a3bfe92e9b0e9e4d97d
|
7
|
+
data.tar.gz: d0a13bb0dfe883cb0a8e6ae949e3f6178de75f57d6d6a35f90ee5954f8b85faa6c76b0c3244a07aca43478daab789a33b3f780faa1e083b27bba5a1eb9f5cf74
|
data/CHANGELOG.adoc
CHANGED
@@ -13,6 +13,19 @@ endif::[]
|
|
13
13
|
This document provides a high-level view of the changes introduced in Asciidoctor by release.
|
14
14
|
For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub.
|
15
15
|
|
16
|
+
== 2.0.6 (2019-04-04) - @mojavelinux
|
17
|
+
|
18
|
+
Bug Fixes::
|
19
|
+
|
20
|
+
* assume implicit AsciiDoc extension on interdoc xref macro target with no extension (e.g., `document#`); restores 1.5.x behavior (#3231)
|
21
|
+
* don't fail to load application if call to Dir.home fails; use a rescue with fallback values (#3238)
|
22
|
+
* Helpers.rootname should only consider final path segment when dropping file extension
|
23
|
+
|
24
|
+
Improvements::
|
25
|
+
|
26
|
+
* implement Helpers.extname as a more efficient and flexible File.extname method
|
27
|
+
* check for AsciiDoc file extension using end_with? instead of resolving the extname and using a lookup
|
28
|
+
|
16
29
|
== 2.0.5 (2019-04-01) - @mojavelinux
|
17
30
|
|
18
31
|
Bug Fixes::
|
data/README-de.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>; Ryan Waldron <https://github.com/erebor[@erebor]>
|
3
|
-
v2.0.
|
3
|
+
v2.0.6, 2019-04-04
|
4
4
|
// settings:
|
5
5
|
:idprefix:
|
6
6
|
:idseparator: -
|
@@ -17,7 +17,7 @@ ifdef::env-github[]
|
|
17
17
|
:warning-caption: :warning:
|
18
18
|
endif::[]
|
19
19
|
// Variables:
|
20
|
-
:release-version: 2.0.
|
20
|
+
:release-version: 2.0.6
|
21
21
|
// URIs:
|
22
22
|
:uri-org: https://github.com/asciidoctor
|
23
23
|
:uri-repo: {uri-org}/asciidoctor
|
data/README-fr.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>; Ryan Waldron <https://github.com/erebor[@erebor]>
|
3
|
-
v2.0.
|
3
|
+
v2.0.6, 2019-04-04
|
4
4
|
// settings:
|
5
5
|
:idprefix:
|
6
6
|
:idseparator: -
|
@@ -17,7 +17,7 @@ ifdef::env-github[]
|
|
17
17
|
:warning-caption: :warning:
|
18
18
|
endif::[]
|
19
19
|
// Variables:
|
20
|
-
:release-version: 2.0.
|
20
|
+
:release-version: 2.0.6
|
21
21
|
// URIs:
|
22
22
|
:uri-org: https://github.com/asciidoctor
|
23
23
|
:uri-repo: {uri-org}/asciidoctor
|
data/README-jp.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>; Ryan Waldron <https://github.com/erebor[@erebor]>
|
3
|
-
v2.0.
|
3
|
+
v2.0.6, 2019-04-04
|
4
4
|
// settings:
|
5
5
|
:page-layout: base
|
6
6
|
:idprefix:
|
@@ -18,7 +18,7 @@ ifdef::env-github[]
|
|
18
18
|
:warning-caption: :warning:
|
19
19
|
endif::[]
|
20
20
|
// Variables:
|
21
|
-
:release-version: 2.0.
|
21
|
+
:release-version: 2.0.6
|
22
22
|
// URIs:
|
23
23
|
:uri-org: https://github.com/asciidoctor
|
24
24
|
:uri-repo: {uri-org}/asciidoctor
|
data/README-zh_CN.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>; Ryan Waldron <https://github.com/erebor[@erebor]>
|
3
|
-
v2.0.
|
3
|
+
v2.0.6, 2019-04-04
|
4
4
|
// settings:
|
5
5
|
:page-layout: base
|
6
6
|
:idprefix:
|
@@ -18,7 +18,7 @@ ifdef::env-github[]
|
|
18
18
|
:warning-caption: :warning:
|
19
19
|
endif::[]
|
20
20
|
// Variables:
|
21
|
-
:release-version: 2.0.
|
21
|
+
:release-version: 2.0.6
|
22
22
|
// URIs:
|
23
23
|
:uri-org: https://github.com/asciidoctor
|
24
24
|
:uri-repo: {uri-org}/asciidoctor
|
data/README.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>; Ryan Waldron <https://github.com/erebor[@erebor]>
|
3
|
-
v2.0.
|
3
|
+
v2.0.6, 2019-04-04
|
4
4
|
// settings:
|
5
5
|
:idprefix:
|
6
6
|
:idseparator: -
|
@@ -17,7 +17,7 @@ ifdef::env-github[]
|
|
17
17
|
:warning-caption: :warning:
|
18
18
|
endif::[]
|
19
19
|
// Variables:
|
20
|
-
:release-version: 2.0.
|
20
|
+
:release-version: 2.0.6
|
21
21
|
// URIs:
|
22
22
|
:uri-org: https://github.com/asciidoctor
|
23
23
|
:uri-repo: {uri-org}/asciidoctor
|
data/lib/asciidoctor.rb
CHANGED
@@ -185,7 +185,8 @@ module Asciidoctor
|
|
185
185
|
DATA_DIR = ::File.join ROOT_DIR, 'data'
|
186
186
|
|
187
187
|
# The user's home directory, as best we can determine it
|
188
|
-
|
188
|
+
# IMPORTANT this rescue is required for running Asciidoctor on GitHub.com
|
189
|
+
USER_HOME = ::Dir.home rescue (::ENV['HOME'] || ::Dir.pwd)
|
189
190
|
|
190
191
|
# The newline character used for output; stored in constant table as an optimization
|
191
192
|
LF = ?\n
|
@@ -248,7 +249,8 @@ module Asciidoctor
|
|
248
249
|
'asciidoc' => '.adoc'
|
249
250
|
}
|
250
251
|
|
251
|
-
#
|
252
|
+
# A map of file extensions that are recognized as AsciiDoc documents
|
253
|
+
# TODO .txt should be deprecated
|
252
254
|
ASCIIDOC_EXTENSIONS = {
|
253
255
|
'.adoc' => true,
|
254
256
|
'.asciidoc' => true,
|
@@ -1278,7 +1280,7 @@ module Asciidoctor
|
|
1278
1280
|
# TODO cli checks if input path can be read and is file, but might want to add check to API too
|
1279
1281
|
attrs['docfile'] = input_path = ::File.absolute_path input.path
|
1280
1282
|
attrs['docdir'] = ::File.dirname input_path
|
1281
|
-
attrs['docname'] = Helpers.basename input_path, (attrs['docfilesuffix'] =
|
1283
|
+
attrs['docname'] = Helpers.basename input_path, (attrs['docfilesuffix'] = Helpers.extname input_path)
|
1282
1284
|
source = input.read
|
1283
1285
|
elsif input.respond_to? :read
|
1284
1286
|
# NOTE tty, pipes & sockets can't be rewound, but can't be sniffed easily either
|
@@ -280,11 +280,9 @@ class AbstractNode
|
|
280
280
|
# Returns A String reference or data URI for an icon image
|
281
281
|
def icon_uri name
|
282
282
|
if attr? 'icon'
|
283
|
-
|
284
|
-
if
|
285
|
-
|
286
|
-
icon = %(#{icon}.#{@document.attr 'icontype', 'png'})
|
287
|
-
end
|
283
|
+
icon = attr 'icon'
|
284
|
+
# QUESTION should we be adding the extension if the icon is an absolute URI?
|
285
|
+
icon = %(#{icon}.#{@document.attr 'icontype', 'png'}) unless Helpers.extname? icon
|
288
286
|
else
|
289
287
|
icon = %(#{name}.#{@document.attr 'icontype', 'png'})
|
290
288
|
end
|
@@ -359,9 +357,12 @@ class AbstractNode
|
|
359
357
|
#
|
360
358
|
# Returns A String data URI containing the content of the target image
|
361
359
|
def generate_data_uri(target_image, asset_dir_key = nil)
|
362
|
-
ext =
|
363
|
-
|
364
|
-
|
360
|
+
if (ext = Helpers.extname target_image, nil)
|
361
|
+
mimetype = ext == '.svg' ? 'image/svg+xml' : %(image/#{ext.slice 1, ext.length})
|
362
|
+
else
|
363
|
+
mimetype = 'application/octet-stream'
|
364
|
+
end
|
365
|
+
|
365
366
|
if asset_dir_key
|
366
367
|
image_path = normalize_system_path(target_image, @document.attr(asset_dir_key), nil, target_name: 'image')
|
367
368
|
else
|
@@ -105,9 +105,12 @@ class Converter::Html5Converter < Converter::Base
|
|
105
105
|
result << %(<meta name="copyright" content="#{node.attr 'copyright'}"#{slash}>) if node.attr? 'copyright'
|
106
106
|
if node.attr? 'favicon'
|
107
107
|
if (icon_href = node.attr 'favicon').empty?
|
108
|
-
icon_href
|
108
|
+
icon_href = 'favicon.ico'
|
109
|
+
icon_type = 'image/x-icon'
|
110
|
+
elsif (icon_ext = Helpers.extname icon_href, nil)
|
111
|
+
icon_type = icon_ext == '.ico' ? 'image/x-icon' : %(image/#{icon_ext.slice 1, icon_ext.length})
|
109
112
|
else
|
110
|
-
icon_type =
|
113
|
+
icon_type = 'image/x-icon'
|
111
114
|
end
|
112
115
|
result << %(<link rel="icon" type="#{icon_type}" href="#{icon_href}"#{slash}>)
|
113
116
|
end
|
data/lib/asciidoctor/document.rb
CHANGED
@@ -310,7 +310,7 @@ class Document < AbstractBlock
|
|
310
310
|
attr_overrides[key.downcase] = val
|
311
311
|
end
|
312
312
|
if (to_file = options[:to_file])
|
313
|
-
attr_overrides['outfilesuffix'] =
|
313
|
+
attr_overrides['outfilesuffix'] = Helpers.extname to_file
|
314
314
|
end
|
315
315
|
# safely resolve the safe mode from const, int or string
|
316
316
|
if !(safe_mode = options[:safe])
|
data/lib/asciidoctor/helpers.rb
CHANGED
@@ -159,7 +159,7 @@ module Helpers
|
|
159
159
|
|
160
160
|
# Public: Removes the file extension from filename and returns the result
|
161
161
|
#
|
162
|
-
# filename - The String file name to process
|
162
|
+
# filename - The String file name to process; expected to be a posix path
|
163
163
|
#
|
164
164
|
# Examples
|
165
165
|
#
|
@@ -168,7 +168,11 @@ module Helpers
|
|
168
168
|
#
|
169
169
|
# Returns the String filename with the file extension removed
|
170
170
|
def self.rootname filename
|
171
|
-
|
171
|
+
if (last_dot_idx = filename.rindex '.')
|
172
|
+
(filename.index '/', last_dot_idx) ? filename : (filename.slice 0, last_dot_idx)
|
173
|
+
else
|
174
|
+
filename
|
175
|
+
end
|
172
176
|
end
|
173
177
|
|
174
178
|
# Public: Retrieves the basename of the filename, optionally removing the extension, if present
|
@@ -188,12 +192,48 @@ module Helpers
|
|
188
192
|
# Returns the String filename with leading directories removed and, if specified, the extension removed
|
189
193
|
def self.basename filename, drop_ext = nil
|
190
194
|
if drop_ext
|
191
|
-
::File.basename filename, (drop_ext == true ? (
|
195
|
+
::File.basename filename, (drop_ext == true ? (extname filename) : drop_ext)
|
192
196
|
else
|
193
197
|
::File.basename filename
|
194
198
|
end
|
195
199
|
end
|
196
200
|
|
201
|
+
# Public: Returns whether this path has a file extension.
|
202
|
+
#
|
203
|
+
# path - The path String to check; expects a posix path
|
204
|
+
#
|
205
|
+
# Returns true if the path has a file extension, false otherwise
|
206
|
+
def self.extname? path
|
207
|
+
(last_dot_idx = path.rindex '.') && !(path.index '/', last_dot_idx)
|
208
|
+
end
|
209
|
+
|
210
|
+
# Public: Retrieves the file extension of the specified path. The file extension is the portion of the path in the
|
211
|
+
# last path segment starting from the last period.
|
212
|
+
#
|
213
|
+
# This method differs from File.extname in that it gives us control over the fallback value and is more efficient.
|
214
|
+
#
|
215
|
+
# path - The path String in which to look for a file extension
|
216
|
+
# fallback - The fallback String to return if no file extension is present (optional, default: '')
|
217
|
+
#
|
218
|
+
# Returns the String file extension (with the leading dot included) or the fallback value if the path has no file extension.
|
219
|
+
if ::File::ALT_SEPARATOR
|
220
|
+
def self.extname path, fallback = ''
|
221
|
+
if (last_dot_idx = path.rindex '.')
|
222
|
+
(path.index '/', last_dot_idx) || (path.index ::File::ALT_SEPARATOR, last_dot_idx) ? fallback : (path.slice last_dot_idx, path.length)
|
223
|
+
else
|
224
|
+
fallback
|
225
|
+
end
|
226
|
+
end
|
227
|
+
else
|
228
|
+
def self.extname path, fallback = ''
|
229
|
+
if (last_dot_idx = path.rindex '.')
|
230
|
+
(path.index '/', last_dot_idx) ? fallback : (path.slice last_dot_idx, path.length)
|
231
|
+
else
|
232
|
+
fallback
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
197
237
|
# Internal: Make a directory, ensuring all parent directories exist.
|
198
238
|
def self.mkdir_p dir
|
199
239
|
unless ::File.directory? dir
|
data/lib/asciidoctor/reader.rb
CHANGED
@@ -686,20 +686,20 @@ class PreprocessorReader < Reader
|
|
686
686
|
(@dir = file.dup).path = (dir = ::File.dirname file.path) == '/' ? '' : dir
|
687
687
|
file = file.to_s
|
688
688
|
end
|
689
|
-
path ||= ::File.basename file
|
689
|
+
@path = (path ||= ::File.basename file)
|
690
690
|
# only process lines in AsciiDoc files
|
691
|
-
@process_lines = ASCIIDOC_EXTENSIONS
|
691
|
+
if (@process_lines = file.end_with?(*ASCIIDOC_EXTENSIONS.keys))
|
692
|
+
@includes[path.slice 0, (path.rindex '.')] = attributes['partial-option'] ? nil : true
|
693
|
+
end
|
692
694
|
else
|
693
695
|
@dir = '.'
|
694
696
|
# we don't know what file type we have, so assume AsciiDoc
|
695
697
|
@process_lines = true
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
else
|
702
|
-
@path = '<stdin>'
|
698
|
+
if (@path = path)
|
699
|
+
@includes[Helpers.rootname path] = attributes['partial-option'] ? nil : true
|
700
|
+
else
|
701
|
+
@path = '<stdin>'
|
702
|
+
end
|
703
703
|
end
|
704
704
|
|
705
705
|
@lineno = lineno
|
@@ -751,20 +751,26 @@ module Substitutors
|
|
751
751
|
path = refid.chop
|
752
752
|
end
|
753
753
|
if macro
|
754
|
-
|
755
|
-
|
756
|
-
|
754
|
+
if path.end_with? '.adoc'
|
755
|
+
src2src = path = path.slice 0, path.length - 5
|
756
|
+
elsif !(Helpers.extname? path)
|
757
|
+
src2src = path
|
758
|
+
end
|
759
|
+
elsif path.end_with?(*ASCIIDOC_EXTENSIONS.keys)
|
760
|
+
src2src = path = path.slice 0, (path.rindex '.')
|
757
761
|
else
|
758
762
|
src2src = path
|
759
763
|
end
|
760
764
|
else
|
761
765
|
target, fragment = refid, (refid.slice 1, refid.length)
|
762
766
|
end
|
763
|
-
elsif macro
|
767
|
+
elsif macro
|
764
768
|
if refid.end_with? '.adoc'
|
765
|
-
src2src =
|
766
|
-
|
769
|
+
src2src = path = refid.slice 0, refid.length - 5
|
770
|
+
elsif Helpers.extname? refid
|
767
771
|
path = refid
|
772
|
+
else
|
773
|
+
fragment = refid
|
768
774
|
end
|
769
775
|
else
|
770
776
|
fragment = refid
|
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: 2019-04-
|
4
|
+
.\" Generator: Asciidoctor 2.0.6
|
5
|
+
.\" Date: 2019-04-04
|
6
6
|
.\" Manual: Asciidoctor Manual
|
7
|
-
.\" Source: Asciidoctor 2.0.
|
7
|
+
.\" Source: Asciidoctor 2.0.6
|
8
8
|
.\" Language: English
|
9
9
|
.\"
|
10
|
-
.TH "ASCIIDOCTOR" "1" "2019-04-
|
10
|
+
.TH "ASCIIDOCTOR" "1" "2019-04-04" "Asciidoctor 2.0.6" "Asciidoctor Manual"
|
11
11
|
.ie \n(.g .ds Aq \(aq
|
12
12
|
.el .ds Aq '
|
13
13
|
.ss \n[.ss] 0
|
data/man/asciidoctor.adoc
CHANGED
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Allen
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2019-04-
|
16
|
+
date: 2019-04-04 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: asciimath
|