asciidoctor-pdf 2.3.13 → 2.3.15

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c9cfc31dfbf69e0d550a21fcb6cfa92f8e8310ea03f7e45e058af969b6e671b
4
- data.tar.gz: d994b9f9e4b7cceaedabc388e868806f3769a8dbcfa0ba043d1061a7e0cdb939
3
+ metadata.gz: 4b65e5da741e3df4c56f2e6ee79a9500dbd28a7c3f27d1ffea9c66bbb4d7031d
4
+ data.tar.gz: 41020f7cff7695528dac65d0d6368b4688f1fc00895a6ed68c9bf0d1c34ab594
5
5
  SHA512:
6
- metadata.gz: ecf1efe60ea4baa8935f7fb952c70303d8beda90d6d28684c7492fa0135dc71961699f82fbca808a12e16a29e975f645fd4e4a2ae84579ee4966fdba5a89f558
7
- data.tar.gz: 2ebd69f420f484b423853519e034c54c36070b37a70accf3cf8ef83406db66c7f96bb0c8f8e0f141a67a8059a8cbdba88253dde6c75468c94864d37df3fa11c2
6
+ metadata.gz: cd72a63d48e8f29937bc6613257924d169fa3e878e3b5ab23a846fdc3fcccc1ee2471f800c380deee22b14b624b9db2383b8e00de62d21408467e3a3c77047b8
7
+ data.tar.gz: ada67363d0d5a5e551a4f9b499d31ce273d831e9de6c3c259130739c5b006f06937315f3130d25b89cf32a4b332deb3da23487cca9b856fd6753e24d2a4e027b
data/CHANGELOG.adoc CHANGED
@@ -5,14 +5,51 @@
5
5
  This document provides a high-level view of the changes to the {project-name} by release.
6
6
  For a detailed view of what has changed, refer to the {url-repo}/commits/main[commit history] on GitHub.
7
7
 
