asciidoctor-pdf 1.5.2 → 1.6.1
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/CHANGELOG.adoc +68 -1
- data/{LICENSE.adoc → LICENSE} +3 -4
- data/NOTICE.adoc +4 -6
- data/README.adoc +139 -46
- data/asciidoctor-pdf.gemspec +11 -14
- data/bin/asciidoctor-pdf-optimize +1 -1
- data/docs/theming-guide.adoc +26 -22
- data/lib/asciidoctor/pdf/converter.rb +88 -78
- data/lib/asciidoctor/pdf/ext/asciidoctor/section.rb +3 -2
- data/lib/asciidoctor/pdf/ext/core/file.rb +4 -5
- data/lib/asciidoctor/pdf/ext/core.rb +0 -1
- data/lib/asciidoctor/pdf/ext/pdf-core/pdf_object.rb +1 -1
- data/lib/asciidoctor/pdf/ext/pdf-core.rb +15 -0
- data/lib/asciidoctor/pdf/ext/prawn/coderay_encoder.rb +4 -13
- data/lib/asciidoctor/pdf/ext/prawn/extensions.rb +28 -2
- data/lib/asciidoctor/pdf/ext/prawn/font_metric_cache.rb +1 -1
- data/lib/asciidoctor/pdf/ext/prawn/formatted_text/arranger.rb +15 -0
- data/lib/asciidoctor/pdf/ext/prawn/formatted_text/box.rb +28 -7
- data/lib/asciidoctor/pdf/ext/prawn-svg.rb +0 -1
- data/lib/asciidoctor/pdf/ext/prawn.rb +1 -0
- data/lib/asciidoctor/pdf/ext/pygments.rb +11 -9
- data/lib/asciidoctor/pdf/ext.rb +0 -1
- data/lib/asciidoctor/pdf/formatted_text/fragment_position_renderer.rb +5 -1
- data/lib/asciidoctor/pdf/formatted_text/inline_image_arranger.rb +9 -2
- data/lib/asciidoctor/pdf/formatted_text/transform.rb +6 -4
- data/lib/asciidoctor/pdf/index_catalog.rb +1 -1
- data/lib/asciidoctor/pdf/optimizer.rb +40 -12
- data/lib/asciidoctor/pdf/pdfmark.rb +1 -2
- data/lib/asciidoctor/pdf/text_transformer.rb +10 -71
- data/lib/asciidoctor/pdf/theme_loader.rb +1 -1
- data/lib/asciidoctor/pdf/version.rb +1 -1
- data/lib/asciidoctor/pdf.rb +3 -0
- metadata +21 -63
- data/lib/asciidoctor/pdf/ext/core/numeric.rb +0 -26
- data/lib/asciidoctor/pdf/ext/prawn-svg/interface.rb +0 -14
- data/lib/asciidoctor/pdf/ext/prawn-templates.rb +0 -7
@@ -18,7 +18,7 @@ module Asciidoctor
|
|
18
18
|
creation_date = (::Time.parse doc.attr 'localdatetime') rescue (now || ::Time.now)
|
19
19
|
end
|
20
20
|
# FIXME: use sanitize: :plain_text once available
|
21
|
-
|
21
|
+
<<~EOS
|
22
22
|
[ /Title #{(sanitize doc.doctitle use_fallback: true).to_pdf_object}
|
23
23
|
/Author #{(doc.attr 'authors').to_pdf_object}
|
24
24
|
/Subject #{(doc.attr 'subject').to_pdf_object}
|
@@ -29,7 +29,6 @@ module Asciidoctor
|
|
29
29
|
/Producer #{(doc.attr 'publisher').to_pdf_object}
|
30
30
|
/DOCINFO pdfmark
|
31
31
|
EOS
|
32
|
-
content
|
33
32
|
end
|
34
33
|
|
35
34
|
def generate_file pdf_file
|
@@ -1,34 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
unless RUBY_VERSION >= '2.4'
|
4
|
-
begin
|
5
|
-
require 'unicode' unless defined? Unicode::VERSION
|
6
|
-
rescue LoadError
|
7
|
-
begin
|
8
|
-
require 'active_support/multibyte' unless defined? ActiveSupport::Multibyte
|
9
|
-
rescue LoadError; end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
3
|
module Asciidoctor
|
14
4
|
module PDF
|
15
5
|
module TextTransformer
|
16
6
|
XMLMarkupRx = /&#?[a-z\d]+;|</
|
17
7
|
PCDATAFilterRx = /(&#?[a-z\d]+;|<[^>]+>)|([^&<]+)/
|
18
8
|
TagFilterRx = /(<[^>]+>)|([^<]+)/
|
19
|
-
|
9
|
+
ContiguousCharsRx = /\p{Graph}+/
|
10
|
+
WordRx = /\p{Word}+/
|
11
|
+
Hyphen = '-'
|
20
12
|
SoftHyphen = ?\u00ad
|
21
13
|
|
22
14
|
def capitalize_words_pcdata string
|
23
15
|
if XMLMarkupRx.match? string
|
24
|
-
string.gsub(PCDATAFilterRx) { $2 ? (
|
16
|
+
string.gsub(PCDATAFilterRx) { $2 ? (capitalize_words $2) : $1 }
|
25
17
|
else
|
26
|
-
|
18
|
+
capitalize_words string
|
27
19
|
end
|
28
20
|
end
|
29
21
|
|
30
|
-
def
|
31
|
-
string.gsub(
|
22
|
+
def capitalize_words string
|
23
|
+
string.gsub(ContiguousCharsRx) { $&.capitalize }
|
32
24
|
end
|
33
25
|
|
34
26
|
def hyphenate_words_pcdata string, hyphenator
|
@@ -45,69 +37,16 @@ module Asciidoctor
|
|
45
37
|
|
46
38
|
def lowercase_pcdata string
|
47
39
|
if string.include? '<'
|
48
|
-
string.gsub(TagFilterRx) { $2 ?
|
40
|
+
string.gsub(TagFilterRx) { $2 ? $2.downcase : $1 }
|
49
41
|
else
|
50
|
-
|
42
|
+
string.downcase
|
51
43
|
end
|
52
44
|
end
|
53
45
|
|
54
46
|
def uppercase_pcdata string
|
55
47
|
if XMLMarkupRx.match? string
|
56
|
-
string.gsub(PCDATAFilterRx) { $2 ?
|
48
|
+
string.gsub(PCDATAFilterRx) { $2 ? $2.upcase : $1 }
|
57
49
|
else
|
58
|
-
uppercase_mb string
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
if RUBY_VERSION >= '2.4'
|
63
|
-
def capitalize_mb string
|
64
|
-
string.capitalize
|
65
|
-
end
|
66
|
-
|
67
|
-
def lowercase_mb string
|
68
|
-
string.downcase
|
69
|
-
end
|
70
|
-
|
71
|
-
def uppercase_mb string
|
72
|
-
string.upcase
|
73
|
-
end
|
74
|
-
# NOTE Unicode library is 4x as fast as ActiveSupport::MultiByte::Chars
|
75
|
-
elsif defined? ::Unicode
|
76
|
-
def capitalize_mb string
|
77
|
-
string.ascii_only? ? string.capitalize : (::Unicode.capitalize string)
|
78
|
-
end
|
79
|
-
|
80
|
-
def lowercase_mb string
|
81
|
-
string.ascii_only? ? string.downcase : (::Unicode.downcase string)
|
82
|
-
end
|
83
|
-
|
84
|
-
def uppercase_mb string
|
85
|
-
string.ascii_only? ? string.upcase : (::Unicode.upcase string)
|
86
|
-
end
|
87
|
-
elsif defined? ::ActiveSupport::Multibyte
|
88
|
-
MultibyteChars = ::ActiveSupport::Multibyte::Chars
|
89
|
-
|
90
|
-
def capitalize_mb string
|
91
|
-
string.ascii_only? ? string.capitalize : (MultibyteChars.new string).capitalize.to_s
|
92
|
-
end
|
93
|
-
|
94
|
-
def lowercase_mb string
|
95
|
-
string.ascii_only? ? string.downcase : (MultibyteChars.new string).downcase.to_s
|
96
|
-
end
|
97
|
-
|
98
|
-
def uppercase_mb string
|
99
|
-
string.ascii_only? ? string.upcase : (MultibyteChars.new string).upcase.to_s
|
100
|
-
end
|
101
|
-
else
|
102
|
-
def capitalize_mb string
|
103
|
-
string.capitalize
|
104
|
-
end
|
105
|
-
|
106
|
-
def lowercase_mb string
|
107
|
-
string.downcase
|
108
|
-
end
|
109
|
-
|
110
|
-
def uppercase_mb string
|
111
50
|
string.upcase
|
112
51
|
end
|
113
52
|
end
|
@@ -94,7 +94,7 @@ module Asciidoctor
|
|
94
94
|
yaml_data = ::SafeYAML.load data, filename
|
95
95
|
if ::Hash === yaml_data && (yaml_data.key? 'extends')
|
96
96
|
if (extends = yaml_data.delete 'extends')
|
97
|
-
|
97
|
+
(Array extends).each do |extend_path|
|
98
98
|
if extend_path == 'base'
|
99
99
|
theme_data = theme_data ? (::OpenStruct.new theme_data.to_h.merge load_base_theme.to_h) : load_base_theme
|
100
100
|
next
|
data/lib/asciidoctor/pdf.rb
CHANGED
@@ -3,6 +3,9 @@
|
|
3
3
|
require_relative 'pdf/version'
|
4
4
|
require 'asciidoctor' unless defined? Asciidoctor.load
|
5
5
|
require 'prawn'
|
6
|
+
Prawn.send :remove_const, :FLOAT_PRECISION
|
7
|
+
Prawn::FLOAT_PRECISION = 1e-3
|
8
|
+
require 'prawn/templates'
|
6
9
|
begin
|
7
10
|
require 'prawn/gmagick'
|
8
11
|
rescue LoadError
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Allen
|
@@ -9,62 +9,36 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-09-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: asciidoctor
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: 1.5.3
|
21
|
-
- - "<"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 3.0.0
|
24
|
-
type: :runtime
|
25
|
-
prerelease: false
|
26
|
-
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
requirements:
|
28
|
-
- - ">="
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: 1.5.3
|
31
|
-
- - "<"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 3.0.0
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: prawn
|
36
16
|
requirement: !ruby/object:Gem::Requirement
|
37
17
|
requirements:
|
38
18
|
- - "~>"
|
39
19
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
20
|
+
version: '2.0'
|
41
21
|
type: :runtime
|
42
22
|
prerelease: false
|
43
23
|
version_requirements: !ruby/object:Gem::Requirement
|
44
24
|
requirements:
|
45
25
|
- - "~>"
|
46
26
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.
|
27
|
+
version: '2.0'
|
48
28
|
- !ruby/object:Gem::Dependency
|
49
|
-
name:
|
29
|
+
name: prawn
|
50
30
|
requirement: !ruby/object:Gem::Requirement
|
51
31
|
requirements:
|
52
32
|
- - "~>"
|
53
33
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: 1.5.1
|
34
|
+
version: 2.4.0
|
58
35
|
type: :runtime
|
59
36
|
prerelease: false
|
60
37
|
version_requirements: !ruby/object:Gem::Requirement
|
61
38
|
requirements:
|
62
39
|
- - "~>"
|
63
40
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 1.5.1
|
41
|
+
version: 2.4.0
|
68
42
|
- !ruby/object:Gem::Dependency
|
69
43
|
name: prawn-table
|
70
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,28 +73,28 @@ dependencies:
|
|
99
73
|
requirements:
|
100
74
|
- - "~>"
|
101
75
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0.
|
76
|
+
version: 0.32.0
|
103
77
|
type: :runtime
|
104
78
|
prerelease: false
|
105
79
|
version_requirements: !ruby/object:Gem::Requirement
|
106
80
|
requirements:
|
107
81
|
- - "~>"
|
108
82
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.
|
83
|
+
version: 0.32.0
|
110
84
|
- !ruby/object:Gem::Dependency
|
111
85
|
name: prawn-icon
|
112
86
|
requirement: !ruby/object:Gem::Requirement
|
113
87
|
requirements:
|
114
88
|
- - "~>"
|
115
89
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
90
|
+
version: 3.0.0
|
117
91
|
type: :runtime
|
118
92
|
prerelease: false
|
119
93
|
version_requirements: !ruby/object:Gem::Requirement
|
120
94
|
requirements:
|
121
95
|
- - "~>"
|
122
96
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
97
|
+
version: 3.0.0
|
124
98
|
- !ruby/object:Gem::Dependency
|
125
99
|
name: safe_yaml
|
126
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,34 +109,20 @@ dependencies:
|
|
135
109
|
- - "~>"
|
136
110
|
- !ruby/object:Gem::Version
|
137
111
|
version: 1.0.0
|
138
|
-
- !ruby/object:Gem::Dependency
|
139
|
-
name: thread_safe
|
140
|
-
requirement: !ruby/object:Gem::Requirement
|
141
|
-
requirements:
|
142
|
-
- - "~>"
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
version: 0.3.0
|
145
|
-
type: :runtime
|
146
|
-
prerelease: false
|
147
|
-
version_requirements: !ruby/object:Gem::Requirement
|
148
|
-
requirements:
|
149
|
-
- - "~>"
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: 0.3.0
|
152
112
|
- !ruby/object:Gem::Dependency
|
153
113
|
name: concurrent-ruby
|
154
114
|
requirement: !ruby/object:Gem::Requirement
|
155
115
|
requirements:
|
156
116
|
- - "~>"
|
157
117
|
- !ruby/object:Gem::Version
|
158
|
-
version: 1.1
|
118
|
+
version: '1.1'
|
159
119
|
type: :runtime
|
160
120
|
prerelease: false
|
161
121
|
version_requirements: !ruby/object:Gem::Requirement
|
162
122
|
requirements:
|
163
123
|
- - "~>"
|
164
124
|
- !ruby/object:Gem::Version
|
165
|
-
version: 1.1
|
125
|
+
version: '1.1'
|
166
126
|
- !ruby/object:Gem::Dependency
|
167
127
|
name: treetop
|
168
128
|
requirement: !ruby/object:Gem::Requirement
|
@@ -197,14 +157,14 @@ dependencies:
|
|
197
157
|
requirements:
|
198
158
|
- - "~>"
|
199
159
|
- !ruby/object:Gem::Version
|
200
|
-
version: 3.
|
160
|
+
version: 3.10.0
|
201
161
|
type: :development
|
202
162
|
prerelease: false
|
203
163
|
version_requirements: !ruby/object:Gem::Requirement
|
204
164
|
requirements:
|
205
165
|
- - "~>"
|
206
166
|
- !ruby/object:Gem::Version
|
207
|
-
version: 3.
|
167
|
+
version: 3.10.0
|
208
168
|
- !ruby/object:Gem::Dependency
|
209
169
|
name: pdf-inspector
|
210
170
|
requirement: !ruby/object:Gem::Requirement
|
@@ -253,14 +213,14 @@ dependencies:
|
|
253
213
|
requirements:
|
254
214
|
- - "~>"
|
255
215
|
- !ruby/object:Gem::Version
|
256
|
-
version: 1.
|
216
|
+
version: 1.4.0
|
257
217
|
type: :development
|
258
218
|
prerelease: false
|
259
219
|
version_requirements: !ruby/object:Gem::Requirement
|
260
220
|
requirements:
|
261
221
|
- - "~>"
|
262
222
|
- !ruby/object:Gem::Version
|
263
|
-
version: 1.
|
223
|
+
version: 1.4.0
|
264
224
|
description: An extension for Asciidoctor that converts AsciiDoc documents to PDF
|
265
225
|
using the Prawn PDF library.
|
266
226
|
email: dan@opendevise.com
|
@@ -272,7 +232,7 @@ extra_rdoc_files: []
|
|
272
232
|
files:
|
273
233
|
- ".yardopts"
|
274
234
|
- CHANGELOG.adoc
|
275
|
-
- LICENSE
|
235
|
+
- LICENSE
|
276
236
|
- NOTICE.adoc
|
277
237
|
- README.adoc
|
278
238
|
- asciidoctor-pdf.gemspec
|
@@ -321,7 +281,6 @@ files:
|
|
321
281
|
- lib/asciidoctor/pdf/ext/core/array.rb
|
322
282
|
- lib/asciidoctor/pdf/ext/core/file.rb
|
323
283
|
- lib/asciidoctor/pdf/ext/core/hash.rb
|
324
|
-
- lib/asciidoctor/pdf/ext/core/numeric.rb
|
325
284
|
- lib/asciidoctor/pdf/ext/core/object.rb
|
326
285
|
- lib/asciidoctor/pdf/ext/core/quantifiable_stdout.rb
|
327
286
|
- lib/asciidoctor/pdf/ext/core/regexp.rb
|
@@ -330,17 +289,16 @@ files:
|
|
330
289
|
- lib/asciidoctor/pdf/ext/pdf-core/page.rb
|
331
290
|
- lib/asciidoctor/pdf/ext/pdf-core/pdf_object.rb
|
332
291
|
- lib/asciidoctor/pdf/ext/prawn-svg.rb
|
333
|
-
- lib/asciidoctor/pdf/ext/prawn-svg/interface.rb
|
334
292
|
- lib/asciidoctor/pdf/ext/prawn-table.rb
|
335
293
|
- lib/asciidoctor/pdf/ext/prawn-table/cell.rb
|
336
294
|
- lib/asciidoctor/pdf/ext/prawn-table/cell/asciidoc.rb
|
337
295
|
- lib/asciidoctor/pdf/ext/prawn-table/cell/text.rb
|
338
|
-
- lib/asciidoctor/pdf/ext/prawn-templates.rb
|
339
296
|
- lib/asciidoctor/pdf/ext/prawn.rb
|
340
297
|
- lib/asciidoctor/pdf/ext/prawn/coderay_encoder.rb
|
341
298
|
- lib/asciidoctor/pdf/ext/prawn/extensions.rb
|
342
299
|
- lib/asciidoctor/pdf/ext/prawn/font/afm.rb
|
343
300
|
- lib/asciidoctor/pdf/ext/prawn/font_metric_cache.rb
|
301
|
+
- lib/asciidoctor/pdf/ext/prawn/formatted_text/arranger.rb
|
344
302
|
- lib/asciidoctor/pdf/ext/prawn/formatted_text/box.rb
|
345
303
|
- lib/asciidoctor/pdf/ext/prawn/formatted_text/fragment.rb
|
346
304
|
- lib/asciidoctor/pdf/ext/prawn/images.rb
|
@@ -374,7 +332,7 @@ licenses:
|
|
374
332
|
- MIT
|
375
333
|
metadata:
|
376
334
|
bug_tracker_uri: https://github.com/asciidoctor/asciidoctor-pdf/issues
|
377
|
-
changelog_uri: https://github.com/asciidoctor/asciidoctor-pdf/blob/
|
335
|
+
changelog_uri: https://github.com/asciidoctor/asciidoctor-pdf/blob/main/CHANGELOG.adoc
|
378
336
|
mailing_list_uri: http://discuss.asciidoctor.org
|
379
337
|
source_code_uri: https://github.com/asciidoctor/asciidoctor-pdf
|
380
338
|
post_install_message:
|
@@ -392,7 +350,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
392
350
|
- !ruby/object:Gem::Version
|
393
351
|
version: '0'
|
394
352
|
requirements: []
|
395
|
-
rubygems_version: 3.
|
353
|
+
rubygems_version: 3.2.22
|
396
354
|
signing_key:
|
397
355
|
specification_version: 4
|
398
356
|
summary: Converts AsciiDoc documents to PDF using Asciidoctor and Prawn
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# NOTE remove once minimum required Ruby version is at least 2.4
|
4
|
-
Float.prepend (Module.new do
|
5
|
-
def truncate *args
|
6
|
-
if args.length == 1
|
7
|
-
if (precision = Integer args.shift) == 0
|
8
|
-
super
|
9
|
-
elsif precision > 0
|
10
|
-
precision_factor = 10.0**precision
|
11
|
-
(self * precision_factor).to_i / precision_factor
|
12
|
-
else
|
13
|
-
precision_factor = 10**precision.abs
|
14
|
-
(self / precision_factor).to_i * precision_factor
|
15
|
-
end
|
16
|
-
else
|
17
|
-
super
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end) if (Float.instance_method :truncate).arity == 0
|
21
|
-
|
22
|
-
Integer.prepend (Module.new do
|
23
|
-
def truncate *_args
|
24
|
-
super()
|
25
|
-
end
|
26
|
-
end) if (Integer.instance_method :truncate).arity == 0
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Prawn
|
4
|
-
module SVG
|
5
|
-
class Interface
|
6
|
-
def resize opts = {}
|
7
|
-
sizing = document.sizing
|
8
|
-
sizing.requested_width = opts[:width]
|
9
|
-
sizing.requested_height = opts[:height]
|
10
|
-
sizing.calculate
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end unless Prawn::SVG::Interface.method_defined? :resize
|