asciidoctor-fb2 0.2.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|