epub-maker 0.0.2 → 0.0.3
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.markdown +6 -0
- data/README.markdown +5 -2
- data/epub-maker.gemspec +4 -6
- data/lib/epub/maker.rb +9 -17
- data/lib/epub/maker/ocf.rb +3 -8
- data/lib/epub/maker/ocf/physical_container.rb +24 -0
- data/lib/epub/maker/ocf/physical_container/archive_zip.rb +17 -0
- data/lib/epub/maker/ocf/physical_container/zipruby.rb +17 -0
- data/lib/epub/maker/publication.rb +11 -20
- data/lib/epub/maker/version.rb +1 -1
- data/test/helper.rb +2 -1
- metadata +17 -44
- data/bin/epub-maker +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0bd5ce3c4ef3e3461c4148891ec762164f635b7
|
4
|
+
data.tar.gz: a102f5e8bfb4743d2e585127d7174dae326abb7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33e8be24da60d5eafb31c24784d0cf51440c3660e9ce6e86047d2c4a89b83e5dbed14efff60ff4148ed1224b2a3eb7c1008d17d99eba5a98466a70b302962987
|
7
|
+
data.tar.gz: 1a2272a5ad1f6a09e2e353fc7dc0c65bad265e2921c63cac2a9c8ddf14e2e3344e0a30661de2570be8823f8988350d0d1a8048a0a58ffba86a3476068d60a04b
|
data/CHANGELOG.markdown
CHANGED
data/README.markdown
CHANGED
@@ -133,8 +133,8 @@ For APIs of parsed EPUB book, see [EPUB Parser's documentation][epub-parser-doc]
|
|
133
133
|
|
134
134
|
Requirements
|
135
135
|
------------
|
136
|
-
* Ruby 2.
|
137
|
-
* C compiler to build
|
136
|
+
* Ruby 2.1 or later
|
137
|
+
* C compiler to build Nokogiri gems
|
138
138
|
|
139
139
|
Todo
|
140
140
|
----
|
@@ -145,6 +145,9 @@ Todo
|
|
145
145
|
|
146
146
|
Recent Changes
|
147
147
|
--------------
|
148
|
+
### 0.0.3
|
149
|
+
* Bump up required Ruby version: >= 2.0.0 -> >= 2.1.0
|
150
|
+
|
148
151
|
### 0.0.2
|
149
152
|
* Detect media type of files more strictly
|
150
153
|
* Keep temporary directory remained on error in `EPUB::Maker.make`
|
data/epub-maker.gemspec
CHANGED
@@ -18,9 +18,8 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
19
19
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
20
20
|
gem.require_paths = ["lib"]
|
21
|
-
gem.required_ruby_version = '>= 2.
|
21
|
+
gem.required_ruby_version = '>= 2.1.0'
|
22
22
|
|
23
|
-
gem.add_runtime_dependency 'zipruby'
|
24
23
|
gem.add_runtime_dependency 'epub-parser', '>= 0.2.0'
|
25
24
|
gem.add_runtime_dependency 'pathname-common_prefix'
|
26
25
|
gem.add_runtime_dependency 'mimemagic'
|
@@ -29,14 +28,13 @@ Gem::Specification.new do |gem|
|
|
29
28
|
gem.add_runtime_dependency 'rake'
|
30
29
|
gem.add_runtime_dependency 'addressable', '>= 2.3.5'
|
31
30
|
|
32
|
-
gem.add_development_dependency '
|
31
|
+
gem.add_development_dependency 'zipruby'
|
32
|
+
gem.add_development_dependency 'test-unit'
|
33
|
+
gem.add_development_dependency 'test-unit-notify'
|
33
34
|
gem.add_development_dependency 'epubcheck'
|
34
35
|
gem.add_development_dependency 'epzip'
|
35
36
|
gem.add_development_dependency 'simplecov'
|
36
37
|
gem.add_development_dependency 'pry'
|
37
38
|
gem.add_development_dependency 'pry-doc'
|
38
39
|
gem.add_development_dependency 'yard'
|
39
|
-
gem.add_development_dependency 'redcarpet'
|
40
|
-
gem.add_development_dependency 'gem-man'
|
41
|
-
gem.add_development_dependency 'ronn'
|
42
40
|
end
|
data/lib/epub/maker.rb
CHANGED
@@ -35,16 +35,16 @@ module EPUB
|
|
35
35
|
archive.add_entry file
|
36
36
|
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
end
|
38
|
+
book.epub_file = temp_path.to_path
|
39
|
+
yield book if block_given?
|
40
|
+
book.save
|
42
41
|
|
43
42
|
path.open 'wb' do |file|
|
44
43
|
raise Error, "File locked by other process: #{path}" unless file.flock File::LOCK_SH|File::LOCK_NB
|
45
44
|
($VERBOSE ? ::FileUtils::Verbose : ::FileUtils).move temp_path.to_path, path.to_path
|
46
45
|
end
|
47
46
|
dir.remove_entry_secure
|
47
|
+
book.epub_file = path.to_path
|
48
48
|
book
|
49
49
|
|
50
50
|
# validate
|
@@ -78,12 +78,12 @@ module EPUB
|
|
78
78
|
package
|
79
79
|
end
|
80
80
|
|
81
|
-
# @param archive [
|
82
|
-
def save
|
83
|
-
ocf.save
|
84
|
-
package.save
|
81
|
+
# @param archive [OCF::PhysicalContainer]
|
82
|
+
def save
|
83
|
+
ocf.save
|
84
|
+
package.save
|
85
85
|
resources.each do |item|
|
86
|
-
item.save
|
86
|
+
item.save
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
@@ -115,14 +115,6 @@ class Pathname
|
|
115
115
|
FileUtils.remove_entry_secure to_path
|
116
116
|
end
|
117
117
|
|
118
|
-
unless method_defined? :write
|
119
|
-
def write(string, mode='w', perm=0666)
|
120
|
-
open mode, perm do |file|
|
121
|
-
file << string
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
118
|
unless method_defined? :/
|
127
119
|
alias / +
|
128
120
|
end
|
data/lib/epub/maker/ocf.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'epub/ocf'
|
2
|
+
require 'epub/maker/ocf/physical_container'
|
2
3
|
|
3
4
|
# @todo Use refinement
|
4
5
|
module EPUB
|
@@ -10,9 +11,8 @@ module EPUB
|
|
10
11
|
self
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
self.container.save archive if self.container
|
14
|
+
def save
|
15
|
+
book.container_adapter.save book.epub_file, File.join(DIRECTORY, Container::FILE), self.container.to_xml if self.container
|
16
16
|
end
|
17
17
|
|
18
18
|
# @overload make_container
|
@@ -41,11 +41,6 @@ module EPUB
|
|
41
41
|
}.to_xml
|
42
42
|
end
|
43
43
|
|
44
|
-
# @param archive [Zip::Archive]
|
45
|
-
def save(archive)
|
46
|
-
archive.add_buffer File.join(DIRECTORY, Container::FILE), to_xml
|
47
|
-
end
|
48
|
-
|
49
44
|
# @option full_path [String|nil] full path to package document file in container such like "OPS/content.opf"
|
50
45
|
# @option media_type [String] media type
|
51
46
|
# @yield [Rootfile] rootfile
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
require 'epub/ocf/physical_container'
|
3
|
+
[
|
4
|
+
[:ArchiveZip, 'archive_zip'],
|
5
|
+
[:Zipruby, 'zipruby']
|
6
|
+
].each do |(class_name, feature_name)|
|
7
|
+
if EPUB::OCF::PhysicalContainer.const_defined? class_name
|
8
|
+
require "epub/maker/ocf/physical_container/#{feature_name}"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
module EPUB
|
13
|
+
class OCF
|
14
|
+
class PhysicalContainer
|
15
|
+
class << self
|
16
|
+
def save(container_path, path_name, content)
|
17
|
+
open(container_path) {|container|
|
18
|
+
container.save(path_name, content)
|
19
|
+
}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'epub/ocf/physical_container/archive_zip'
|
2
|
+
|
3
|
+
module EPUB
|
4
|
+
class OCF
|
5
|
+
class PhysicalContainer
|
6
|
+
class ArchiveZip < self
|
7
|
+
def save(path_name, content)
|
8
|
+
::Dir.mktmpdir do |dir|
|
9
|
+
path = ::File.join(dir, ::File.basename(path_name))
|
10
|
+
::File.write path, content
|
11
|
+
Archive::Zip.archive @container_path, path, path_prefix: ::File.dirname(path_name)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'epub/ocf/physical_container/zipruby'
|
2
|
+
|
3
|
+
module EPUB
|
4
|
+
class OCF
|
5
|
+
class PhysicalContainer
|
6
|
+
class Zipruby < self
|
7
|
+
def save(path_name, content)
|
8
|
+
if @archive
|
9
|
+
@archive.add_or_replace_buffer path_name, content
|
10
|
+
else
|
11
|
+
open {|container| container.save(path_name, content)}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -40,15 +40,9 @@ module EPUB
|
|
40
40
|
self
|
41
41
|
end
|
42
42
|
|
43
|
-
def edit
|
43
|
+
def edit
|
44
44
|
yield self if block_given?
|
45
|
-
|
46
|
-
save archive
|
47
|
-
else
|
48
|
-
Zip::Archive.open manifest.package.book.epub_file do |archive|
|
49
|
-
save archive
|
50
|
-
end
|
51
|
-
end
|
45
|
+
save
|
52
46
|
end
|
53
47
|
|
54
48
|
def make_metadata
|
@@ -83,8 +77,8 @@ module EPUB
|
|
83
77
|
bindings
|
84
78
|
end
|
85
79
|
|
86
|
-
def save
|
87
|
-
|
80
|
+
def save
|
81
|
+
book.container_adapter.save book.epub_file, book.rootfile_path, to_xml
|
88
82
|
end
|
89
83
|
|
90
84
|
module ContentModel
|
@@ -255,22 +249,19 @@ module EPUB
|
|
255
249
|
class Item
|
256
250
|
attr_accessor :content, :content_file
|
257
251
|
|
258
|
-
# @param archive [Zip::Archive|nil] archive to save content. If nil, open archive in this method
|
259
252
|
# @raise StandardError when no content nor content_file
|
260
|
-
|
261
|
-
|
253
|
+
# @todo Don't read content from file when +content_file+ exists. If container adapter is Archive::Zip, it writes content to file twice.
|
254
|
+
def save
|
255
|
+
content_to_save =
|
262
256
|
if content
|
263
|
-
|
257
|
+
content
|
264
258
|
elsif content_file
|
265
|
-
|
259
|
+
File.read(content_file)
|
266
260
|
else
|
267
261
|
raise 'no content nor content_file'
|
268
262
|
end
|
269
|
-
|
270
|
-
|
271
|
-
save archive
|
272
|
-
end
|
273
|
-
end
|
263
|
+
book = manifest.package.book
|
264
|
+
book.container_adapter.save book.epub_file, entry_name, content_to_save
|
274
265
|
end
|
275
266
|
|
276
267
|
# Save document into EPUB archive when block ended
|
data/lib/epub/maker/version.rb
CHANGED
data/test/helper.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epub-maker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KITAITI Makoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: zipruby
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: epub-parser
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,21 +109,7 @@ dependencies:
|
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: 2.3.5
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: epubcheck
|
112
|
+
name: zipruby
|
141
113
|
requirement: !ruby/object:Gem::Requirement
|
142
114
|
requirements:
|
143
115
|
- - ">="
|
@@ -151,7 +123,7 @@ dependencies:
|
|
151
123
|
- !ruby/object:Gem::Version
|
152
124
|
version: '0'
|
153
125
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
126
|
+
name: test-unit
|
155
127
|
requirement: !ruby/object:Gem::Requirement
|
156
128
|
requirements:
|
157
129
|
- - ">="
|
@@ -165,7 +137,7 @@ dependencies:
|
|
165
137
|
- !ruby/object:Gem::Version
|
166
138
|
version: '0'
|
167
139
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
140
|
+
name: test-unit-notify
|
169
141
|
requirement: !ruby/object:Gem::Requirement
|
170
142
|
requirements:
|
171
143
|
- - ">="
|
@@ -179,7 +151,7 @@ dependencies:
|
|
179
151
|
- !ruby/object:Gem::Version
|
180
152
|
version: '0'
|
181
153
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
154
|
+
name: epubcheck
|
183
155
|
requirement: !ruby/object:Gem::Requirement
|
184
156
|
requirements:
|
185
157
|
- - ">="
|
@@ -193,7 +165,7 @@ dependencies:
|
|
193
165
|
- !ruby/object:Gem::Version
|
194
166
|
version: '0'
|
195
167
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
168
|
+
name: epzip
|
197
169
|
requirement: !ruby/object:Gem::Requirement
|
198
170
|
requirements:
|
199
171
|
- - ">="
|
@@ -207,7 +179,7 @@ dependencies:
|
|
207
179
|
- !ruby/object:Gem::Version
|
208
180
|
version: '0'
|
209
181
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
182
|
+
name: simplecov
|
211
183
|
requirement: !ruby/object:Gem::Requirement
|
212
184
|
requirements:
|
213
185
|
- - ">="
|
@@ -221,7 +193,7 @@ dependencies:
|
|
221
193
|
- !ruby/object:Gem::Version
|
222
194
|
version: '0'
|
223
195
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
196
|
+
name: pry
|
225
197
|
requirement: !ruby/object:Gem::Requirement
|
226
198
|
requirements:
|
227
199
|
- - ">="
|
@@ -235,7 +207,7 @@ dependencies:
|
|
235
207
|
- !ruby/object:Gem::Version
|
236
208
|
version: '0'
|
237
209
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
210
|
+
name: pry-doc
|
239
211
|
requirement: !ruby/object:Gem::Requirement
|
240
212
|
requirements:
|
241
213
|
- - ">="
|
@@ -249,7 +221,7 @@ dependencies:
|
|
249
221
|
- !ruby/object:Gem::Version
|
250
222
|
version: '0'
|
251
223
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
224
|
+
name: yard
|
253
225
|
requirement: !ruby/object:Gem::Requirement
|
254
226
|
requirements:
|
255
227
|
- - ">="
|
@@ -265,8 +237,7 @@ dependencies:
|
|
265
237
|
description: This library supports making and editing EPUB books
|
266
238
|
email:
|
267
239
|
- KitaitiMakoto@gmail.com
|
268
|
-
executables:
|
269
|
-
- epub-maker
|
240
|
+
executables: []
|
270
241
|
extensions: []
|
271
242
|
extra_rdoc_files: []
|
272
243
|
files:
|
@@ -276,11 +247,13 @@ files:
|
|
276
247
|
- LICENSE.txt
|
277
248
|
- README.markdown
|
278
249
|
- Rakefile
|
279
|
-
- bin/epub-maker
|
280
250
|
- epub-maker.gemspec
|
281
251
|
- lib/epub/maker.rb
|
282
252
|
- lib/epub/maker/content_document.rb
|
283
253
|
- lib/epub/maker/ocf.rb
|
254
|
+
- lib/epub/maker/ocf/physical_container.rb
|
255
|
+
- lib/epub/maker/ocf/physical_container/archive_zip.rb
|
256
|
+
- lib/epub/maker/ocf/physical_container/zipruby.rb
|
284
257
|
- lib/epub/maker/publication.rb
|
285
258
|
- lib/epub/maker/task.rb
|
286
259
|
- lib/epub/maker/version.rb
|
@@ -313,7 +286,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
313
286
|
requirements:
|
314
287
|
- - ">="
|
315
288
|
- !ruby/object:Gem::Version
|
316
|
-
version: 2.
|
289
|
+
version: 2.1.0
|
317
290
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
318
291
|
requirements:
|
319
292
|
- - ">="
|
@@ -321,7 +294,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
321
294
|
version: '0'
|
322
295
|
requirements: []
|
323
296
|
rubyforge_project:
|
324
|
-
rubygems_version: 2.
|
297
|
+
rubygems_version: 2.5.1
|
325
298
|
signing_key:
|
326
299
|
specification_version: 4
|
327
300
|
summary: EPUB Maker
|
data/bin/epub-maker
DELETED