asciidoctor-pdf 1.5.0.rc.2 → 1.5.0.rc.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.adoc +29 -0
  3. data/README.adoc +33 -6
  4. data/asciidoctor-pdf.gemspec +3 -7
  5. data/data/fonts/ABOUT-notoemoji-subset +3 -0
  6. data/data/fonts/ABOUT-notoserif-subset +1 -1
  7. data/data/fonts/mplus1mn-bold-ascii.ttf +0 -0
  8. data/data/fonts/mplus1mn-bold-subset.ttf +0 -0
  9. data/data/fonts/mplus1mn-bold_italic-ascii.ttf +0 -0
  10. data/data/fonts/mplus1mn-bold_italic-subset.ttf +0 -0
  11. data/data/fonts/mplus1mn-italic-ascii.ttf +0 -0
  12. data/data/fonts/mplus1mn-italic-subset.ttf +0 -0
  13. data/data/fonts/mplus1mn-regular-ascii-conums.ttf +0 -0
  14. data/data/fonts/mplus1mn-regular-subset.ttf +0 -0
  15. data/data/fonts/mplus1p-regular-fallback.ttf +0 -0
  16. data/data/fonts/notoemoji-subset.ttf +0 -0
  17. data/data/fonts/notoserif-bold-subset.ttf +0 -0
  18. data/data/fonts/notoserif-bold_italic-subset.ttf +0 -0
  19. data/data/fonts/notoserif-italic-subset.ttf +0 -0
  20. data/data/fonts/notoserif-regular-subset.ttf +0 -0
  21. data/data/themes/default-theme.yml +1 -1
  22. data/data/themes/default-with-fallback-font-theme.yml +4 -17
  23. data/docs/theming-guide.adoc +38 -13
  24. data/lib/asciidoctor/pdf.rb +0 -1
  25. data/lib/asciidoctor/pdf/converter.rb +154 -123
  26. data/lib/asciidoctor/pdf/ext/asciidoctor/logging_shim.rb +9 -1
  27. data/lib/asciidoctor/pdf/ext/core.rb +1 -0
  28. data/lib/asciidoctor/pdf/ext/core/file.rb +9 -0
  29. data/lib/asciidoctor/pdf/ext/prawn/extensions.rb +10 -0
  30. data/lib/asciidoctor/pdf/ext/prawn/font/afm.rb +2 -6
  31. data/lib/asciidoctor/pdf/ext/prawn/formatted_text/box.rb +40 -0
  32. data/lib/asciidoctor/pdf/formatted_text/formatter.rb +5 -6
  33. data/lib/asciidoctor/pdf/formatted_text/fragment_position_renderer.rb +2 -1
  34. data/lib/asciidoctor/pdf/formatted_text/inline_image_arranger.rb +7 -12
  35. data/lib/asciidoctor/pdf/formatted_text/inline_image_renderer.rb +1 -4
  36. data/lib/asciidoctor/pdf/formatted_text/transform.rb +1 -1
  37. data/lib/asciidoctor/pdf/theme_loader.rb +10 -9
  38. data/lib/asciidoctor/pdf/version.rb +1 -1
  39. metadata +10 -64
  40. data/lib/asciidoctor/pdf/temporary_path.rb +0 -15
@@ -7,6 +7,10 @@ module Asciidoctor
7
7
  # ignore since this isn't a real logger
8
8
  end
9
9
 
10
+ def info?
11
+ false
12
+ end
13
+
10
14
  def warn message = nil
