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 +4 -4
- data/.github/dependabot.yml +5 -0
- data/.github/workflows/ci.yml +6 -9
- data/.github/workflows/release.yml +5 -10
- data/CHANGELOG.adoc +33 -1
- data/README.adoc +2 -1
- data/asciidoctor-fb2.gemspec +6 -4
- data/data/fb2.css +3 -0
- data/lib/asciidoctor_fb2.rb +105 -33
- data/lib/asciidoctor_fb2/version.rb +1 -1
- metadata +39 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c555e2357c435e3c610002145c7b4a58b82d7530047d8fa009d921e2aebbfde5
|
4
|
+
data.tar.gz: 6e1a5b3c71aa773f61a0a62bd6239c8e4b921b11d25662c2760fc732d4da777e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0c53813ad5e425649c0725672328ec5b9ce11d25469efe3adf784868a606efd6addba363ca1eba1f8b07a05814d6b7a48e5e3a407444516b6999b792af8ca3e
|
7
|
+
data.tar.gz: d71cc775b12df68fa8140c26e3d36268493ddc316c078efee3a4c27d17d7d4c9a0bf56f9f9d22ca586e94607e6e72f658867e5f11cc6316364c6fbfed3571be9
|
data/.github/dependabot.yml
CHANGED
data/.github/workflows/ci.yml
CHANGED
@@ -9,18 +9,16 @@ jobs:
|
|
9
9
|
- name: Set up Ruby
|
10
10
|
uses: ruby/setup-ruby@v1
|
11
11
|
with:
|
12
|
-
ruby-version:
|
13
|
-
|
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
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
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:
|
14
|
+
ruby-version: '3.0'
|
15
15
|
- name: Publish to RubyGems.org
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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:
|
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:
|
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
|
|
data/asciidoctor-fb2.gemspec
CHANGED
@@ -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/
|
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.
|
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', '~>
|
28
|
-
s.add_development_dependency 'rubocop-
|
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
data/lib/asciidoctor_fb2.rb
CHANGED
@@ -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(
|
78
|
-
|
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
|
-
|
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 = [
|
365
|
-
node.
|
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 =
|
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 * ' '}
|
463
|
+
lines << %(<#{cell_tag_name} #{cell_attrs * ' '}>#{cell_content}</#{cell_tag_name}>)
|
392
464
|
end
|
393
465
|
lines << '</tr>'
|
394
466
|
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.
|
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:
|
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.
|
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.
|
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:
|
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.
|
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:
|
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:
|
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/
|
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.
|
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
|