asciidoctor-fb2 0.2.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcbbc6c8b9fbfbb6eb2444a9054f8676aed178409809cc47977bccdd5011e94c
4
- data.tar.gz: 5fd22ce5a853988ce66c483637b1b2fe0ca42154d2ab4ee0b277bbb84a96fa7b
3
+ metadata.gz: c555e2357c435e3c610002145c7b4a58b82d7530047d8fa009d921e2aebbfde5
4
+ data.tar.gz: 6e1a5b3c71aa773f61a0a62bd6239c8e4b921b11d25662c2760fc732d4da777e
5
5
  SHA512:
6
- metadata.gz: b18f69261c30b1c486c6ef2ec41df8ef23e45ccb818cdc1869d5e525dc67eb841bbb83e51b473e5c6d50a868535a49530b0ac260c790597254df01656b1bb859
7
- data.tar.gz: bbe16778d9bc390c7d492bea0a9588ac24bc9a67490d74950ccf68c65e699f42a0f4112b42d67c1a8aca472dae335ca038a529caaf087f6017f5bfad7e04c1e3
6
+ metadata.gz: f0c53813ad5e425649c0725672328ec5b9ce11d25469efe3adf784868a606efd6addba363ca1eba1f8b07a05814d6b7a48e5e3a407444516b6999b792af8ca3e
7
+ data.tar.gz: d71cc775b12df68fa8140c26e3d36268493ddc316c078efee3a4c27d17d7d4c9a0bf56f9f9d22ca586e94607e6e72f658867e5f11cc6316364c6fbfed3571be9
@@ -6,3 +6,8 @@ updates:
6
6
  directory: "/"
7
7
  schedule:
8
8
  interval: "daily"
9
+
10
+ - package-ecosystem: "github-actions"
11
+ directory: "/"
12
+ schedule:
13
+ interval: "daily"
@@ -9,18 +9,16 @@ jobs:
9
9
  - name: Set up Ruby
10
10
  uses: ruby/setup-ruby@v1
11
11
  with:
12
- ruby-version: 2.7
13
- - name: Build
14
- run: bundle install --jobs 4 --retry 3
12
+ ruby-version: '3.0'
13
+ bundler-cache: true
15
14
  - name: Lint
16
15
  run: bundle exec rake lint
17
16
  test:
18
17
  strategy:
19
18
  matrix:
20
- # ruby: [jruby, 2.4, 2.5, 2.6, 2.7]
21
- ruby: [2.4, 2.5, 2.6, 2.7]
22
- platform: [ubuntu-latest, macos-latest, windows-latest]
23
- runs-on: ${{ matrix.platform }}
19
+ ruby: ['jruby', '2.4', '2.5', '2.6', '2.7', '3.0']
20
+ os: [ubuntu-latest, macos-latest, windows-latest]
21
+ runs-on: ${{ matrix.os }}
24
22
  steps:
25
23
  - name: Checkout
26
24
  uses: actions/checkout@v2
@@ -28,7 +26,6 @@ jobs:
28
26
  uses: ruby/setup-ruby@v1
29
27
  with:
30
28
  ruby-version: ${{ matrix.ruby }}
31
- - name: Build
32
- run: bundle install --jobs 4 --retry 3
29
+ bundler-cache: true
33
30
  - name: Test
34
31
  run: bundle exec rake spec
@@ -11,14 +11,9 @@ jobs:
11
11
  - name: Set up Ruby
12
12
  uses: ruby/setup-ruby@v1
13
13
  with:
14
- ruby-version: 2.7
14
+ ruby-version: '3.0'
15
15
  - name: Publish to RubyGems.org
16
- run: |
17
- mkdir -p $HOME/.gem
18
- touch $HOME/.gem/credentials
19
- chmod 0600 $HOME/.gem/credentials
20
- printf -- "---\n:rubygems_api_key: ${RUBYGEMS_API_KEY}\n" > $HOME/.gem/credentials
21
- gem build *.gemspec
22
- gem push *.gem
23
- env:
24
- RUBYGEMS_API_KEY: ${{secrets.RUBYGEMS_API_KEY}}
16
+ uses: dawidd6/action-publish-gem@v1
17
+ with:
18
+ api_key: ${{ secrets.RUBYGEMS_API_KEY }}
19
+
data/CHANGELOG.adoc CHANGED
@@ -1,12 +1,44 @@
1
1
  = {project-name} Changelog
2
2
  :project-name: Asciidoctor FB2
3
3
  :project-handle: asciidoctor-fb2
