epub-maker 0.0.5 → 0.0.6
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/.gitlab-ci.yml +22 -0
- data/CHANGELOG.markdown +6 -0
- data/Gemfile +4 -0
- data/README.markdown +27 -1
- data/bin/epub-archive +14 -0
- data/epub-maker.gemspec +2 -4
- data/lib/epub/maker.rb +40 -1
- data/lib/epub/maker/version.rb +1 -1
- data/test/helper.rb +9 -3
- data/test/test_inplace_editing.rb +1 -3
- metadata +9 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd80bab3836300bb946438407d0cd8c931557277
|
4
|
+
data.tar.gz: 7430a5c2e9680f0f93a9c7e2f7f1fb7339bef339
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6a2af0f44dcfa9ee4f934ddb4b7a32b99c06aafe9a812e72409e447292325811d2d5e123a13b92006bc588454e886d33575fa047a25763f08e338ce9a6a2f02
|
7
|
+
data.tar.gz: 8ab6ec574eec7d760130e67285bd0264656b36e979dd00ecffac80cbd1d6105c48bb42d1221357c49caee524d14dcead69babba27f0ce42d1413852758cf72bf
|
data/.gitlab-ci.yml
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
before_script:
|
2
|
+
- ruby -v
|
3
|
+
- which ruby
|
4
|
+
- gem install bundler --no-document
|
5
|
+
- bundle install --jobs=$(nproc) --path=deps
|
6
|
+
|
7
|
+
cache:
|
8
|
+
paths:
|
9
|
+
- deps/
|
10
|
+
|
11
|
+
test:2.2:
|
12
|
+
image: ruby:2.2
|
13
|
+
script:
|
14
|
+
- bundle exec rake test
|
15
|
+
|
16
|
+
test:2.3:
|
17
|
+
image: ruby:2.3
|
18
|
+
script: bundle exec rake test
|
19
|
+
|
20
|
+
test:2.4:
|
21
|
+
image: ruby:2.4
|
22
|
+
script: bundle exec rake test
|
data/CHANGELOG.markdown
CHANGED
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -131,9 +131,30 @@ For APIs of parsed EPUB book, see [EPUB Parser's documentation][epub-parser-doc]
|
|
131
131
|
task.bindings = {'application/x-demo-slideshow' => "#{DIR}/OPS/impl.xhtml"}
|
132
132
|
end
|
133
133
|
|
134
|
+
### epub-archive command
|
135
|
+
|
136
|
+
`epub-archive` command archives given directory as an EPUB file like [epzip][] gem but doesn't require zip command.
|
137
|
+
|
138
|
+
% ls path/to
|
139
|
+
book
|
140
|
+
% epub-archie path/to/book
|
141
|
+
% ls path/to
|
142
|
+
book
|
143
|
+
book.epub
|
144
|
+
|
145
|
+
You can specify target file path.
|
146
|
+
|
147
|
+
% epub-archive source/dir/book target/dir/book.epub
|
148
|
+
% ls source/dir
|
149
|
+
book
|
150
|
+
% ls target/dir
|
151
|
+
book.epub
|
152
|
+
|
153
|
+
[epzip]: https://github.com/takahashim/epzip
|
154
|
+
|
134
155
|
Requirements
|
135
156
|
------------
|
136
|
-
* Ruby 2.
|
157
|
+
* Ruby 2.2 or later
|
137
158
|
* C compiler to build Nokogiri gems
|
138
159
|
|
139
160
|
Todo
|
@@ -145,6 +166,11 @@ Todo
|
|
145
166
|
|
146
167
|
Recent Changes
|
147
168
|
--------------
|
169
|
+
### 0.0.6
|
170
|
+
|
171
|
+
* Add `epub-archive` command
|
172
|
+
* Add `EPUB::Maker.archive` method
|
173
|
+
|
148
174
|
### 0.0.5
|
149
175
|
|
150
176
|
* Fix bug to modify `dc:rights` to `dc:right`
|
data/bin/epub-archive
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "English"
|
2
|
+
require "epub/maker"
|
3
|
+
|
4
|
+
def main(argv)
|
5
|
+
source_dir = argv.shift
|
6
|
+
raise "source directory not specified" unless source_dir
|
7
|
+
|
8
|
+
EPUB::Maker.archive(source_dir, argv.shift)
|
9
|
+
rescue => error
|
10
|
+
$stderr.puts error
|
11
|
+
abort "Usage: #{$PROGRAM_NAME} SOURCE_DIR [EPUB_FILE]"
|
12
|
+
end
|
13
|
+
|
14
|
+
main(ARGV)
|
data/epub-maker.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = ["KitaitiMakoto@gmail.com"]
|
11
11
|
gem.description = %q{This library supports making and editing EPUB books}
|
12
12
|
gem.summary = %q{EPUB Maker}
|
13
|
-
gem.homepage = ""
|
13
|
+
gem.homepage = "http://www.rubydoc.info/gems/epub-maker"
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
16
16
|
gem.files.delete '"test/fixtures/book/OPS/\343\203\253\343\203\274\343\203\210\343\203\225\343\202\241\343\202\244\343\203\253.opf"'
|
@@ -21,7 +21,6 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.required_ruby_version = '>= 2.1.0'
|
22
22
|
|
23
23
|
gem.add_runtime_dependency 'epub-parser', '>= 0.2.6'
|
24
|
-
gem.add_runtime_dependency 'pathname-common_prefix'
|
25
24
|
gem.add_runtime_dependency 'mimemagic'
|
26
25
|
gem.add_runtime_dependency 'ruby-uuid'
|
27
26
|
gem.add_runtime_dependency 'archive-zip'
|
@@ -31,8 +30,7 @@ Gem::Specification.new do |gem|
|
|
31
30
|
gem.add_development_dependency 'zipruby'
|
32
31
|
gem.add_development_dependency 'test-unit'
|
33
32
|
gem.add_development_dependency 'test-unit-notify'
|
34
|
-
gem.add_development_dependency 'epubcheck'
|
35
|
-
gem.add_development_dependency 'epzip'
|
33
|
+
gem.add_development_dependency 'epubcheck-ruby'
|
36
34
|
gem.add_development_dependency 'simplecov'
|
37
35
|
gem.add_development_dependency 'pry'
|
38
36
|
gem.add_development_dependency 'pry-doc'
|
data/lib/epub/maker.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'English'
|
2
2
|
require 'pathname'
|
3
|
-
require 'pathname/common_prefix'
|
4
3
|
require 'fileutils'
|
5
4
|
require 'tmpdir'
|
6
5
|
require 'time'
|
@@ -60,6 +59,46 @@ module EPUB
|
|
60
59
|
error.set_backtrace backtrace
|
61
60
|
raise error
|
62
61
|
end
|
62
|
+
|
63
|
+
# Substance of +epub-archive+ command
|
64
|
+
# @param source_file [Pathname, String]
|
65
|
+
# @param epub_file [Pathname, String, nil]
|
66
|
+
# @return [Pathname] Path to generated EPUB file
|
67
|
+
# @raise [RuntimeError] if directory +source_dir+ doesn't exist
|
68
|
+
# @raise [Archive::Zip::Error] if something goes wrong around ZIP archive manipulation
|
69
|
+
# @todo Accept usage that +epub-archive path/to/boo .+ generates ./book.epub
|
70
|
+
# @todo Abstract ZIP library
|
71
|
+
# @todo Accept compression method option
|
72
|
+
# @todo Accept compression level option
|
73
|
+
def archive(source_dir, epub_file = nil)
|
74
|
+
source_dir = Pathname(source_dir)
|
75
|
+
raise "source directory #{source_dir} not exist" unless source_dir.exist?
|
76
|
+
|
77
|
+
epub_file ||= source_dir.sub_ext(".epub")
|
78
|
+
epub_file = Pathname(epub_file)
|
79
|
+
|
80
|
+
Pathname.mktmpdir do |dir|
|
81
|
+
temp_dest = dir/epub_file.basename
|
82
|
+
temp_container = dir/source_dir.basename
|
83
|
+
|
84
|
+
temp_container.mkdir
|
85
|
+
mimetype = temp_container/"mimetype"
|
86
|
+
mimetype.write EPUB::MediaType::EPUB
|
87
|
+
Archive::Zip.open temp_dest.to_path, :w do |archive|
|
88
|
+
file = Archive::Zip::Entry.from_file(mimetype.to_path, compression_codec: Archive::Zip::Codec::Store)
|
89
|
+
archive.add_entry file
|
90
|
+
end
|
91
|
+
mimetype.delete
|
92
|
+
temp_container.delete
|
93
|
+
|
94
|
+
FileUtils.cp_r source_dir, temp_container
|
95
|
+
mimetype.delete if mimetype.exist?
|
96
|
+
Archive::Zip.archive temp_dest.to_path, temp_container.to_path + "/.", directories: false
|
97
|
+
temp_dest.rename epub_file
|
98
|
+
end
|
99
|
+
|
100
|
+
epub_file
|
101
|
+
end
|
63
102
|
end
|
64
103
|
end
|
65
104
|
|
data/lib/epub/maker/version.rb
CHANGED
data/test/helper.rb
CHANGED
@@ -8,11 +8,17 @@ require 'test/unit/notify'
|
|
8
8
|
require 'open3'
|
9
9
|
require 'shellwords'
|
10
10
|
require 'pry'
|
11
|
+
require 'epubcheck/ruby/cli'
|
11
12
|
class Test::Unit::TestCase
|
12
13
|
def assert_valid_epub(file)
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
if ENV["GITLAB_CI"]
|
15
|
+
warn "Validating EPUB file loosly by EPUB::Parser.parse instead of EpubCheck"
|
16
|
+
assert_nothing_raised do
|
17
|
+
EPUB::Parser.parse file
|
18
|
+
end
|
19
|
+
else
|
20
|
+
assert_true Epubcheck::Ruby::CLI.new.execute(file)
|
21
|
+
end
|
16
22
|
end
|
17
23
|
end
|
18
24
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
@@ -1,18 +1,16 @@
|
|
1
1
|
require_relative 'helper'
|
2
2
|
require 'epub/maker'
|
3
|
-
require 'epzip'
|
4
3
|
|
5
4
|
class TestImplaceEditing < Test::Unit::TestCase
|
6
5
|
def setup
|
7
6
|
@assets_dir = Pathname(__dir__)/'fixtures'/'book'
|
8
7
|
@dir = Pathname.mktmpdir('epub-maker-test')
|
9
8
|
@file = @dir/'book.epub'
|
10
|
-
|
9
|
+
EPUB::Maker.archive @assets_dir, @file
|
11
10
|
@book = EPUB::Parser.parse(@file)
|
12
11
|
end
|
13
12
|
|
14
13
|
def teardown
|
15
|
-
(@assets_dir/'mimetype').rmtree
|
16
14
|
@dir.remove_entry_secure if @dir.exist?
|
17
15
|
end
|
18
16
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KITAITI Makoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: epub-parser
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.2.6
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: pathname-common_prefix
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: mimemagic
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,21 +137,7 @@ dependencies:
|
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
|
-
name: epubcheck
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: epzip
|
140
|
+
name: epubcheck-ruby
|
169
141
|
requirement: !ruby/object:Gem::Requirement
|
170
142
|
requirements:
|
171
143
|
- - ">="
|
@@ -251,16 +223,19 @@ dependencies:
|
|
251
223
|
description: This library supports making and editing EPUB books
|
252
224
|
email:
|
253
225
|
- KitaitiMakoto@gmail.com
|
254
|
-
executables:
|
226
|
+
executables:
|
227
|
+
- epub-archive
|
255
228
|
extensions: []
|
256
229
|
extra_rdoc_files: []
|
257
230
|
files:
|
258
231
|
- ".gitignore"
|
232
|
+
- ".gitlab-ci.yml"
|
259
233
|
- CHANGELOG.markdown
|
260
234
|
- Gemfile
|
261
235
|
- LICENSE.txt
|
262
236
|
- README.markdown
|
263
237
|
- Rakefile
|
238
|
+
- bin/epub-archive
|
264
239
|
- epub-maker.gemspec
|
265
240
|
- lib/epub/maker.rb
|
266
241
|
- lib/epub/maker/content_document.rb
|
@@ -289,7 +264,7 @@ files:
|
|
289
264
|
- test/test_maker_ocf.rb
|
290
265
|
- test/test_maker_publication.rb
|
291
266
|
- test/test_task.rb
|
292
|
-
homepage:
|
267
|
+
homepage: http://www.rubydoc.info/gems/epub-maker
|
293
268
|
licenses: []
|
294
269
|
metadata: {}
|
295
270
|
post_install_message:
|
@@ -308,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
308
283
|
version: '0'
|
309
284
|
requirements: []
|
310
285
|
rubyforge_project:
|
311
|
-
rubygems_version: 2.6.
|
286
|
+
rubygems_version: 2.6.13
|
312
287
|
signing_key:
|
313
288
|
specification_version: 4
|
314
289
|
summary: EPUB Maker
|