11
15
  ::Kernel.warn %(asciidoctor: WARNING: #{message || (block_given? ? yield : '???')})
12
16
  end
@@ -17,9 +21,13 @@ module Asciidoctor
17
21
  end
18
22
  end
19
23
 
20
- module LoggingShim
24
+ module Logging
21
25
  def logger
22
26
  StubLogger
23
27
  end
28
+
29
+ def message_with_context text, _context = {}
30
+ text
31
+ end
24
32
  end
25
33
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative 'core/object'
4
4
  require_relative 'core/array'
5
+ require_relative 'core/file'
5
6
  require_relative 'core/hash'
6
7
  require_relative 'core/numeric'
7
8
  require_relative 'core/string'
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class File
4
+ class << self
5
+ def absolute_path? path
6
+ (path.start_with? '/') || (ALT_SEPARATOR && (path.start_with? (absolute_path path).slice 0, 3))
7
+ end unless method_defined? :absolute_path?
8
+ end
9
+ end
@@ -22,6 +22,8 @@ module Asciidoctor
22
22
  italic: [:italic].to_set,
23
23
  bold_italic: [:bold, :italic].to_set,
24
24
  }).default = ::Set.new
25
+ # NOTE must use a visible char for placeholder or else Prawn won't reserve space for the fragment
26
+ PlaceholderChar = ?\u2063
25
27
 
26
28
  # - :height is the height of a line
27
29
  # - :leading is spacing between adjacent lines
@@ -309,6 +311,12 @@ module Asciidoctor
309
311
  end
310
312
  end
311
313
 
314
+ # Override width of string to check for placeholder char, which uses character spacing to control width
315
+ #
316
+ def width_of_string string, options = {}
317
+ string == PlaceholderChar ? @character_spacing : super
318
+ end
319
+
312
320
  def icon_font_data family
313
321
  ::Prawn::Icon::FontData.load self, family
314
322
  end
@@ -751,6 +759,7 @@ module Asciidoctor
751
759
  start_new_page_discretely template: file, template_page: opts[:page]
752
760
  # prawn-templates sets text_rendering_mode to :unknown, which breaks running content; revert
753
761
  @text_rendering_mode = prev_text_rendering_mode
762
+ yield if block_given?
754
763
  if opts.fetch :advance, true
755
764
  # NOTE set page size & layout explicitly in case imported page differs
756
765
  # I'm not sure it's right to start a new page here, but unfortunately there's no other
@@ -824,6 +833,7 @@ module Asciidoctor
824
833
  @scratch ||= if defined? @prototype # rubocop:disable Naming/MemoizedInstanceVariableName
825
834
  scratch = Marshal.load Marshal.dump @prototype
826
835
  scratch.instance_variable_set :@prototype, @prototype
836
+ scratch.instance_variable_set :@tmp_files, @tmp_files
827
837
  # TODO: set scratch number on scratch document
828
838
  scratch
829
839
  else
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Prawn::Font::AFM
4
- if defined? ::Asciidoctor::Logging
5
- include ::Asciidoctor::Logging
6
- else
7
- include ::Asciidoctor::LoggingShim
8
- end
4
+ include ::Asciidoctor::Logging
9
5
 