4
- :slug: slonopotamus/{project-handle}
4
+ :slug: asciidoctor/{project-handle}
5
5
  :uri-project: https://github.com/{slug}
6
6
 
7
7
  This document provides a high-level view of the changes to the {project-name} by release.
8
8
  For a detailed view of what has changed, refer to the {uri-project}/commits/master[commit history] on GitHub.
9
9
 
10
+ == 0.5.0 (2021-03-31) - @slonopotamus
11
+
12
+ * add support for `indexterm` and `intexterm2` inline macros
13
+ * add support for inline callouts
14
+ * add support for open blocks
15
+ * add support for example blocks
16
+ * fix crash if document contains a page break
17
+ * add support for floating title
18
+ * fix crash if document contains thematic break
19
+
20
+ == 0.4.0 (2021-02-14) - @slonopotamus
21
+
22
+ * fix table cells markup
23
+ * bump fb2rb to 0.6.0
24
+
25
+ == 0.3.1 (2020-11-29) - @slonopotamus
26
+
27
+ * fix crash on `+toc::[]+` macro
28
+ * avoid adding `notes` body to FB2 if document doesn't have any footnotes
29
+ * fix invalid XML syntax for table cells
30
+
31
+ == 0.3.0 (2020-11-25) - @slonopotamus
32
+
33
+ * output MIME type for FB2 embedded binary files. https://github.com/slonopotamus/asciidoctor-fb2/issues/19[#19]
34
+ * handle `+image:file[]+` syntax for `+:front-cover-image:+` document attribute. https://github.com/slonopotamus/asciidoctor-fb2/issues/19[#19]
35
+
36
+ == 0.2.4 (2020-11-24) - @slonopotamus
37
+
38
+ * add support for table captions
39
+ * fix images from subfolders not loaded in Calibre
40
+ * add initial CSS support
41
+
10
42
  == 0.2.3 (2020-11-24) - @slonopotamus
11
43
 
12
44
  * add support for literal blocks
data/README.adoc CHANGED
@@ -2,11 +2,12 @@
2
2
  Marat Radchenko <marat@slonopotamus.org>
3
3
  :project-name: Asciidoctor FB2
4
4
  :project-handle: asciidoctor-fb2
5
- :slug: slonopotamus/{project-handle}
5
+ :slug: asciidoctor/{project-handle}
6
6
  :uri-project: https://github.com/{slug}
7
7
  :uri-ci: {uri-project}/actions?query=branch%3Amaster
8
8
  :uri-gem: https://rubygems.org/gems/{project-handle}
9
9
 
