epub-parser 0.0.8 → 0.0.9
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.
- data/README.markdown +9 -6
- data/Rakefile +4 -0
- data/bin/epubinfo +14 -18
- data/epub-parser.gemspec +5 -3
- data/lib/epub.rb +2 -0
- data/lib/epub/parser.rb +11 -29
- data/lib/epub/parser/content_document.rb +0 -2
- data/lib/epub/parser/ocf.rb +7 -6
- data/lib/epub/parser/publication.rb +7 -5
- data/lib/epub/parser/version.rb +1 -1
- data/lib/epub/publication/package/manifest.rb +3 -1
- data/test/helper.rb +1 -0
- data/test/test_parser.rb +1 -7
- data/test/test_parser_content_document.rb +0 -1
- data/test/test_parser_ocf.rb +7 -1
- data/test/test_parser_publication.rb +14 -5
- metadata +57 -46
data/README.markdown
CHANGED
@@ -10,24 +10,24 @@ USAGE
|
|
10
10
|
|
11
11
|
### As a command line tool
|
12
12
|
|
13
|
-
|
13
|
+
epubinfo path/to/book.epub
|
14
14
|
|
15
15
|
For more info:
|
16
16
|
|
17
|
-
|
17
|
+
epubinfo -h
|
18
18
|
|
19
19
|
### As a library
|
20
20
|
|
21
21
|
require 'epub/parser'
|
22
22
|
|
23
|
-
book = EPUB::Parser.parse 'book.epub'
|
23
|
+
book = EPUB::Parser.parse 'book.epub'
|
24
24
|
book.each_page_on_spine do |page|
|
25
25
|
# do somethong...
|
26
26
|
end
|
27
27
|
|
28
28
|
See the [wiki][] for more info.
|
29
29
|
|
30
|
-
[wiki]:https://
|
30
|
+
[wiki]:https://github.com/KitaitiMakoto/epub-parser/wiki
|
31
31
|
|
32
32
|
REQUIREMENTS
|
33
33
|
------------
|
@@ -37,12 +37,15 @@ REQUIREMENTS
|
|
37
37
|
TODOS
|
38
38
|
-----
|
39
39
|
* Adding tests
|
40
|
-
* Implementing
|
41
|
-
* Using zip library instead of `unzip` command, which has security issue
|
40
|
+
* Implementing navigation document and so on
|
42
41
|
* Using SAX on parsing
|
43
42
|
* Extracting and organizing common behavior from some classes to modules
|
44
43
|
* Abstraction of XML parser(making it possible to use REXML, standard bundled XML library of Ruby)
|
45
44
|
|
45
|
+
DONE
|
46
|
+
----
|
47
|
+
* Using zip library instead of `unzip` command, which has security issue
|
48
|
+
|
46
49
|
LICENSE
|
47
50
|
-------
|
48
51
|
This library is distribuetd under the term of the MIT License.
|
data/Rakefile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rake/testtask'
|
3
3
|
require 'yard'
|
4
|
+
require 'cucumber'
|
5
|
+
require 'cucumber/rake/task'
|
4
6
|
|
5
7
|
task :default => :test
|
6
8
|
|
@@ -11,6 +13,8 @@ end
|
|
11
13
|
|
12
14
|
YARD::Rake::YardocTask.new
|
13
15
|
|
16
|
+
Cucumber::Rake::Task.new
|
17
|
+
|
14
18
|
namespace :sample do
|
15
19
|
desc 'Build the test fixture EPUB'
|
16
20
|
task :build do
|
data/bin/epubinfo
CHANGED
@@ -1,9 +1,6 @@
|
|
1
|
-
require 'tmpdir'
|
2
1
|
require 'optparse'
|
3
2
|
require 'epub/parser'
|
4
3
|
|
5
|
-
Version = EPUB::Parser::VERSION
|
6
|
-
|
7
4
|
options = {:format => :line}
|
8
5
|
opt = OptionParser.new do |opt|
|
9
6
|
opt.banner = <<EOB
|
@@ -12,6 +9,7 @@ Show metadata of an EPUB file
|
|
12
9
|
Usage: epubinfo [options] EPUBFILE
|
13
10
|
|
14
11
|
EOB
|
12
|
+
opt.version = EPUB::Parser::VERSION
|
15
13
|
opt.on '-f', '--format=FORMAT', [:line, :json, :yaml], 'format of output(line, json or yaml), defaults to line(for console)' do |format|
|
16
14
|
options[:format] = format
|
17
15
|
end
|
@@ -22,22 +20,20 @@ file = ARGV.shift
|
|
22
20
|
unless file
|
23
21
|
$stdout.puts "error: you must supply an EPUB file name"
|
24
22
|
$stdout.puts opt.help
|
25
|
-
|
23
|
+
abort
|
26
24
|
end
|
27
25
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
puts (k.to_s.capitalize + ':').ljust(key_width) + v.join(', ')
|
38
|
-
end
|
39
|
-
else
|
40
|
-
require options[:format].to_s
|
41
|
-
puts data.__send__("to_#{options[:format]}")
|
26
|
+
book = EPUB::Parser.parse file
|
27
|
+
data = {'Title' => [book.title]}
|
28
|
+
data.merge!(book.package.metadata.to_hash)
|
29
|
+
data['Unique identifier'] = [book.package.metadata.unique_identifier]
|
30
|
+
data['EPUB Version'] = [book.package.version]
|
31
|
+
if options[:format] == :line
|
32
|
+
key_width = data.keys.map {|k| k.length}.max + 3
|
33
|
+
data.each_pair do |k, v|
|
34
|
+
puts (k.to_s.capitalize + ':').ljust(key_width) + v.join(', ')
|
42
35
|
end
|
36
|
+
else
|
37
|
+
require options[:format].to_s
|
38
|
+
puts data.__send__("to_#{options[:format]}")
|
43
39
|
end
|
data/epub-parser.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = EPUB::Parser::VERSION
|
8
8
|
s.authors = ["KITAITI Makoto"]
|
9
9
|
s.email = ["KitaitiMakoto@gmail.com"]
|
10
|
-
s.homepage = "https://
|
10
|
+
s.homepage = "https://github.com/KitaitiMakoto/epub-parser"
|
11
11
|
s.summary = %q{EPUB 3 Parser}
|
12
12
|
s.description = %q{Parse EPUB 3 book loosely}
|
13
13
|
s.license = 'MIT'
|
@@ -19,12 +19,14 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.test_files = `git ls-files -- {test,spec,features}/**/*.rb`.split("\n")
|
20
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
21
|
s.require_paths = ["lib"]
|
22
|
+
s.has_rdoc = 'yard'
|
22
23
|
|
23
24
|
s.add_development_dependency 'rubygems-test'
|
24
25
|
s.add_development_dependency 'rake'
|
25
26
|
s.add_development_dependency 'pry'
|
26
27
|
s.add_development_dependency 'pry-doc'
|
27
|
-
s.add_development_dependency '
|
28
|
+
s.add_development_dependency 'pry-nav'
|
29
|
+
s.add_development_dependency 'test-unit-full'
|
28
30
|
s.add_development_dependency 'simplecov'
|
29
31
|
s.add_development_dependency 'thin'
|
30
32
|
s.add_development_dependency 'yard'
|
@@ -34,7 +36,7 @@ Gem::Specification.new do |s|
|
|
34
36
|
s.add_development_dependency 'epubcheck'
|
35
37
|
s.add_development_dependency 'epub_validator'
|
36
38
|
s.add_development_dependency 'zipruby'
|
37
|
-
s.add_development_dependency '
|
39
|
+
s.add_development_dependency 'aruba'
|
38
40
|
|
39
41
|
s.add_runtime_dependency 'enumerabler'
|
40
42
|
s.add_runtime_dependency 'nokogiri'
|
data/lib/epub.rb
CHANGED
@@ -6,6 +6,7 @@ require 'epub/parser'
|
|
6
6
|
module EPUB
|
7
7
|
modules = [ :ocf, :package, :content_document ]
|
8
8
|
attr_reader *modules
|
9
|
+
attr_reader :epub_file
|
9
10
|
modules.each do |mod|
|
10
11
|
define_method "#{mod}=" do |obj|
|
11
12
|
instance_variable_set "@#{mod}", obj
|
@@ -14,6 +15,7 @@ module EPUB
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def parse(file, dir, options = {})
|
18
|
+
@epub_file = file
|
17
19
|
options = options.merge({:book => self})
|
18
20
|
Parser.parse(file, dir, options)
|
19
21
|
end
|
data/lib/epub/parser.rb
CHANGED
@@ -3,53 +3,35 @@ require 'epub/parser/version'
|
|
3
3
|
require 'epub/parser/ocf'
|
4
4
|
require 'epub/parser/publication'
|
5
5
|
require 'epub/parser/content_document'
|
6
|
-
require '
|
6
|
+
require 'zipruby'
|
7
7
|
require 'nokogiri'
|
8
8
|
|
9
9
|
module EPUB
|
10
10
|
class Parser
|
11
11
|
class << self
|
12
|
-
def parse(file,
|
13
|
-
new(file,
|
12
|
+
def parse(file, options = {})
|
13
|
+
new(file, options).parse
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def initialize(filepath,
|
17
|
+
def initialize(filepath, options = {})
|
18
18
|
raise "File #{filepath} not readable" unless File.readable_real? filepath
|
19
|
-
raise "File #{root_directory} already exists" if File.file? root_directory
|
20
|
-
|
21
|
-
@filepath = File.realpath filepath
|
22
|
-
Dir.mkdir(root_directory) unless File.directory? root_directory
|
23
|
-
@dir = File.realpath root_directory
|
24
19
|
|
20
|
+
@filepath = File.realpath filepath
|
25
21
|
@book = create_book options
|
26
|
-
|
27
|
-
unzip_cmd = options['unzip-command'] || 'unzip'
|
28
|
-
unzip_cmd << " #{@filepath.to_s.shellescape} -d #{@dir.to_s.shellescape} 1>/dev/null"
|
29
|
-
system unzip_cmd
|
30
22
|
end
|
31
23
|
|
32
24
|
def parse
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
25
|
+
Zip::Archive.open @filepath do |zip|
|
26
|
+
@book.ocf = OCF.parse(zip)
|
27
|
+
@book.package = Publication.parse(zip, @book.rootfile_path)
|
28
|
+
# @book.content_document =??? parse_content_document
|
29
|
+
# ...
|
30
|
+
end
|
37
31
|
|
38
32
|
@book
|
39
33
|
end
|
40
34
|
|
41
|
-
def parse_ocf
|
42
|
-
OCF.parse @dir
|
43
|
-
end
|
44
|
-
|
45
|
-
def parse_publication
|
46
|
-
Publication.parse File.join(@dir, @book.rootfile_path)
|
47
|
-
end
|
48
|
-
|
49
|
-
def parse_content_document
|
50
|
-
# ContentDocument.parse @dir
|
51
|
-
end
|
52
|
-
|
53
35
|
private
|
54
36
|
|
55
37
|
def create_book(params)
|
@@ -35,9 +35,7 @@ module EPUB
|
|
35
35
|
# And if so, where should the namespaces be defined?
|
36
36
|
# nav.type = element['epub:type']
|
37
37
|
element.namespaces['epub'] = "http://www.idpf.org/2007/ops"
|
38
|
-
p element.namespaces
|
39
38
|
nav.type = element['epub:type']
|
40
|
-
p nav.type
|
41
39
|
|
42
40
|
nav
|
43
41
|
end
|
data/lib/epub/parser/ocf.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'epub/constants'
|
2
2
|
require 'epub/ocf'
|
3
|
+
require 'zipruby'
|
3
4
|
require 'nokogiri'
|
4
5
|
|
5
6
|
module EPUB
|
@@ -9,13 +10,13 @@ module EPUB
|
|
9
10
|
EPUB::OCF::MODULES.each {|m| self.const_set "#{m.upcase}_FILE", "#{m}.xml"}
|
10
11
|
|
11
12
|
class << self
|
12
|
-
def parse(
|
13
|
-
new(
|
13
|
+
def parse(zip_archive)
|
14
|
+
new(zip_archive).parse
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
17
|
-
def initialize(
|
18
|
-
@
|
18
|
+
def initialize(zip_archive)
|
19
|
+
@zip = zip_archive
|
19
20
|
@ocf = EPUB::OCF.new
|
20
21
|
end
|
21
22
|
|
@@ -28,8 +29,8 @@ module EPUB
|
|
28
29
|
|
29
30
|
def parse_container
|
30
31
|
container = EPUB::OCF::Container.new
|
31
|
-
|
32
|
-
|
32
|
+
entry = @zip.fopen(File.join(DIRECTORY, CONTAINER_FILE))
|
33
|
+
doc = Nokogiri.XML(entry.read)
|
33
34
|
doc.xpath('/ocf:container/ocf:rootfiles/ocf:rootfile', EPUB::NAMESPACES).each do |elem|
|
34
35
|
rootfile = EPUB::OCF::Container::Rootfile.new
|
35
36
|
%w[full-path media-type].each do |attr|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'zipruby'
|
1
2
|
require 'nokogiri'
|
2
3
|
require 'addressable/uri'
|
3
4
|
require 'epub/publication'
|
@@ -7,15 +8,16 @@ module EPUB
|
|
7
8
|
class Parser
|
8
9
|
class Publication
|
9
10
|
class << self
|
10
|
-
def parse(file)
|
11
|
-
new(file).parse
|
11
|
+
def parse(zip_archive, file)
|
12
|
+
new(zip_archive, file).parse
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
15
|
-
def initialize(file)
|
16
|
+
def initialize(zip_archive, file)
|
16
17
|
@package = EPUB::Publication::Package.new
|
17
|
-
@rootfile = Addressable::URI.parse
|
18
|
-
|
18
|
+
@rootfile = Addressable::URI.parse(file)
|
19
|
+
entry = zip_archive.fopen(file)
|
20
|
+
@doc = Nokogiri.XML(entry.read)
|
19
21
|
end
|
20
22
|
|
21
23
|
def parse
|
data/lib/epub/parser/version.rb
CHANGED
data/test/helper.rb
CHANGED
data/test/test_parser.rb
CHANGED
@@ -1,16 +1,10 @@
|
|
1
1
|
require File.expand_path 'helper', File.dirname(__FILE__)
|
2
2
|
require 'epub/parser'
|
3
3
|
require 'fileutils'
|
4
|
-
require 'tmpdir'
|
5
4
|
|
6
5
|
class TestParser < Test::Unit::TestCase
|
7
6
|
def setup
|
8
|
-
@
|
9
|
-
@parser = EPUB::Parser.new 'test/fixtures/book.epub', @rootdir
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
FileUtils.remove_entry_secure @rootdir
|
7
|
+
@parser = EPUB::Parser.new 'test/fixtures/book.epub'
|
14
8
|
end
|
15
9
|
|
16
10
|
def test_parse
|
data/test/test_parser_ocf.rb
CHANGED
@@ -4,7 +4,13 @@ require 'epub/parser/ocf'
|
|
4
4
|
|
5
5
|
class TestParserOCF < Test::Unit::TestCase
|
6
6
|
def setup
|
7
|
-
|
7
|
+
file = 'test/fixtures/book.epub'
|
8
|
+
@zip = Zip::Archive.open(file)
|
9
|
+
@parser = EPUB::Parser::OCF.new(@zip)
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
@zip.close
|
8
14
|
end
|
9
15
|
|
10
16
|
def test_parsed_container_has_one_rootfile
|
@@ -4,10 +4,17 @@ require 'epub/parser/publication'
|
|
4
4
|
|
5
5
|
class TestParserPublication < Test::Unit::TestCase
|
6
6
|
def setup
|
7
|
-
|
7
|
+
file = 'test/fixtures/book.epub'
|
8
|
+
root_file = 'OPS/ルートファイル.opf'
|
9
|
+
@zip = Zip::Archive.open(file)
|
10
|
+
@parser = EPUB::Parser::Publication.new(@zip, root_file)
|
8
11
|
@package = @parser.parse_package
|
9
12
|
end
|
10
13
|
|
14
|
+
def teardown
|
15
|
+
@zip.close
|
16
|
+
end
|
17
|
+
|
11
18
|
def test_parse_package
|
12
19
|
assert_equal '3.0', @package.version
|
13
20
|
end
|
@@ -41,10 +48,8 @@ class TestParserPublication < Test::Unit::TestCase
|
|
41
48
|
assert_equal 8, @manifest.items.length
|
42
49
|
end
|
43
50
|
|
44
|
-
def
|
45
|
-
|
46
|
-
|
47
|
-
assert_equal actual, @manifest['nav'].iri.to_s
|
51
|
+
def test_item_has_relative_path_as_iri_attribute
|
52
|
+
assert_equal 'OPS/nav.xhtml', @manifest['nav'].iri.to_s
|
48
53
|
end
|
49
54
|
|
50
55
|
def test_fallback_attribute_of_item_should_be_item_object
|
@@ -55,6 +60,10 @@ class TestParserPublication < Test::Unit::TestCase
|
|
55
60
|
end
|
56
61
|
|
57
62
|
def test_item_is_readable
|
63
|
+
book = Object.new
|
64
|
+
mock(@package).book {book}
|
65
|
+
mock(book).epub_file {'test/fixtures/book.epub'}
|
66
|
+
|
58
67
|
item = @manifest.items.first
|
59
68
|
doc = Nokogiri.XML item.read
|
60
69
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epub-parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-13 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubygems-test
|
16
|
-
requirement: &
|
16
|
+
requirement: &7153000 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *7153000
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &7150920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *7150920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: pry
|
38
|
-
requirement: &
|
38
|
+
requirement: &7149860 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *7149860
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: pry-doc
|
49
|
-
requirement: &
|
49
|
+
requirement: &7148720 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,21 +54,32 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *7148720
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement: &
|
59
|
+
name: pry-nav
|
60
|
+
requirement: &7166500 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
|
-
- -
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *7166500
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: test-unit-full
|
71
|
+
requirement: &7165380 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
64
75
|
- !ruby/object:Gem::Version
|
65
|
-
version: '
|
76
|
+
version: '0'
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *7165380
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: simplecov
|
71
|
-
requirement: &
|
82
|
+
requirement: &7163980 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *7163980
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: thin
|
82
|
-
requirement: &
|
93
|
+
requirement: &7162800 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: '0'
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *7162800
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: yard
|
93
|
-
requirement: &
|
104
|
+
requirement: &7162000 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: '0'
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *7162000
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: gem-man
|
104
|
-
requirement: &
|
115
|
+
requirement: &7161220 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: '0'
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *7161220
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: ronn
|
115
|
-
requirement: &
|
126
|
+
requirement: &7160400 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: '0'
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *7160400
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: epzip
|
126
|
-
requirement: &
|
137
|
+
requirement: &7159780 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: '0'
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *7159780
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: epubcheck
|
137
|
-
requirement: &
|
148
|
+
requirement: &7159180 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,10 +153,10 @@ dependencies:
|
|
142
153
|
version: '0'
|
143
154
|
type: :development
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *7159180
|
146
157
|
- !ruby/object:Gem::Dependency
|
147
158
|
name: epub_validator
|
148
|
-
requirement: &
|
159
|
+
requirement: &7177540 !ruby/object:Gem::Requirement
|
149
160
|
none: false
|
150
161
|
requirements:
|
151
162
|
- - ! '>='
|
@@ -153,10 +164,10 @@ dependencies:
|
|
153
164
|
version: '0'
|
154
165
|
type: :development
|
155
166
|
prerelease: false
|
156
|
-
version_requirements: *
|
167
|
+
version_requirements: *7177540
|
157
168
|
- !ruby/object:Gem::Dependency
|
158
169
|
name: zipruby
|
159
|
-
requirement: &
|
170
|
+
requirement: &7176860 !ruby/object:Gem::Requirement
|
160
171
|
none: false
|
161
172
|
requirements:
|
162
173
|
- - ! '>='
|
@@ -164,10 +175,10 @@ dependencies:
|
|
164
175
|
version: '0'
|
165
176
|
type: :development
|
166
177
|
prerelease: false
|
167
|
-
version_requirements: *
|
178
|
+
version_requirements: *7176860
|
168
179
|
- !ruby/object:Gem::Dependency
|
169
|
-
name:
|
170
|
-
requirement: &
|
180
|
+
name: aruba
|
181
|
+
requirement: &7176200 !ruby/object:Gem::Requirement
|
171
182
|
none: false
|
172
183
|
requirements:
|
173
184
|
- - ! '>='
|
@@ -175,10 +186,10 @@ dependencies:
|
|
175
186
|
version: '0'
|
176
187
|
type: :development
|
177
188
|
prerelease: false
|
178
|
-
version_requirements: *
|
189
|
+
version_requirements: *7176200
|
179
190
|
- !ruby/object:Gem::Dependency
|
180
191
|
name: enumerabler
|
181
|
-
requirement: &
|
192
|
+
requirement: &7175580 !ruby/object:Gem::Requirement
|
182
193
|
none: false
|
183
194
|
requirements:
|
184
195
|
- - ! '>='
|
@@ -186,10 +197,10 @@ dependencies:
|
|
186
197
|
version: '0'
|
187
198
|
type: :runtime
|
188
199
|
prerelease: false
|
189
|
-
version_requirements: *
|
200
|
+
version_requirements: *7175580
|
190
201
|
- !ruby/object:Gem::Dependency
|
191
202
|
name: nokogiri
|
192
|
-
requirement: &
|
203
|
+
requirement: &7174900 !ruby/object:Gem::Requirement
|
193
204
|
none: false
|
194
205
|
requirements:
|
195
206
|
- - ! '>='
|
@@ -197,10 +208,10 @@ dependencies:
|
|
197
208
|
version: '0'
|
198
209
|
type: :runtime
|
199
210
|
prerelease: false
|
200
|
-
version_requirements: *
|
211
|
+
version_requirements: *7174900
|
201
212
|
- !ruby/object:Gem::Dependency
|
202
213
|
name: addressable
|
203
|
-
requirement: &
|
214
|
+
requirement: &7174140 !ruby/object:Gem::Requirement
|
204
215
|
none: false
|
205
216
|
requirements:
|
206
217
|
- - ! '>='
|
@@ -208,7 +219,7 @@ dependencies:
|
|
208
219
|
version: '0'
|
209
220
|
type: :runtime
|
210
221
|
prerelease: false
|
211
|
-
version_requirements: *
|
222
|
+
version_requirements: *7174140
|
212
223
|
description: Parse EPUB 3 book loosely
|
213
224
|
email:
|
214
225
|
- KitaitiMakoto@gmail.com
|
@@ -264,7 +275,7 @@ files:
|
|
264
275
|
- test/test_parser_ocf.rb
|
265
276
|
- test/test_parser_publication.rb
|
266
277
|
- test/fixtures/book/OPS/ルートファイル.opf
|
267
|
-
homepage: https://
|
278
|
+
homepage: https://github.com/KitaitiMakoto/epub-parser
|
268
279
|
licenses:
|
269
280
|
- MIT
|
270
281
|
post_install_message:
|
@@ -279,7 +290,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
279
290
|
version: '0'
|
280
291
|
segments:
|
281
292
|
- 0
|
282
|
-
hash:
|
293
|
+
hash: 3117642784575544251
|
283
294
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
284
295
|
none: false
|
285
296
|
requirements:
|
@@ -288,7 +299,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
288
299
|
version: '0'
|
289
300
|
segments:
|
290
301
|
- 0
|
291
|
-
hash:
|
302
|
+
hash: 3117642784575544251
|
292
303
|
requirements: []
|
293
304
|
rubyforge_project:
|
294
305
|
rubygems_version: 1.8.8
|
@@ -296,4 +307,4 @@ signing_key:
|
|
296
307
|
specification_version: 3
|
297
308
|
summary: EPUB 3 Parser
|
298
309
|
test_files: []
|
299
|
-
has_rdoc:
|
310
|
+
has_rdoc: yard
|