10
6
  FALLBACK_CHARS = {
11
7
  ?\u200b => '',
@@ -26,7 +22,7 @@ class Prawn::Font::AFM
26
22
  text.encode 'windows-1252', fallback: FALLBACK_CHARS
27
23
  rescue ::Encoding::UndefinedConversionError
28
24
  logger.warn %(The following text could not be fully converted to the Windows-1252 character set:
29
- #{text.gsub(/^/, '| ').rstrip})
25
+ #{text.gsub(/^/, '| ').rstrip}) if logger.info? && !@document.scratch?
30
26
  text.encode 'windows-1252', undef: :replace, replace: ?\u00ac
31
27
  rescue ::Encoding::InvalidByteSequenceError
32
28
  raise Prawn::Errors::IncompatibleStringEncoding,
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Prawn::Text::Formatted::Box.prepend (Module.new do
4
+ include ::Asciidoctor::Logging
5
+
4
6
  def draw_fragment_overlay_styles fragment
5
7
  if (underline = (styles = fragment.styles).include? :underline) || (styles.include? :strikethrough)
6
8
  (doc = fragment.document).save_graphics_state do
@@ -14,4 +16,42 @@ Prawn::Text::Formatted::Box.prepend (Module.new do
14
16
  end
15
17
  end
16
18
  end
19
+
20
+ def find_font_for_this_glyph char, current_font, fallback_fonts_to_check, original_font = current_font
21
+ @document.font current_font
22
+ if fallback_fonts_to_check.empty?
23
+ logger.warn %(Could not locate the character `#{char}' in the following fonts: #{([original_font].concat @fallback_fonts).join ', '}) if logger.info? && !@document.scratch?
24
+ current_font
25
+ elsif @document.font.glyph_present? char
26
+ current_font
27
+ else
28
+ find_font_for_this_glyph char, fallback_fonts_to_check.shift, fallback_fonts_to_check, original_font
29
+ end
30
+ end
31
+
32
+ def process_vertical_alignment text
33
+ return super if ::Symbol === (valign = @vertical_align)
34
+
35
+ return if defined? @vertical_alignment_processed
36
+ @vertical_alignment_processed = true
37
+
38
+ valign, offset = valign
39
+
40
+ if valign == :top
41
+ @at[1] -= offset
42
+ return
43
+ end
44
+
45
+ wrap text
46
+ h = height
47
+
48
+ case valign
49
+ when :center
50
+ @at[1] -= (@height - h + @descender) * 0.5 + offset
51
+ when :bottom
52
+ @at[1] -= (@height - h) + offset
53
+ end
54
+
55
+ @height = h
56
+ end
17
57
  end)
@@ -4,11 +4,9 @@ module Asciidoctor
4
4
  module PDF
5
5
  module FormattedText
6
6
  class Formatter
7
- if defined? ::Asciidoctor::Logging
8
- include ::Asciidoctor::Logging
9
- else
10
- include ::Asciidoctor::LoggingShim
11
- end
7
+ include ::Asciidoctor::Logging
8
+
9
+ attr_accessor :scratch
12
10
 
13
11
  FormattingSnifferPattern = /[<&]/
14
12
  WHITESPACE = %( \t\n)
@@ -16,6 +14,7 @@ module Asciidoctor
16
14
  def initialize options = {}
17
15
  @parser = MarkupParser.new
18
16
  @transform = Transform.new merge_adjacent_text_nodes: true, theme: options[:theme]
17
+ @scratch = false
19
18
  end
20
19
 
21
20
  def format string, *args
@@ -25,7 +24,7 @@ module Asciidoctor
25
24
  if FormattingSnifferPattern.match? string
26
25
  if (parsed = @parser.parse string)
27
26
  return @transform.apply parsed.content, [], inherited
28
- else
27
+ elsif !@scratch
29
28
  logger.error %(failed to parse formatted text: #{string})
30
29
  end
31
30
  end
@@ -2,12 +2,13 @@
2
2
 
3
3
  module Asciidoctor::PDF::FormattedText
4
4
  class FragmentPositionRenderer
5
- attr_reader :top, :right, :bottom, :left
5
+ attr_reader :top, :right, :bottom, :left, :page_number
6
6
 
7
7
  def render_behind fragment
8
8
  @top = fragment.top
9
9
  @right = (@left = fragment.left) + fragment.width
10
10
  @bottom = fragment.bottom
11
+ @page_number = fragment.document.page_number
11
12
  end
12
13
  end
13
14
  end
@@ -3,15 +3,9 @@
3
3
  module Asciidoctor::PDF::FormattedText
4
4
  module InlineImageArranger
5
5
  include ::Asciidoctor::PDF::Measurements
6
- if defined? ::Asciidoctor::Logging
7
- include ::Asciidoctor::Logging
8
- else
9
- include ::Asciidoctor::LoggingShim
10
- end
6
+ include ::Asciidoctor::Logging
11
7
 
12
- # NOTE we must use a visible char or else Prawn won't allocate space for the fragment
13
- ImagePlaceholderChar = '.'
14
- TemporaryPath = ::Asciidoctor::PDF::TemporaryPath
8
+ PlaceholderChar = ::Asciidoctor::Prawn::Extensions::PlaceholderChar
15
9
 
16
10
  def wrap fragments
17
11
  arrange_images fragments
@@ -113,11 +107,14 @@ module Asciidoctor::PDF::FormattedText
113
107
  end
114
108
  end
115
109
 
116
- fragment[:text] = ImagePlaceholderChar
110
+ # NOTE we can't rely on the fragment width because the line wrap mechanism ignores it;
111
+ # it only considers the text (string) and character spacing, rebuilding the string several times
112
+ fragment[:text] = PlaceholderChar
113
+ fragment[:character_spacing] = image_w
117
114
  fragment[:image_width] = fragment[:width] = image_w
118
115
  fragment[:image_height] = image_h
119
116
  rescue
120
- logger.warn %(could not embed image: #{image_path}; #{$!.message}#{::Prawn::Errors::UnsupportedImageType === $! ? '; install prawn-gmagick gem to add support' : ''})
117
+ logger.warn %(could not embed image: #{image_path}; #{$!.message}#{::Prawn::Errors::UnsupportedImageType === $! ? '; install prawn-gmagick gem to add support' : ''}) unless scratch
121
118
  drop = true # delegate to cleanup logic in ensure block
122
119
  ensure
123
120
  # NOTE skip rendering image in scratch document or if image can't be loaded
@@ -126,8 +123,6 @@ module Asciidoctor::PDF::FormattedText
126
123
  fragment.delete :image_info
127
124
  # NOTE retain key to indicate we've visited fragment already
128
125
  fragment[:image_obj] = nil
129
- # NOTE in main document, temporary image path is unlinked by renderer
130
- image_path.unlink if TemporaryPath === image_path && image_path.exist?
131
126
  end
132
127
  end
133
128
  end
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Asciidoctor::PDF::FormattedText
4
4
  module InlineImageRenderer
5
- TemporaryPath = ::Asciidoctor::PDF::TemporaryPath
6
-
7
5
  module_function
8
6
 
9
7
  # Embeds the image object in this fragment into the document in place of the
@@ -36,6 +34,7 @@ module Asciidoctor::PDF::FormattedText
36
34
  pdf.float do
37
35
  image_obj.draw
38
36
  image_obj.document.warnings.each do |img_warning|
37
+ # NOTE shim logger can't be imported into a module, so use the one from the PDF document instead
39
38
  pdf.logger.warn %(problem encountered in image: #{data[:image_path]}; #{img_warning})
40
39
  end
41
40
  end
@@ -47,8 +46,6 @@ module Asciidoctor::PDF::FormattedText
47
46
 
48
47
  # prevent any text from being written
49
48
  fragment.conceal
50
- ensure
51
- data[:image_path].unlink if TemporaryPath === data[:image_path] && data[:image_path].exist?
52
49
  end
53
50
  end
54
51
  end
@@ -170,7 +170,7 @@ module Asciidoctor
170
170
  when :img
171
171
  attributes = node[:attributes]
172
172
  fragment = {
173
- image_path: attributes[:tmp] == 'true' ? attributes[:src].extend(TemporaryPath) : attributes[:src],
173
+ image_path: attributes[:src],
174
174
  image_format: attributes[:format],
175
175
  # a zero-width space in the text will cause the image to be duplicated
176
176
  text: (attributes[:alt].delete ZeroWidthSpace),
@@ -8,11 +8,7 @@ module Asciidoctor
8
8
  module PDF
9
9
  class ThemeLoader
10
10
  include ::Asciidoctor::PDF::Measurements
11
- if defined? ::Asciidoctor::Logging
12
- include ::Asciidoctor::Logging
13
- else
14
- include ::Asciidoctor::LoggingShim
15
- end
11
+ include ::Asciidoctor::Logging
16
12
 
17
13
  DataDir = ::File.absolute_path %(#{__dir__}/../../../data)
18
14
  ThemesDir = ::File.join DataDir, 'themes'
@@ -80,6 +76,10 @@ module Asciidoctor
80
76
  theme_data.base_font_color ||= '000000'
81
77
  theme_data.code_font_family ||= (theme_data.literal_font_family || 'Courier')
82
78
  theme_data.conum_font_family ||= (theme_data.literal_font_family || 'Courier')
79
+ if (heading_font_family = theme_data.heading_font_family)
80
+ theme_data.abstract_title_font_family ||= heading_font_family
81
+ theme_data.sidebar_title_font_family ||= heading_font_family
82
+ end
83
83
  end
84
84
  theme_data.__dir__ = theme_dir
85
85
  theme_data
@@ -91,7 +91,7 @@ module Asciidoctor
91
91
  data = data.each_line.map {|line|
92
92
  line.sub(HexColorEntryRx) { %(#{(m = $~)[:k]}: #{m[:h] || (m[:k].end_with? 'color') ? "'#{m[:v]}'" : m[:v]}) }
93
93
  }.join unless (::File.dirname filename) == ThemesDir
94
- yaml_data = ::SafeYAML.load data
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
  [*extends].each do |extend_path|
@@ -127,16 +127,17 @@ module Asciidoctor
127
127
  process_entry %(#{key}_#{subkey}), subval, data if subkey == 'catalog' || subkey == 'fallbacks'
128
128
  end if ::Hash === val
129
129
  elsif key == 'font_catalog'
130
- data[key] = ::Hash === val ? val.reduce({}) do |accum, (name, styles)| # rubocop:disable Style/EachWithObject
130
+ data[key] = ::Hash === val ? (val.reduce (val.delete 'merge') ? data[key] || {} : {} do |accum, (name, styles)| # rubocop:disable Style/EachWithObject
131
+ styles = %w(normal bold italic bold_italic).map {|style| [style, styles] }.to_h if ::String === styles
131
132
  accum[name] = styles.reduce({}) do |subaccum, (style, path)| # rubocop:disable Style/EachWithObject
132
133
  if (path.start_with? 'GEM_FONTS_DIR') && (sep = path[13])
133
134
  path = %(#{FontsDir}#{sep}#{path.slice 14, path.length})
134
135
  end
135
- subaccum[style] = expand_vars path, data
136
+ subaccum[style == 'regular' ? 'normal' : style] = expand_vars path, data
136
137
  subaccum
137
138
  end if ::Hash === styles
138
139
  accum
139
- end : {}
140
+ end) : {}
140
141
  elsif key == 'font_fallbacks'
141
142
  data[key] = ::Array === val ? val.map {|name| expand_vars name.to_s, data } : []
142
143
  elsif key.start_with? 'admonition_icon_'
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module PDF
5
- VERSION = '1.5.0.rc.2'
5
+ VERSION = '1.5.0.rc.3'
6
6
  end
7
7
  Pdf = PDF unless const_defined? :Pdf, false
8
8
  end
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.5.0.rc.2
4
+ version: 1.5.0.rc.3
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: 2020-01-09 00:00:00.000000000 Z
12
+ date: 2020-02-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: asciidoctor
@@ -169,14 +169,14 @@ dependencies:
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: 1.5.0
172
+ version: 1.6.0
173
173
  type: :runtime
174
174
  prerelease: false
175
175
  version_requirements: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 1.5.0
179
+ version: 1.6.0
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: rake
182
182
  requirement: !ruby/object:Gem::Requirement
@@ -191,34 +191,6 @@ dependencies:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
193
  version: 13.0.0
194
- - !ruby/object:Gem::Dependency
195
- name: deep-cover-core
196
- requirement: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: 0.7.0
201
- type: :development
202
- prerelease: false
203
- version_requirements: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: 0.7.0
208
- - !ruby/object:Gem::Dependency
209
- name: simplecov
210
- requirement: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "~>"
213
- - !ruby/object:Gem::Version
214
- version: 0.17.0
215
- type: :development
216
- prerelease: false
217
- version_requirements: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: 0.17.0
222
194
  - !ruby/object:Gem::Dependency
223
195
  name: rspec
224
196
  requirement: !ruby/object:Gem::Requirement
@@ -253,42 +225,14 @@ dependencies:
253
225
  requirements:
254
226
  - - "~>"
255
227
  - !ruby/object:Gem::Version
256
- version: 3.14.0
257
- type: :development
258
- prerelease: false
259
- version_requirements: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - "~>"
262
- - !ruby/object:Gem::Version
263
- version: 3.14.0
264
- - !ruby/object:Gem::Dependency
265
- name: rubocop
266
- requirement: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: 0.78.0
271
- type: :development
272
- prerelease: false
273
- version_requirements: !ruby/object:Gem::Requirement
274
- requirements:
275
- - - "~>"
276
- - !ruby/object:Gem::Version
277
- version: 0.78.0
278
- - !ruby/object:Gem::Dependency
279
- name: rubocop-rspec
280
- requirement: !ruby/object:Gem::Requirement
281
- requirements:
282
- - - "~>"
283
- - !ruby/object:Gem::Version
284
- version: 1.37.0
228
+ version: '3.0'
285
229
  type: :development
286
230
  prerelease: false
287
231
  version_requirements: !ruby/object:Gem::Requirement
288
232
  requirements:
289
233
  - - "~>"
290
234
  - !ruby/object:Gem::Version
291
- version: 1.37.0
235
+ version: '3.0'
292
236
  - !ruby/object:Gem::Dependency
293
237
  name: coderay
294
238
  requirement: !ruby/object:Gem::Requirement
@@ -336,6 +280,7 @@ files:
336
280
  - bin/asciidoctor-pdf-optimize
337
281
  - data/fonts/ABOUT-mplus1mn-subset
338
282
  - data/fonts/ABOUT-mplus1p-subset
283
+ - data/fonts/ABOUT-notoemoji-subset
339
284
  - data/fonts/ABOUT-notoserif-subset
340
285
  - data/fonts/LICENSE-mplus
341
286
  - data/fonts/LICENSE-notoserif
@@ -348,6 +293,7 @@ files:
348
293
  - data/fonts/mplus1mn-regular-ascii-conums.ttf
349
294
  - data/fonts/mplus1mn-regular-subset.ttf
350
295
  - data/fonts/mplus1p-regular-fallback.ttf
296
+ - data/fonts/notoemoji-subset.ttf
351
297
  - data/fonts/notoserif-bold-subset.ttf
352
298
  - data/fonts/notoserif-bold_italic-subset.ttf
353
299
  - data/fonts/notoserif-italic-subset.ttf
@@ -373,6 +319,7 @@ files:
373
319
  - lib/asciidoctor/pdf/ext/asciidoctor/section.rb
374
320
  - lib/asciidoctor/pdf/ext/core.rb
375
321
  - lib/asciidoctor/pdf/ext/core/array.rb
322
+ - lib/asciidoctor/pdf/ext/core/file.rb
376
323
  - lib/asciidoctor/pdf/ext/core/hash.rb
377
324
  - lib/asciidoctor/pdf/ext/core/numeric.rb
378
325
  - lib/asciidoctor/pdf/ext/core/object.rb
@@ -419,7 +366,6 @@ files:
419
366
  - lib/asciidoctor/pdf/pdfmark.rb
420
367
  - lib/asciidoctor/pdf/roman_numeral.rb
421
368
  - lib/asciidoctor/pdf/sanitizer.rb
422
- - lib/asciidoctor/pdf/temporary_path.rb
423
369
  - lib/asciidoctor/pdf/text_transformer.rb
424
370
  - lib/asciidoctor/pdf/theme_loader.rb
425
371
  - lib/asciidoctor/pdf/version.rb
@@ -446,7 +392,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
446
392
  - !ruby/object:Gem::Version
447
393
  version: 1.3.1
448
394
  requirements: []
449
- rubygems_version: 3.1.2
395
+ rubygems_version: 3.0.6
450
396
  signing_key:
451
397
  specification_version: 4
452
398
  summary: Converts AsciiDoc documents to PDF using Asciidoctor and Prawn