10
+ image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg[project chat,link=https://asciidoctor.zulipchat.com/]
10
11
  image:https://img.shields.io/gem/v/{project-handle}.svg[Latest Release,link={uri-gem}]
11
12
  image:{uri-project}/workflows/CI/badge.svg?branch=master[Build Status,link={uri-ci}]
12
13
 
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.authors = ['Marat Radchenko']
9
9
  s.email = ['marat@slonopotamus.org']
10
10
  s.summary = 'Converts AsciiDoc documents to FB2 e-book formats'
11
- s.homepage = 'https://github.com/slonopotamus/asciidoctor-fb2'
11
+ s.homepage = 'https://github.com/asciidoctor/asciidoctor-fb2'
12
12
  s.license = 'MIT'
13
13
  s.required_ruby_version = '>= 2.4.0'
14
14
 
@@ -19,11 +19,13 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ['lib']
20
20
 
21
21
  s.add_runtime_dependency 'asciidoctor', '~> 2.0'
22
- s.add_runtime_dependency 'fb2rb', '~> 0.3.0'
22
+ s.add_runtime_dependency 'fb2rb', '~> 0.6.0'
23
+ s.add_runtime_dependency 'mime-types', '~> 3.0'
23
24
 
24
25
  s.add_development_dependency 'asciidoctor-diagram', '~> 2.0'
25
26
  s.add_development_dependency 'rake', '~> 13.0'
26
27
  s.add_development_dependency 'rspec', '~> 3.10.0'
27
- s.add_development_dependency 'rubocop', '~> 0.93.0'
28
- s.add_development_dependency 'rubocop-rspec', '~> 1.44.0'
28
+ s.add_development_dependency 'rubocop', '~> 1.12.0'
29
+ s.add_development_dependency 'rubocop-rake', '~> 0.5.0'
30
+ s.add_development_dependency 'rubocop-rspec', '~> 2.2.0'
29
31
  end
data/data/fb2.css ADDED
@@ -0,0 +1,3 @@
1
+ body {
2
+ text-align: justify
3
+ }
@@ -3,14 +3,18 @@
3
3
  require 'asciidoctor'
4
4
  require 'asciidoctor/converter'
5
5
  require 'fb2rb'
6
+ require 'mime/types'
6
7
 
7
8
  module Asciidoctor
8
9
  module FB2
10
+ DATA_DIR = File.expand_path(File.join(__dir__, '..', 'data'))
11
+
9
12
  # Converts AsciiDoc documents to FB2 e-book formats
10
13
  class Converter < Asciidoctor::Converter::Base # rubocop:disable Metrics/ClassLength
11
14
  include ::Asciidoctor::Writer
12
15
 
13
16
  CSV_DELIMITER_REGEX = /\s*,\s*/.freeze
17
+ IMAGE_ATTRIBUTE_VALUE_RX = /^image:{1,2}(.*?)\[(.*?)\]$/.freeze
14
18
 
15
19
  register_for 'fb2'
16
20
 
@@ -25,6 +29,8 @@ module Asciidoctor
25
29
  # @param node [Asciidoctor::Document]
26
30
  def convert_document(node) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
27
31
  @book = FB2rb::Book.new
32
+ @book.add_stylesheet('text/css', File.join(DATA_DIR, 'fb2.css'))
33
+
28
34
  document_info = @book.description.document_info
29
35
  title_info = @book.description.title_info
30
36
 
@@ -38,29 +44,28 @@ module Asciidoctor
38
44
  end
39
45
  node.authors.each do |author|
40
46
  title_info.authors << FB2rb::Author.new(
41
- author.firstname,
42
- author.middlename,
43
- author.lastname,
44
- nil,
45
- [],
46
- author.email.nil? ? [] : [author.email]
47
+ first_name: author.firstname,
48
+ middle_name: author.middlename,
49
+ last_name: author.lastname,
50
+ emails: author.email.nil? ? [] : [author.email]
47
51
  )
48
52
  end
49
53
 
50
54
  if node.attr? 'series-name'
51
55
  series_name = node.attr 'series-name'
52
56
  series_volume = node.attr 'series-volume', 1
53
- title_info.sequences << FB2rb::Sequence.new(series_name, series_volume)
57
+ title_info.sequences << FB2rb::Sequence.new(name: series_name, number: series_volume)
54
58
  end
55
59
 
56
60
  date = node.attr('revdate') || node.attr('docdate')
57
- fb2date = FB2rb::FB2Date.new(date, Date.parse(date))
61
+ fb2date = FB2rb::FB2Date.new(display_value: date, value: Date.parse(date))
58
62
  title_info.date = document_info.date = fb2date
59
63
 
60
64
  unless (cover_image = node.attr('front-cover-image')).nil?
65
+ cover_image = Regexp.last_match(1) if cover_image =~ IMAGE_ATTRIBUTE_VALUE_RX
61
66
  cover_image_path = node.image_uri(cover_image)
62
- register_binary(node, cover_image_path)
63
- title_info.coverpage = FB2rb::Coverpage.new([%(##{cover_image_path})])
67
+ register_binary(node, cover_image_path, 'image')
68
+ title_info.coverpage = FB2rb::Coverpage.new(images: [%(##{cover_image_path})])
64
69
  end
65
70
 
66
71
  document_info.id = node.attr('uuid', '')
@@ -74,8 +79,8 @@ module Asciidoctor
74
79
  <title><p>#{node.doctitle}</p></title>
75
80
  #{node.content}
76
81
  </section>)
77
- @book.bodies << FB2rb::Body.new(nil, body)
78
- if node.document.footnotes
82
+ @book.bodies << FB2rb::Body.new(content: body)
83
+ unless node.document.footnotes.empty?
79
84
  notes = []
80
85
  node.document.footnotes.each do |footnote|
81
86
  notes << %(<section id="note-#{footnote.index}">
@@ -83,7 +88,7 @@ module Asciidoctor
83
88
  <p>#{footnote.text}</p>
84
89
  </section>)
85
90
  end
86
- @book.bodies << FB2rb::Body.new('notes', notes * "\n")
91
+ @book.bodies << FB2rb::Body.new(name: 'notes', content: notes * "\n")
87
92
  end
88
93
  @book
89
94
  end
@@ -108,6 +113,26 @@ module Asciidoctor
108
113
  end
109
114
  end
110
115
 
116
+ # @param _node [Asciidoctor::Block]
117
+ def convert_toc(_node)
118
+ ''
119
+ end
120
+
121
+ # @param _node [Asciidoctor::Block]
122
+ def convert_page_break(_node)
123
+ ''
124
+ end
125
+
126
+ # @param node [Asciidoctor::Block]
127
+ def convert_floating_title(node)
128
+ %(<subtitle id="#{node.id}">#{node.title}</subtitle>)
129
+ end
130
+
131
+ # @param _node [Asciidoctor::Block]
132
+ def convert_thematic_break(_node)
133
+ ''
134
+ end
135
+
111
136
  # @param node [Asciidoctor::Block]
112
137
  def convert_paragraph(node)
113
138
  lines = [
@@ -205,6 +230,14 @@ module Asciidoctor
205
230
  node.text
206
231
  end
207
232
 
233
+ # @param node [Asciidoctor::Block]
234
+ def convert_example(node)
235
+ lines = []
236
+ lines << %(<p><strong>#{node.title}:</strong></p>) if node.title?
237
+ lines << node.content
238
+ lines * "\n"
239
+ end
240
+
208
241
  # @param node [Asciidoctor::Inline]
209
242
  def convert_inline_button(node)
210
243
  %([<strong>#{node.text}</strong>])
@@ -243,18 +276,38 @@ module Asciidoctor
243
276
 
244
277
  # @param node [Asciidoctor::Inline]
245
278
  def convert_inline_image(node)
246
- image_attrs = register_binary(node, node.image_uri(node.target))
279
+ image_attrs = register_binary(node, node.image_uri(node.target), 'image')
247
280
  %(<image #{image_attrs * ' '}/>)
248
281
  end
249
282
 
283
+ # @param node [Asciidoctor::Inline]
284
+ def convert_inline_indexterm(node)
285
+ node.type == :visible ? node.text : ''
286
+ end
287
+
288
+ # @param node [Asciidoctor::Inline]
289
+ def convert_inline_callout(node)
290
+ %(<strong>(#{node.text})</strong>)
291
+ end
292
+
293
+ # @param node [Asciidoctor::List]
294
+ def convert_colist(node)
295
+ convert_olist(node)
296
+ end
297
+
250
298
  # @param node [Asciidoctor::Block]
251
299
  def convert_image(node)
252
- image_attrs = register_binary(node, node.image_uri(node.attr('target')))
300
+ image_attrs = register_binary(node, node.image_uri(node.attr('target')), 'image')
253
301
  image_attrs << %(title="#{node.captioned_title}") if node.title?
254
302
  image_attrs << %(id="#{node.id}") if node.id
255
303
  %(<p><image #{image_attrs * ' '}/></p>)
256
304
  end
257
305
 
306
+ # @param node [Asciidoctor::Block]
307
+ def convert_open(node)
308
+ convert_paragraph(node)
309
+ end
310
+
258
311
  # @param doc [Asciidoctor::Document]
259
312
  # @return [Asciidoctor::Document]
260
313
  def root_document(doc)
@@ -262,9 +315,15 @@ module Asciidoctor
262
315
  doc
263
316
  end
264
317
 
318
+ def determine_mime_type(filename, media_type)
319
+ mime_types = MIME::Types.type_for(filename)
320
+ mime_types.delete_if { |x| x.media_type != media_type }
321
+ mime_types.empty? ? nil : mime_types[0].content_type
322
+ end
323
+
265
324
  # @param node [Asciidoctor::AbstractNode]
266
325
  # @param target [String]
267
- def register_binary(node, target) # rubocop:disable Metrics/MethodLength
326
+ def register_binary(node, target, media_type) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
268
327
  unless Asciidoctor::Helpers.uriish?(target)
269
328
  out_dir = node.attr('outdir', nil, true) || doc_option(node.document, :to_dir)
270
329
  fs_path = File.join(out_dir, target)
@@ -274,7 +333,12 @@ module Asciidoctor
274
333
  end
275
334
 
276
335
  if File.readable?(fs_path)
277
- @book.add_binary(target, fs_path)
336
+ # Calibre fails to load images if they contain path separators
337
+ target.sub!('/', '_')
338
+ target.sub!('\\', '_')
339
+
340
+ mime_type = determine_mime_type(target, media_type)
341
+ @book.add_binary(target, fs_path, mime_type)
278
342
  target = %(##{target})
279
343
  end
280
344
  end
@@ -359,28 +423,36 @@ module Asciidoctor
359
423
  lines * "\n"
360
424
  end
361
425
 
426
+ # @param cell [Asciidoctor::Table::Cell]
427
+ def get_cell_content(cell) # rubocop:disable Metrics/MethodLength
428
+ case cell.style
429
+ when :asciidoc
430
+ cell.content
431
+ when :emphasis
432
+ %(<emphasis>#{cell.text}</emphasis>)
433
+ when :literal
434
+ %(<code>#{cell.text}</code>)
435
+ when :monospaced
436
+ %(<code>#{cell.text}</code>)
437
+ when :strong
438
+ %(<strong>#{cell.text}</strong>)
439
+ else
440
+ cell.text
441
+ end
442
+ end
443
+
362
444
  # @param node [Asciidoctor::Table]
363
445
  def convert_table(node) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
364
- lines = ['<table>']
365
- node.rows.to_h.each do |tsec, rows| # rubocop:disable Metrics/BlockLength
446
+ lines = []
447
+ lines << %(<subtitle>#{node.captioned_title}</subtitle>) if node.title?
448
+ lines << '<table>'
449
+ node.rows.to_h.each do |tsec, rows|
366
450
  next if rows.empty?
367
451
 
368
452
  rows.each do |row|
369
453
  lines << '<tr>'
370
454
  row.each do |cell|
371
- cell_content = if tsec == :head
372
- cell.text
373
- else
374
- case cell.style
375
- when :asciidoc
376
- cell.content
377
- when :literal
378
- %(<p><pre>#{cell.text}</pre></p>)
379
- else
380
- (cell_content = cell.content).empty? ? '' : %(<p>#{cell_content * "</p>\n<p>"}</p>)
381
- end
382
- end
383
-
455
+ cell_content = get_cell_content(cell)
384
456
  cell_tag_name = (tsec == :head || cell.style == :header ? 'th' : 'td')
385
457
  cell_attrs = [
386
458
  %(halign="#{cell.attr 'halign'}"),
@@ -388,7 +460,7 @@ module Asciidoctor
388
460
  ]
389
461
  cell_attrs << %(colspan="#{cell.colspan}") if cell.colspan
390
462
  cell_attrs << %(rowspan="#{cell.rowspan}") if cell.rowspan
391
- lines << %(<#{cell_tag_name} #{cell_attrs * ' '}">#{cell_content}</#{cell_tag_name}>)
463
+ lines << %(<#{cell_tag_name} #{cell_attrs * ' '}>#{cell_content}</#{cell_tag_name}>)
392
464
  end
393
465
  lines << '</tr>'
394
466
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module FB2
5
- VERSION = '0.2.3'
5
+ VERSION = '0.5.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-fb2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marat Radchenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-24 00:00:00.000000000 Z
11
+ date: 2021-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -30,14 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.3.0
33
+ version: 0.6.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.3.0
40
+ version: 0.6.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: mime-types
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: asciidoctor-diagram
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,28 +100,42 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.93.0
103
+ version: 1.12.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.12.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rake
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.5.0
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: 0.93.0
124
+ version: 0.5.0
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: rubocop-rspec
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
129
  - - "~>"
102
130
  - !ruby/object:Gem::Version
103
- version: 1.44.0
131
+ version: 2.2.0
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
- version: 1.44.0
138
+ version: 2.2.0
111
139
  description:
112
140
  email:
113
141
  - marat@slonopotamus.org
@@ -129,6 +157,7 @@ files:
129
157
  - Rakefile
130
158
  - asciidoctor-fb2.gemspec
131
159
  - bin/asciidoctor-fb2
160
+ - data/fb2.css
132
161
  - lib/asciidoctor_fb2.rb
133
162
  - lib/asciidoctor_fb2/version.rb
134
163
  - tasks/bundler.rake
@@ -136,7 +165,7 @@ files:
136
165
  - tasks/console.rake
137
166
  - tasks/rspec.rake
138
167
  - tasks/rubocop.rake
139
- homepage: https://github.com/slonopotamus/asciidoctor-fb2
168
+ homepage: https://github.com/asciidoctor/asciidoctor-fb2
140
169
  licenses:
141
170
  - MIT
142
171
  metadata: {}
@@ -155,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
184
  - !ruby/object:Gem::Version
156
185
  version: '0'
157
186
  requirements: []
158
- rubygems_version: 3.1.4
187
+ rubygems_version: 3.2.3
159
188
  signing_key:
160
189
  specification_version: 4
161
190
  summary: Converts AsciiDoc documents to FB2 e-book formats