epub-parser 0.0.9.4 → 0.1.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.
- data/.gitignore +1 -0
- data/README.markdown +5 -1
- data/Rakefile +13 -8
- data/epub-parser.gemspec +0 -1
- data/lib/epub/parser/content_document.rb +3 -12
- data/lib/epub/parser/ocf.rb +10 -4
- data/lib/epub/parser/publication.rb +18 -11
- data/lib/epub/parser/version.rb +1 -1
- data/lib/epub/publication/package.rb +6 -1
- data/lib/epub/publication/package/bindings.rb +2 -1
- data/lib/epub/publication/package/metadata.rb +8 -8
- data/test/fixtures/book/OPS/nav.xhtml +7 -7
- data/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 +31 -20
- data/test/helper.rb +2 -4
- data/test/test_parser_content_document.rb +3 -2
- data/test/test_parser_ocf.rb +3 -2
- data/test/test_parser_publication.rb +34 -4
- metadata +40 -52
- data/test/fixtures/book.epub +0 -0
data/.gitignore
CHANGED
data/README.markdown
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
EPUB Parser
|
2
2
|
===========
|
3
|
+
[](http://travis-ci.org/KitaitiMakoto/epub-parser)
|
3
4
|
|
4
5
|
INSTALLATION
|
5
6
|
-------
|
@@ -26,8 +27,10 @@ For more info:
|
|
26
27
|
end
|
27
28
|
|
28
29
|
See the [wiki][] for more info.
|
30
|
+
Or [API Documentation][rubydoc].
|
29
31
|
|
30
|
-
[wiki]:https://github.com/KitaitiMakoto/epub-parser/wiki
|
32
|
+
[wiki]: https://github.com/KitaitiMakoto/epub-parser/wiki
|
33
|
+
[rubydoc]: http://rubydoc.info/gems/epub-parser/frames
|
31
34
|
|
32
35
|
REQUIREMENTS
|
33
36
|
------------
|
@@ -37,6 +40,7 @@ REQUIREMENTS
|
|
37
40
|
TODOS
|
38
41
|
-----
|
39
42
|
* Adding tests
|
43
|
+
* Modify methods around fallback to check bindings element in the package
|
40
44
|
* Implementing navigation document and so on
|
41
45
|
* Using SAX on parsing
|
42
46
|
* Extracting and organizing common behavior from some classes to modules
|
data/Rakefile
CHANGED
@@ -5,17 +5,17 @@ require 'cucumber'
|
|
5
5
|
require 'cucumber/rake/task'
|
6
6
|
|
7
7
|
task :default => :test
|
8
|
+
task :test => 'test:default'
|
8
9
|
|
9
|
-
|
10
|
-
task
|
11
|
-
ENV['TESTOPTS'] = '--no-show-detail-immediately --verbose'
|
12
|
-
end
|
13
|
-
|
14
|
-
YARD::Rake::YardocTask.new
|
10
|
+
namespace :test do
|
11
|
+
task :default => [:build, :test]
|
15
12
|
|
16
|
-
|
13
|
+
Rake::TestTask.new do |task|
|
14
|
+
task.test_files = FileList['test/**/test_*.rb']
|
15
|
+
task.warning = true
|
16
|
+
task.options = '--no-show-detail-immediately --verbose'
|
17
|
+
end
|
17
18
|
|
18
|
-
namespace :sample do
|
19
19
|
desc 'Build the test fixture EPUB'
|
20
20
|
task :build do
|
21
21
|
input_dir = 'test/fixtures/book'
|
@@ -24,3 +24,8 @@ namespace :sample do
|
|
24
24
|
sh "epzip #{input_dir}"
|
25
25
|
end
|
26
26
|
end
|
27
|
+
|
28
|
+
|
29
|
+
YARD::Rake::YardocTask.new
|
30
|
+
|
31
|
+
Cucumber::Rake::Task.new
|
data/epub-parser.gemspec
CHANGED
@@ -25,7 +25,6 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_development_dependency 'rake'
|
26
26
|
s.add_development_dependency 'pry'
|
27
27
|
s.add_development_dependency 'pry-doc'
|
28
|
-
s.add_development_dependency 'pry-nav'
|
29
28
|
s.add_development_dependency 'test-unit-full'
|
30
29
|
s.add_development_dependency 'simplecov'
|
31
30
|
s.add_development_dependency 'thin'
|
@@ -6,15 +6,11 @@ module EPUB
|
|
6
6
|
class Parser
|
7
7
|
class ContentDocument
|
8
8
|
class << self
|
9
|
-
def parse
|
10
|
-
new
|
9
|
+
def parse
|
10
|
+
new.parse
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def initialize(root_directory)
|
15
|
-
@dir = root_directory
|
16
|
-
end
|
17
|
-
|
18
14
|
def parse
|
19
15
|
raise 'Not implemented yet'
|
20
16
|
end
|
@@ -30,12 +26,7 @@ module EPUB
|
|
30
26
|
def parse_navigation(element)
|
31
27
|
nav = EPUB::ContentDocument::Navigation::Nav.new
|
32
28
|
nav.heading = find_heading element
|
33
|
-
|
34
|
-
# to find type, need to use strict xpath for handling namespaces?
|
35
|
-
# And if so, where should the namespaces be defined?
|
36
|
-
# nav.type = element['epub:type']
|
37
|
-
element.namespaces['epub'] = "http://www.idpf.org/2007/ops"
|
38
|
-
nav.type = element['epub:type']
|
29
|
+
nav.type = element['type']
|
39
30
|
|
40
31
|
nav
|
41
32
|
end
|
data/lib/epub/parser/ocf.rb
CHANGED
@@ -21,16 +21,17 @@ module EPUB
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def parse
|
24
|
-
|
24
|
+
container_xml = @zip.fopen(File.join(DIRECTORY, CONTAINER_FILE)).read
|
25
|
+
@ocf.container = parse_container(container_xml)
|
26
|
+
(EPUB::OCF::MODULES - ['container']).each do |m|
|
25
27
|
@ocf.__send__ "#{m}=", __send__("parse_#{m}")
|
26
28
|
end
|
27
29
|
@ocf
|
28
30
|
end
|
29
31
|
|
30
|
-
def parse_container
|
32
|
+
def parse_container(xml)
|
31
33
|
container = EPUB::OCF::Container.new
|
32
|
-
|
33
|
-
doc = Nokogiri.XML(entry.read)
|
34
|
+
doc = Nokogiri.XML(xml)
|
34
35
|
doc.xpath('/ocf:container/ocf:rootfiles/ocf:rootfile', EPUB::NAMESPACES).each do |elem|
|
35
36
|
rootfile = EPUB::OCF::Container::Rootfile.new
|
36
37
|
%w[full-path media-type].each do |attr|
|
@@ -43,18 +44,23 @@ module EPUB
|
|
43
44
|
end
|
44
45
|
|
45
46
|
def parse_encryption
|
47
|
+
warn "Not implemented: #{self.class}##{__method__}" if $VERBOSE
|
46
48
|
end
|
47
49
|
|
48
50
|
def parse_manifest
|
51
|
+
warn "Not implemented: #{self.class}##{__method__}" if $VERBOSE
|
49
52
|
end
|
50
53
|
|
51
54
|
def parse_metadata
|
55
|
+
warn "Not implemented: #{self.class}##{__method__}" if $VERBOSE
|
52
56
|
end
|
53
57
|
|
54
58
|
def parse_rights
|
59
|
+
warn "Not implemented: #{self.class}##{__method__}" if $VERBOSE
|
55
60
|
end
|
56
61
|
|
57
62
|
def parse_signatures
|
63
|
+
warn "Not implemented: #{self.class}##{__method__}" if $VERBOSE
|
58
64
|
end
|
59
65
|
end
|
60
66
|
end
|
@@ -9,15 +9,15 @@ module EPUB
|
|
9
9
|
class Publication
|
10
10
|
class << self
|
11
11
|
def parse(zip_archive, file)
|
12
|
-
|
12
|
+
opf = zip_archive.fopen(file).read
|
13
|
+
new(opf, file).parse
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
16
|
-
def initialize(
|
17
|
+
def initialize(opf, rootfile)
|
17
18
|
@package = EPUB::Publication::Package.new
|
18
|
-
@rootfile = Addressable::URI.parse(
|
19
|
-
|
20
|
-
@doc = Nokogiri.XML(entry.read)
|
19
|
+
@rootfile = Addressable::URI.parse(rootfile)
|
20
|
+
@doc = Nokogiri.XML(opf)
|
21
21
|
end
|
22
22
|
|
23
23
|
def parse
|
@@ -26,7 +26,7 @@ module EPUB
|
|
26
26
|
parse_manifest
|
27
27
|
parse_spine
|
28
28
|
parse_guide
|
29
|
-
|
29
|
+
parse_bindings
|
30
30
|
|
31
31
|
@package
|
32
32
|
end
|
@@ -63,9 +63,6 @@ module EPUB
|
|
63
63
|
|
64
64
|
title
|
65
65
|
end
|
66
|
-
# metadata.titles = collect_dcmes(elem, './dc:title') do |title, e|
|
67
|
-
# title.content = e.content
|
68
|
-
# end
|
69
66
|
metadata.titles.each {|t| id_map[t.id] = {metadata: t} if t.respond_to?(:id) && t.id}
|
70
67
|
|
71
68
|
metadata.languages = elem.xpath('./dc:language', EPUB::NAMESPACES).collect do |e|
|
@@ -170,7 +167,7 @@ module EPUB
|
|
170
167
|
|
171
168
|
def parse_guide
|
172
169
|
guide = @package.guide = EPUB::Publication::Package::Guide.new
|
173
|
-
|
170
|
+
@doc.xpath('/opf:package/opf:guide/opf:reference', EPUB::NAMESPACES).each do |ref|
|
174
171
|
reference = EPUB::Publication::Package::Guide::Reference.new
|
175
172
|
%w[ type title href ].each do |attr|
|
176
173
|
reference.__send__("#{attr}=", ref[attr])
|
@@ -183,7 +180,17 @@ module EPUB
|
|
183
180
|
end
|
184
181
|
|
185
182
|
def parse_bindings
|
186
|
-
|
183
|
+
bindings = @package.bindings = EPUB::Publication::Package::Bindings.new
|
184
|
+
@doc.xpath('/opf:package/opf:bindings/opf:mediaType', EPUB::NAMESPACES).each do |elem|
|
185
|
+
media_type = EPUB::Publication::Package::Bindings::MediaType.new
|
186
|
+
media_type.media_type = elem['media-type']
|
187
|
+
items = @package.manifest.items
|
188
|
+
index = items.index {|item| item.id == elem['handler']}
|
189
|
+
media_type.handler = items[index] if index
|
190
|
+
bindings << media_type
|
191
|
+
end
|
192
|
+
|
193
|
+
bindings
|
187
194
|
end
|
188
195
|
|
189
196
|
def collect_dcmes(elem, selector)
|
data/lib/epub/parser/version.rb
CHANGED
@@ -5,7 +5,7 @@ module EPUB
|
|
5
5
|
class Package
|
6
6
|
attr_accessor :book,
|
7
7
|
:version, :unique_identifier_id, :prefix, :xml_lang, :dir, :id
|
8
|
-
attr_reader :metadata, :manifest, :spine, :guide, :
|
8
|
+
attr_reader :metadata, :manifest, :spine, :guide, :bindings
|
9
9
|
alias lang xml_lang
|
10
10
|
alias lang= xml_lang=
|
11
11
|
|
@@ -29,6 +29,11 @@ module EPUB
|
|
29
29
|
@guide = guide
|
30
30
|
end
|
31
31
|
|
32
|
+
def bindings=(bindings)
|
33
|
+
bindings.package = self
|
34
|
+
@buindings = bindings
|
35
|
+
end
|
36
|
+
|
32
37
|
def unique_identifier
|
33
38
|
@metadata.unique_identifier
|
34
39
|
end
|
@@ -41,21 +41,21 @@ module EPUB
|
|
41
41
|
end
|
42
42
|
|
43
43
|
module Refinable
|
44
|
+
attr_writer :refiners
|
45
|
+
|
46
|
+
def refiners
|
47
|
+
@refiners ||= []
|
48
|
+
end
|
49
|
+
|
44
50
|
PROPERTIES = %w[ alternate-script display-seq file-as group-position identifier-type meta-auth role title-type ]
|
45
51
|
|
46
52
|
PROPERTIES.each do |voc|
|
47
53
|
met = voc.gsub(/-/, '_')
|
48
|
-
|
54
|
+
attr_writer met
|
49
55
|
define_method met do
|
50
|
-
|
56
|
+
refiners.select {|refiner| refiner.property == voc}.first
|
51
57
|
end
|
52
58
|
end
|
53
|
-
|
54
|
-
attr_accessor :refiners
|
55
|
-
|
56
|
-
def initialize
|
57
|
-
@refiners = []
|
58
|
-
end
|
59
59
|
end
|
60
60
|
|
61
61
|
class Identifier
|
@@ -12,13 +12,13 @@
|
|
12
12
|
</hgroup>
|
13
13
|
<ol>
|
14
14
|
<li><a href="item-1.xhtml">一ページ目</a></li>
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
<li>
|
16
|
+
<span>二ページ目</span>
|
17
|
+
<ol>
|
18
|
+
<li><a href="item-2.xhtml#section1">第一節</a></li>
|
19
|
+
<li><a href="item-2.xhtml#section2">第二節</a></li>
|
20
|
+
</ol>
|
21
|
+
</li>
|
22
22
|
</ol>
|
23
23
|
</nav>
|
24
24
|
</div>
|
@@ -46,33 +46,40 @@
|
|
46
46
|
</metadata>
|
47
47
|
<manifest id="manifest-id">
|
48
48
|
<item id="nav"
|
49
|
-
|
50
|
-
|
51
|
-
|
49
|
+
href="nav.xhtml"
|
50
|
+
media-type="application/xhtml+xml"
|
51
|
+
properties="nav"/>
|
52
52
|
<item id="manifest-item-1"
|
53
|
-
|
54
|
-
|
55
|
-
|
53
|
+
href="item-1.xhtml"
|
54
|
+
media-type="application/pdf"
|
55
|
+
properties="property1 property2 property3"/>
|
56
56
|
<item id="manifest-item-2"
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
href="item-2.xhtml"
|
58
|
+
media-type="application/pdf"
|
59
|
+
fallback="manifest-item-fallback"/>
|
60
|
+
<item id="impl"
|
61
|
+
href="impl.xhtml"
|
62
|
+
media-type="application/xhtml+xml"
|
63
|
+
properties="scripted"/>
|
64
|
+
<item id="slideshow"
|
65
|
+
href="slideshow.xml"
|
66
|
+
media-type="application/x-demo-slideshow"/>
|
60
67
|
<item id="manifest-item-fallback"
|
61
|
-
|
62
|
-
|
63
|
-
|
68
|
+
href="fallback.xhtml"
|
69
|
+
media-type="image/svg+xml"
|
70
|
+
fallback="manifest-item-fallback2"/>
|
64
71
|
<item id="manifest-item-fallback2"
|
65
|
-
|
66
|
-
|
72
|
+
href="fallback2.xhtml"
|
73
|
+
media-type="application/xhtml+xml"/>
|
67
74
|
<item id="cover"
|
68
|
-
|
69
|
-
|
75
|
+
href="cover.xhtml"
|
76
|
+
media-type="application/xhtml+xml"/>
|
70
77
|
<item id="internal-css"
|
71
|
-
|
72
|
-
|
78
|
+
href="special.css"
|
79
|
+
media-type="text/css"/>
|
73
80
|
<item id="external-css"
|
74
|
-
|
75
|
-
|
81
|
+
href="http://example.net/stylesheets/common.css"
|
82
|
+
media-type="text/css"/>
|
76
83
|
</manifest>
|
77
84
|
<spine>
|
78
85
|
<itemref idref="nav"/>
|
@@ -82,4 +89,8 @@
|
|
82
89
|
<guide>
|
83
90
|
<reference type="cover" href="cover.xhtml#start" title="カバー"/>
|
84
91
|
</guide>
|
92
|
+
<bindings>
|
93
|
+
<mediaType handler="impl"
|
94
|
+
media-type="application/x-demo-slideshow"/>
|
95
|
+
</bindings>
|
85
96
|
</package>
|
data/test/helper.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
|
1
|
+
require_relative 'helper'
|
2
2
|
require 'epub/parser/content_document'
|
3
3
|
|
4
4
|
class TestParserContentDocument < Test::Unit::TestCase
|
5
5
|
def setup
|
6
6
|
@dir = 'test/fixtures/book'
|
7
|
-
@parser = EPUB::Parser::ContentDocument.new
|
7
|
+
@parser = EPUB::Parser::ContentDocument.new
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_parse_navigations
|
@@ -13,5 +13,6 @@ class TestParserContentDocument < Test::Unit::TestCase
|
|
13
13
|
|
14
14
|
assert_equal 1, navs.length
|
15
15
|
assert_equal 'Table of Contents', navs.first.heading
|
16
|
+
assert_equal 'toc', navs.first.type
|
16
17
|
end
|
17
18
|
end
|
data/test/test_parser_ocf.rb
CHANGED
@@ -7,6 +7,7 @@ class TestParserOCF < Test::Unit::TestCase
|
|
7
7
|
file = 'test/fixtures/book.epub'
|
8
8
|
@zip = Zip::Archive.open(file)
|
9
9
|
@parser = EPUB::Parser::OCF.new(@zip)
|
10
|
+
@container_xml = @zip.fopen('META-INF/container.xml').read
|
10
11
|
end
|
11
12
|
|
12
13
|
def teardown
|
@@ -14,11 +15,11 @@ class TestParserOCF < Test::Unit::TestCase
|
|
14
15
|
end
|
15
16
|
|
16
17
|
def test_parsed_container_has_one_rootfile
|
17
|
-
assert_equal 1, @parser.parse_container.rootfiles.length
|
18
|
+
assert_equal 1, @parser.parse_container(@container_xml).rootfiles.length
|
18
19
|
end
|
19
20
|
|
20
21
|
def test_parse_container_can_find_primary_rootfile
|
21
|
-
container = @parser.parse_container
|
22
|
+
container = @parser.parse_container(@container_xml)
|
22
23
|
|
23
24
|
assert_equal 'OPS/ルートファイル.opf', container.rootfile.full_path
|
24
25
|
end
|
@@ -5,9 +5,10 @@ require 'epub/parser/publication'
|
|
5
5
|
class TestParserPublication < Test::Unit::TestCase
|
6
6
|
def setup
|
7
7
|
file = 'test/fixtures/book.epub'
|
8
|
-
|
8
|
+
rootfile = 'OPS/ルートファイル.opf'
|
9
9
|
@zip = Zip::Archive.open(file)
|
10
|
-
|
10
|
+
opf = @zip.fopen(rootfile).read
|
11
|
+
@parser = EPUB::Parser::Publication.new(opf, rootfile)
|
11
12
|
@package = @parser.parse_package
|
12
13
|
end
|
13
14
|
|
@@ -44,8 +45,8 @@ class TestParserPublication < Test::Unit::TestCase
|
|
44
45
|
@manifest = @parser.parse_manifest
|
45
46
|
end
|
46
47
|
|
47
|
-
def
|
48
|
-
assert_equal
|
48
|
+
def test_manifest_has_10_items
|
49
|
+
assert_equal 10, @manifest.items.length
|
49
50
|
end
|
50
51
|
|
51
52
|
def test_item_has_relative_path_as_iri_attribute
|
@@ -137,4 +138,33 @@ class TestParserPublication < Test::Unit::TestCase
|
|
137
138
|
assert_instance_of EPUB::Publication::Package::Manifest::Item, @guide.cover.item
|
138
139
|
end
|
139
140
|
end
|
141
|
+
|
142
|
+
class TestParseBindings < TestParserPublication
|
143
|
+
def setup
|
144
|
+
super
|
145
|
+
@package.manifest = @parser.parse_manifest
|
146
|
+
@bindings = @parser.parse_bindings
|
147
|
+
@bindings.package = @package
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_has_one_bindings
|
151
|
+
assert @bindings
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_bindings_has_one_media_type
|
155
|
+
assert_equal 1, @bindings.media_types.length
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_media_type_has_media_type_attribute
|
159
|
+
assert_equal 'application/x-demo-slideshow', @bindings.media_types.first.media_type
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_media_type_has_handler_attribute
|
163
|
+
assert_not_nil @bindings.media_types.first.handler
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_media_type_refers_item_as_handler
|
167
|
+
assert_kind_of EPUB::Publication::Package::Manifest::Item, @bindings.media_types.first.handler
|
168
|
+
end
|
169
|
+
end
|
140
170
|
end
|
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.1.0
|
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-09-23 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubygems-test
|
16
|
-
requirement: &
|
16
|
+
requirement: &14556200 !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: *14556200
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &14555160 !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: *14555160
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: pry
|
38
|
-
requirement: &
|
38
|
+
requirement: &14553880 !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: *14553880
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: pry-doc
|
49
|
-
requirement: &
|
49
|
+
requirement: &14552820 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,21 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: pry-nav
|
60
|
-
requirement: &7783400 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
|
-
type: :development
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *7783400
|
57
|
+
version_requirements: *14552820
|
69
58
|
- !ruby/object:Gem::Dependency
|
70
59
|
name: test-unit-full
|
71
|
-
requirement: &
|
60
|
+
requirement: &14835840 !ruby/object:Gem::Requirement
|
72
61
|
none: false
|
73
62
|
requirements:
|
74
63
|
- - ! '>='
|
@@ -76,10 +65,10 @@ dependencies:
|
|
76
65
|
version: '0'
|
77
66
|
type: :development
|
78
67
|
prerelease: false
|
79
|
-
version_requirements: *
|
68
|
+
version_requirements: *14835840
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
70
|
name: simplecov
|
82
|
-
requirement: &
|
71
|
+
requirement: &14832360 !ruby/object:Gem::Requirement
|
83
72
|
none: false
|
84
73
|
requirements:
|
85
74
|
- - ! '>='
|
@@ -87,10 +76,10 @@ dependencies:
|
|
87
76
|
version: '0'
|
88
77
|
type: :development
|
89
78
|
prerelease: false
|
90
|
-
version_requirements: *
|
79
|
+
version_requirements: *14832360
|
91
80
|
- !ruby/object:Gem::Dependency
|
92
81
|
name: thin
|
93
|
-
requirement: &
|
82
|
+
requirement: &14761180 !ruby/object:Gem::Requirement
|
94
83
|
none: false
|
95
84
|
requirements:
|
96
85
|
- - ! '>='
|
@@ -98,10 +87,10 @@ dependencies:
|
|
98
87
|
version: '0'
|
99
88
|
type: :development
|
100
89
|
prerelease: false
|
101
|
-
version_requirements: *
|
90
|
+
version_requirements: *14761180
|
102
91
|
- !ruby/object:Gem::Dependency
|
103
92
|
name: yard
|
104
|
-
requirement: &
|
93
|
+
requirement: &14760040 !ruby/object:Gem::Requirement
|
105
94
|
none: false
|
106
95
|
requirements:
|
107
96
|
- - ! '>='
|
@@ -109,10 +98,10 @@ dependencies:
|
|
109
98
|
version: '0'
|
110
99
|
type: :development
|
111
100
|
prerelease: false
|
112
|
-
version_requirements: *
|
101
|
+
version_requirements: *14760040
|
113
102
|
- !ruby/object:Gem::Dependency
|
114
103
|
name: gem-man
|
115
|
-
requirement: &
|
104
|
+
requirement: &14758040 !ruby/object:Gem::Requirement
|
116
105
|
none: false
|
117
106
|
requirements:
|
118
107
|
- - ! '>='
|
@@ -120,10 +109,10 @@ dependencies:
|
|
120
109
|
version: '0'
|
121
110
|
type: :development
|
122
111
|
prerelease: false
|
123
|
-
version_requirements: *
|
112
|
+
version_requirements: *14758040
|
124
113
|
- !ruby/object:Gem::Dependency
|
125
114
|
name: ronn
|
126
|
-
requirement: &
|
115
|
+
requirement: &14756820 !ruby/object:Gem::Requirement
|
127
116
|
none: false
|
128
117
|
requirements:
|
129
118
|
- - ! '>='
|
@@ -131,10 +120,10 @@ dependencies:
|
|
131
120
|
version: '0'
|
132
121
|
type: :development
|
133
122
|
prerelease: false
|
134
|
-
version_requirements: *
|
123
|
+
version_requirements: *14756820
|
135
124
|
- !ruby/object:Gem::Dependency
|
136
125
|
name: epzip
|
137
|
-
requirement: &
|
126
|
+
requirement: &14791880 !ruby/object:Gem::Requirement
|
138
127
|
none: false
|
139
128
|
requirements:
|
140
129
|
- - ! '>='
|
@@ -142,10 +131,10 @@ dependencies:
|
|
142
131
|
version: '0'
|
143
132
|
type: :development
|
144
133
|
prerelease: false
|
145
|
-
version_requirements: *
|
134
|
+
version_requirements: *14791880
|
146
135
|
- !ruby/object:Gem::Dependency
|
147
136
|
name: epubcheck
|
148
|
-
requirement: &
|
137
|
+
requirement: &14790180 !ruby/object:Gem::Requirement
|
149
138
|
none: false
|
150
139
|
requirements:
|
151
140
|
- - ! '>='
|
@@ -153,10 +142,10 @@ dependencies:
|
|
153
142
|
version: '0'
|
154
143
|
type: :development
|
155
144
|
prerelease: false
|
156
|
-
version_requirements: *
|
145
|
+
version_requirements: *14790180
|
157
146
|
- !ruby/object:Gem::Dependency
|
158
147
|
name: epub_validator
|
159
|
-
requirement: &
|
148
|
+
requirement: &14789060 !ruby/object:Gem::Requirement
|
160
149
|
none: false
|
161
150
|
requirements:
|
162
151
|
- - ! '>='
|
@@ -164,10 +153,10 @@ dependencies:
|
|
164
153
|
version: '0'
|
165
154
|
type: :development
|
166
155
|
prerelease: false
|
167
|
-
version_requirements: *
|
156
|
+
version_requirements: *14789060
|
168
157
|
- !ruby/object:Gem::Dependency
|
169
158
|
name: aruba
|
170
|
-
requirement: &
|
159
|
+
requirement: &14786300 !ruby/object:Gem::Requirement
|
171
160
|
none: false
|
172
161
|
requirements:
|
173
162
|
- - ! '>='
|
@@ -175,10 +164,10 @@ dependencies:
|
|
175
164
|
version: '0'
|
176
165
|
type: :development
|
177
166
|
prerelease: false
|
178
|
-
version_requirements: *
|
167
|
+
version_requirements: *14786300
|
179
168
|
- !ruby/object:Gem::Dependency
|
180
169
|
name: enumerabler
|
181
|
-
requirement: &
|
170
|
+
requirement: &13965260 !ruby/object:Gem::Requirement
|
182
171
|
none: false
|
183
172
|
requirements:
|
184
173
|
- - ! '>='
|
@@ -186,10 +175,10 @@ dependencies:
|
|
186
175
|
version: '0'
|
187
176
|
type: :runtime
|
188
177
|
prerelease: false
|
189
|
-
version_requirements: *
|
178
|
+
version_requirements: *13965260
|
190
179
|
- !ruby/object:Gem::Dependency
|
191
180
|
name: zipruby
|
192
|
-
requirement: &
|
181
|
+
requirement: &13963160 !ruby/object:Gem::Requirement
|
193
182
|
none: false
|
194
183
|
requirements:
|
195
184
|
- - ! '>='
|
@@ -197,10 +186,10 @@ dependencies:
|
|
197
186
|
version: '0'
|
198
187
|
type: :runtime
|
199
188
|
prerelease: false
|
200
|
-
version_requirements: *
|
189
|
+
version_requirements: *13963160
|
201
190
|
- !ruby/object:Gem::Dependency
|
202
191
|
name: nokogiri
|
203
|
-
requirement: &
|
192
|
+
requirement: &13962300 !ruby/object:Gem::Requirement
|
204
193
|
none: false
|
205
194
|
requirements:
|
206
195
|
- - ! '>='
|
@@ -208,10 +197,10 @@ dependencies:
|
|
208
197
|
version: '0'
|
209
198
|
type: :runtime
|
210
199
|
prerelease: false
|
211
|
-
version_requirements: *
|
200
|
+
version_requirements: *13962300
|
212
201
|
- !ruby/object:Gem::Dependency
|
213
202
|
name: addressable
|
214
|
-
requirement: &
|
203
|
+
requirement: &13960940 !ruby/object:Gem::Requirement
|
215
204
|
none: false
|
216
205
|
requirements:
|
217
206
|
- - ! '>='
|
@@ -219,7 +208,7 @@ dependencies:
|
|
219
208
|
version: '0'
|
220
209
|
type: :runtime
|
221
210
|
prerelease: false
|
222
|
-
version_requirements: *
|
211
|
+
version_requirements: *13960940
|
223
212
|
description: Parse EPUB 3 book loosely
|
224
213
|
email:
|
225
214
|
- KitaitiMakoto@gmail.com
|
@@ -265,7 +254,6 @@ files:
|
|
265
254
|
- schemas/epub-nav-30.sch
|
266
255
|
- schemas/epub-xhtml-30.sch
|
267
256
|
- schemas/ocf-container-30.rnc
|
268
|
-
- test/fixtures/book.epub
|
269
257
|
- test/fixtures/book/META-INF/container.xml
|
270
258
|
- test/fixtures/book/OPS/nav.xhtml
|
271
259
|
- test/fixtures/book/mimetype
|
@@ -291,7 +279,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
291
279
|
version: '0'
|
292
280
|
segments:
|
293
281
|
- 0
|
294
|
-
hash:
|
282
|
+
hash: -473258669036225186
|
295
283
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
296
284
|
none: false
|
297
285
|
requirements:
|
@@ -300,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
300
288
|
version: '0'
|
301
289
|
segments:
|
302
290
|
- 0
|
303
|
-
hash:
|
291
|
+
hash: -473258669036225186
|
304
292
|
requirements: []
|
305
293
|
rubyforge_project:
|
306
294
|
rubygems_version: 1.8.8
|
data/test/fixtures/book.epub
DELETED
Binary file
|