asciidoctor-fb2 0.2.4 → 0.3.0
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 +5 -0
- data/asciidoctor-fb2.gemspec +3 -2
- data/lib/asciidoctor_fb2.rb +15 -5
- data/lib/asciidoctor_fb2/version.rb +1 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2fe8aeff6fa259f44c96b2adcc9f2f2074e68b918f1dc4ec0d509691b34b67e4
|
4
|
+
data.tar.gz: 6ca94abe536faeeb639bea944ac21a90b6cabe6de42ad733fe7879148665441d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b18f5a752a529d7a13e7beb1cc30c097914d2696a39f1bfdb736a748b16ee2fcf32544a6fa6b5166b8611a524411a812acc4530550e366a19210dab66ac3cdd2
|
7
|
+
data.tar.gz: 8d6eee70a2a3bbaa328f8f2d9056cf4a25150b0bb6d398323d6ab509cb8a43489171c564492720b21acfda4b52bb0060867d11ad608a76371ba8cbf3565ced2a
|
data/CHANGELOG.adoc
CHANGED
@@ -7,6 +7,11 @@
|
|
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.3.0 (2020-11-25) - @slonopotamus
|
11
|
+
|
12
|
+
* output MIME type for FB2 embedded binary files. https://github.com/slonopotamus/asciidoctor-fb2/issues/19[#19]
|
13
|
+
* handle `+image:file[]+` syntax for `+:front-cover-image:+` document attribute. https://github.com/slonopotamus/asciidoctor-fb2/issues/19[#19]
|
14
|
+
|
10
15
|
== 0.2.4 (2020-11-24) - @slonopotamus
|
11
16
|
|
12
17
|
* add support for table captions
|
data/asciidoctor-fb2.gemspec
CHANGED
@@ -20,10 +20,11 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_runtime_dependency 'asciidoctor', '~> 2.0'
|
22
22
|
s.add_runtime_dependency 'fb2rb', '~> 0.4.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-rspec', '~>
|
28
|
+
s.add_development_dependency 'rubocop', '~> 1.4.0'
|
29
|
+
s.add_development_dependency 'rubocop-rspec', '~> 2.0.0'
|
29
30
|
end
|
data/lib/asciidoctor_fb2.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
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
|
@@ -13,6 +14,7 @@ module Asciidoctor
|
|
13
14
|
include ::Asciidoctor::Writer
|
14
15
|
|
15
16
|
CSV_DELIMITER_REGEX = /\s*,\s*/.freeze
|
17
|
+
IMAGE_ATTRIBUTE_VALUE_RX = /^image:{1,2}(.*?)\[(.*?)\]$/.freeze
|
16
18
|
|
17
19
|
register_for 'fb2'
|
18
20
|
|
@@ -62,8 +64,9 @@ module Asciidoctor
|
|
62
64
|
title_info.date = document_info.date = fb2date
|
63
65
|
|
64
66
|
unless (cover_image = node.attr('front-cover-image')).nil?
|
67
|
+
cover_image = Regexp.last_match(1) if cover_image =~ IMAGE_ATTRIBUTE_VALUE_RX
|
65
68
|
cover_image_path = node.image_uri(cover_image)
|
66
|
-
register_binary(node, cover_image_path)
|
69
|
+
register_binary(node, cover_image_path, 'image')
|
67
70
|
title_info.coverpage = FB2rb::Coverpage.new([%(##{cover_image_path})])
|
68
71
|
end
|
69
72
|
|
@@ -247,13 +250,13 @@ module Asciidoctor
|
|
247
250
|
|
248
251
|
# @param node [Asciidoctor::Inline]
|
249
252
|
def convert_inline_image(node)
|
250
|
-
image_attrs = register_binary(node, node.image_uri(node.target))
|
253
|
+
image_attrs = register_binary(node, node.image_uri(node.target), 'image')
|
251
254
|
%(<image #{image_attrs * ' '}/>)
|
252
255
|
end
|
253
256
|
|
254
257
|
# @param node [Asciidoctor::Block]
|
255
258
|
def convert_image(node)
|
256
|
-
image_attrs = register_binary(node, node.image_uri(node.attr('target')))
|
259
|
+
image_attrs = register_binary(node, node.image_uri(node.attr('target')), 'image')
|
257
260
|
image_attrs << %(title="#{node.captioned_title}") if node.title?
|
258
261
|
image_attrs << %(id="#{node.id}") if node.id
|
259
262
|
%(<p><image #{image_attrs * ' '}/></p>)
|
@@ -266,9 +269,15 @@ module Asciidoctor
|
|
266
269
|
doc
|
267
270
|
end
|
268
271
|
|
272
|
+
def determine_mime_type(filename, media_type)
|
273
|
+
mime_types = MIME::Types.type_for(filename)
|
274
|
+
mime_types.delete_if { |x| x.media_type != media_type }
|
275
|
+
mime_types.empty? ? nil : mime_types[0].content_type
|
276
|
+
end
|
277
|
+
|
269
278
|
# @param node [Asciidoctor::AbstractNode]
|
270
279
|
# @param target [String]
|
271
|
-
def register_binary(node, target) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
280
|
+
def register_binary(node, target, media_type) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
272
281
|
unless Asciidoctor::Helpers.uriish?(target)
|
273
282
|
out_dir = node.attr('outdir', nil, true) || doc_option(node.document, :to_dir)
|
274
283
|
fs_path = File.join(out_dir, target)
|
@@ -282,7 +291,8 @@ module Asciidoctor
|
|
282
291
|
target.sub!('/', '_')
|
283
292
|
target.sub!('\\', '_')
|
284
293
|
|
285
|
-
|
294
|
+
mime_type = determine_mime_type(target, media_type)
|
295
|
+
@book.add_binary(target, fs_path, mime_type)
|
286
296
|
target = %(##{target})
|
287
297
|
end
|
288
298
|
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.3.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-
|
11
|
+
date: 2020-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.4.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,28 @@ dependencies:
|
|
86
100
|
requirements:
|
87
101
|
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
103
|
+
version: 1.4.0
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: 1.4.0
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rubocop-rspec
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
117
|
+
version: 2.0.0
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
124
|
+
version: 2.0.0
|
111
125
|
description:
|
112
126
|
email:
|
113
127
|
- marat@slonopotamus.org
|