8
+ == 2.3.15 (2024-03-12) - @mojavelinux
9
+
10
+ Improvements::
11
+
12
+ * drop links from entries in TOC (#2505)
13
+
14
+ Compliance::
15
+
16
+ * lock ttfunk to 1.7.x to avoid requiring Ruby headers (i.e., development libraries) to install gem (#2508)
17
+
18
+ === Details
19
+
20
+ {url-repo}/releases/tag/v2.3.15[git tag] | {url-repo}/compare/v2.3.14\...v2.3.15[full diff]
21
+
22
+ == 2.3.14 (2024-03-08) - @mojavelinux
23
+
24
+ Improvements::
25
+
26
+ * upgrade prawn-svg to 0.34 to add support for SVG referenced by image tag (SVG in SVG)
27
+
28
+ Bug Fixes::
29
+
30
+ * propagate source location to table cell for description in horizontal dlist so it is included in truncation warning message (#2502)
31
+ * eradicate use of the base64 library to fix warning about base64 gem when using Ruby >= 3.3
32
+ * upgrade prawn-svg to 0.34 to fix warning about base64 gem when using Ruby >= 3.3; apply additional patch to fix bug in prawn-svg
33
+
34
+ Build / Infrastructure::
35
+
36
+ * bump upper Ruby version to 3.3 in CI workflow
37
+
38
+ === Details
39
+
40
+ {url-repo}/releases/tag/v2.3.14[git tag] | {url-repo}/compare/v2.3.13\...v2.3.14[full diff]
41
+
8
42
  == 2.3.13 (2024-02-16) - @mojavelinux
9
43
 
44
+ Improvements::
45
+
46
+ * support toc start at value for page numbering and running content when toc is added using macro (#2489)
47
+
10
48
  Bug Fixes::
11
49
 
12
50
  * don't drop text on line above inline image macro in running content value (#2495)
13
51
  * when looking for a value that only contains an image macro, match the whole string instead of per line (#2495)
14
52
  * don't warn about missing character in fallback font when inline image is advanced to next page (#2492)
15
- * support toc start at value for page numbering and running content when toc is added using macro (#2489)
16
53
  * fix page number of index entries in prepress book when page numbering starts at toc or after toc and toc is inserted using macro (#2487)
17
54
 
18
55
  === Details
data/README.adoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Asciidoctor PDF: A native PDF converter for AsciiDoc
2
2
  Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>
3
- v2.3.13, 2024-02-16
3
+ v2.3.15, 2024-03-12
4
4
  // Settings:
5
5
  :experimental:
6
6
  :idprefix:
@@ -35,10 +35,11 @@ Gem::Specification.new do |s|
35
35
 
36
36
  s.add_runtime_dependency 'asciidoctor', '~> 2.0'
37
37
  s.add_runtime_dependency 'prawn', '~> 2.4.0'
38
+ s.add_runtime_dependency 'ttfunk', '~> 1.7.0' # pin ttfunk for compatiblity; prawn gem only pins it to major version
38
39
  s.add_runtime_dependency 'matrix', '~> 0.4' # required until prawn >= 2.5.0 is released
39
40
  s.add_runtime_dependency 'prawn-table', '~> 0.2.0'
40
41
  s.add_runtime_dependency 'prawn-templates', '~> 0.1.0'
41
- s.add_runtime_dependency 'prawn-svg', '~> 0.33.0'
42
+ s.add_runtime_dependency 'prawn-svg', '~> 0.34.0'
42
43
  s.add_runtime_dependency 'prawn-icon', '~> 3.0.0'
43
44
  s.add_runtime_dependency 'concurrent-ruby', '~> 1.1'
44
45
  s.add_runtime_dependency 'treetop', '~> 1.6.0'
@@ -1458,7 +1458,7 @@ module Asciidoctor
1458
1458
  desc_container = Block.new node, :open
1459
1459
  desc_container << (Block.new desc_container, :paragraph, source: (desc.instance_variable_get :@text), subs: :default) if desc.text?
1460
1460
  desc.blocks.each {|b| desc_container << b.dup } if desc.blocks?
1461
- row_data << { content: (::Prawn::Table::Cell::AsciiDoc.new self, content: (item[1] = desc_container), text_color: @font_color, padding: desc_padding, valign: :top) }
1461
+ row_data << { content: (::Prawn::Table::Cell::AsciiDoc.new self, content: (item[1] = desc_container), text_color: @font_color, padding: desc_padding, valign: :top, source_location: desc.source_location) }
1462
1462
  else
1463
1463
  row_data << {}
1464
1464
  end
@@ -1721,7 +1721,7 @@ module Asciidoctor
1721
1721
  if image_format == 'gif' && !(defined? ::GMagick::Image)
1722
1722
  log :warn, %(GIF image format not supported. Install the prawn-gmagick gem or convert #{target} to PNG.)
1723
1723
  image_path = nil
1724
- elsif ::Base64 === target
1724
+ elsif ::Asciidoctor::Image::Base64Encoded === target
1725
1725
  image_path = target
1726
1726
  elsif (image_path = resolve_image_path node, target, image_format, (opts.fetch :relative_to_imagesdir, true))
1727
1727
  if image_format == 'pdf'
@@ -1790,8 +1790,8 @@ module Asciidoctor
1790
1790
  rendered_h = rendered_w = nil
1791
1791
  span_page_width_if align_to_page do
1792
1792
  if image_format == 'svg'
1793
- if ::Base64 === image_path
1794
- svg_data = ::Base64.decode64 image_path
1793
+ if ::Asciidoctor::Image::Base64Encoded === image_path
1794
+ svg_data = image_path.unpack1 'm'
1795
1795
  file_request_root = false
1796
1796
  else
1797
1797
  svg_data = ::File.read image_path, mode: 'r:UTF-8'
@@ -1842,8 +1842,8 @@ module Asciidoctor
1842
1842
  else
1843
1843
  # FIXME: this code really needs to be better organized!
1844
1844
  # NOTE: use low-level API to access intrinsic dimensions; build_image_object caches image data previously loaded
1845
- image_obj, image_info = ::Base64 === image_path ?
1846
- ::StringIO.open((::Base64.decode64 image_path), 'rb') {|fd| build_image_object fd } :
1845
+ image_obj, image_info = ::Asciidoctor::Image::Base64Encoded === image_path ?
1846
+ ::StringIO.open((image_path.unpack1 'm'), 'rb') {|fd| build_image_object fd } :
1847
1847
  ::File.open(image_path, 'rb') {|fd| build_image_object fd }
1848
1848
  actual_w = to_pt image_info.width, :px
1849
1849
  width = actual_w * scale if scale
@@ -3917,6 +3917,7 @@ module Asciidoctor
3917
3917
  theme_font :toc, level: entry_level do
3918
3918
  entry_title = entry.context == :section ? entry.numbered_title : (entry.title? ? entry.title : (entry.xreftext 'basic'))
3919
3919
  next if entry_title.empty?
3920
+ entry_title = entry_title.gsub DropAnchorRx, '' if entry_title.include? '<a'
3920
3921
  entry_title = transform_text entry_title, @text_transform if @text_transform
3921
3922
  pgnum_label_placeholder_width = rendered_width_of_string '0' * @toc_max_pagenum_digits
3922
3923
  # NOTE: only write title (excluding dots and page number) if this is a dry run
@@ -4313,11 +4314,11 @@ module Asciidoctor
4313
4314
  end
4314
4315
  @tmp_files ||= {}
4315
4316
  # NOTE: base64 logic currently used for inline images
4316
- if ::Base64 === image_path
4317
+ if ::Asciidoctor::Image::Base64Encoded === image_path
4317
4318
  return @tmp_files[image_path] if @tmp_files.key? image_path
4318
4319
  tmp_image = ::Tempfile.create %W(image- .#{image_format})
4319
4320
  tmp_image.binmode unless image_format == 'svg'
4320
- tmp_image.write ::Base64.decode64 image_path
4321
+ tmp_image.write image_path.unpack1 'm'
4321
4322
  tmp_image.close
4322
4323
  @tmp_files[image_path] = tmp_image.path
4323
4324
  # NOTE: this will catch a classloader resource path on JRuby (e.g., uri:classloader:/path/to/image)
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module Image
5
+ Base64Encoded = ::Module.new
5
6
  DataUriRx = %r(^data:image/(?<fmt>png|jpe?g|gif|pdf|bmp|tiff|svg\+xml);base64,(?<data>.*)$)
6
7
  FormatAliases = { 'jpg' => 'jpeg', 'svg+xml' => 'svg' }
7
8
 
@@ -11,7 +12,7 @@ module Asciidoctor
11
12
 
12
13
  def self.target_and_format image_path, attributes = nil
13
14
  if (image_path.start_with? 'data:') && (m = DataUriRx.match image_path)
14
- [(m[:data].extend ::Base64), (FormatAliases.fetch m[:fmt], m[:fmt])]
15
+ [(m[:data].extend Base64Encoded), (FormatAliases.fetch m[:fmt], m[:fmt])]
15
16
  else
16
17
  [image_path, attributes&.[]('format') || ((ext = ::File.extname image_path).downcase.slice 1, ext.length)]
17
18
  end
@@ -20,7 +21,7 @@ module Asciidoctor
20
21
  def target_and_format
21
22
  image_path = inline? ? target : (attr 'target')
22
23
  if (image_path.start_with? 'data:') && (m = DataUriRx.match image_path)
23
- [(m[:data].extend ::Base64), (FormatAliases.fetch m[:fmt], m[:fmt])]
24
+ [(m[:data].extend Base64Encoded), (FormatAliases.fetch m[:fmt], m[:fmt])]
24
25
  else
25
26
  [image_path, (attr 'format', nil, false) || ((ext = ::File.extname image_path).downcase.slice 1, ext.length)]
26
27
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # see https://github.com/mogest/prawn-svg/issues/164
4
+ Prawn::SVG::Elements::Use.prepend (Module.new do
5
+ def parse
6
+ result = super
7
+ if @referenced_element_source.name == 'symbol' && !(@referenced_element_source.attributes.key? 'viewBox')
8
+ @referenced_element_class = Prawn::SVG::Elements::Container
9
+ end
10
+ result
11
+ end
12
+ end)
@@ -3,6 +3,7 @@
3
3
  require 'prawn-svg'
4
4
  require_relative 'prawn-svg/calculators/document_sizing'
5
5
  require_relative 'prawn-svg/elements/image'
6
+ require_relative 'prawn-svg/elements/use'
6
7
  require_relative 'prawn-svg/loaders/data'
7
8
  require_relative 'prawn-svg/loaders/file'
8
9
  require_relative 'prawn-svg/loaders/web'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module PDF
5
- VERSION = '2.3.13'
5
+ VERSION = '2.3.15'
6
6
  end
7
7
  end
@@ -1,5 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ proc do
4
+ old_verbose, $VERBOSE = $VERBOSE, nil
5
+ require 'bigdecimal' # eagerly require bigdecimal without warnings to avoid warning caused by ttfunk 1.7.0
6
+ $VERBOSE = old_verbose
7
+ end.call
8
+
3
9
  autoload :Set, 'set'
4
10
  autoload :StringIO, 'stringio'
5
11
  autoload :Tempfile, 'tempfile'
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: 2.3.13
4
+ version: 2.3.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Allen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-02-16 00:00:00.000000000 Z
12
+ date: 2024-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: asciidoctor
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: 2.4.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: ttfunk
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: 1.7.0
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: 1.7.0
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: matrix
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -87,14 +101,14 @@ dependencies:
87
101
  requirements:
88
102
  - - "~>"
89
103
  - !ruby/object:Gem::Version
90
- version: 0.33.0
104
+ version: 0.34.0
91
105
  type: :runtime
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - "~>"
96
110
  - !ruby/object:Gem::Version
97
- version: 0.33.0
111
+ version: 0.34.0
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: prawn-icon
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -262,6 +276,7 @@ files:
262
276
  - lib/asciidoctor/pdf/ext/prawn-svg.rb
263
277
  - lib/asciidoctor/pdf/ext/prawn-svg/calculators/document_sizing.rb
264
278
  - lib/asciidoctor/pdf/ext/prawn-svg/elements/image.rb
279
+ - lib/asciidoctor/pdf/ext/prawn-svg/elements/use.rb
265
280
  - lib/asciidoctor/pdf/ext/prawn-svg/loaders/data.rb
266
281
  - lib/asciidoctor/pdf/ext/prawn-svg/loaders/file.rb
267
282
  - lib/asciidoctor/pdf/ext/prawn-svg/loaders/web.rb
@@ -335,7 +350,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
350
  - !ruby/object:Gem::Version
336
351
  version: '0'
337
352
  requirements: []
338
- rubygems_version: 3.3.26
353
+ rubygems_version: 3.5.3
339
354
  signing_key:
340
355
  specification_version: 4
341
356
  summary: Converts AsciiDoc documents to PDF using Asciidoctor and Prawn