epub-parser 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.
- data/README.markdown +29 -0
- data/bin/epubinfo +13 -0
- data/epub-parser.gemspec +2 -0
- data/lib/epub.rb +9 -2
- data/lib/epub/constants.rb +1 -1
- data/lib/epub/parser.rb +0 -1
- data/lib/epub/parser/ocf.rb +2 -2
- data/lib/epub/parser/publication.rb +59 -14
- data/lib/epub/parser/version.rb +1 -1
- data/lib/epub/publication/package.rb +3 -1
- data/lib/epub/publication/package/guide.rb +0 -1
- data/lib/epub/publication/package/manifest.rb +3 -4
- data/lib/epub/publication/package/metadata.rb +41 -6
- data/test/fixtures/book.epub +0 -0
- 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 +38 -2
- data/test/test_parser.rb +2 -10
- data/test/test_parser_publication.rb +16 -1
- metadata +56 -32
- data/README +0 -14
data/README.markdown
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
EPUB Parser
|
2
|
+
===========
|
3
|
+
|
4
|
+
INSTALL
|
5
|
+
-------
|
6
|
+
gem install epub-parser
|
7
|
+
|
8
|
+
USAGE
|
9
|
+
-----
|
10
|
+
require 'epub/parser'
|
11
|
+
|
12
|
+
book = EPUB::Parser.parse 'book.epub', 'working_directory'
|
13
|
+
book.each_page_on_spine do |page|
|
14
|
+
# do somethong...
|
15
|
+
end
|
16
|
+
|
17
|
+
See [Wiki][] for more info.
|
18
|
+
|
19
|
+
[Wiki]:https://gitorious.org/epub/pages/EpubParser
|
20
|
+
|
21
|
+
REQUIREMENTS
|
22
|
+
------------
|
23
|
+
* UNIX like `unzip` command
|
24
|
+
* libxml2 and libxslt for Nokogiri gem
|
25
|
+
|
26
|
+
LICENSE
|
27
|
+
-------
|
28
|
+
This library is distribuetd under the term of the MIT License.
|
29
|
+
See MIT-LICENSE file for more info.
|
data/bin/epubinfo
ADDED
data/epub-parser.gemspec
CHANGED
@@ -30,6 +30,8 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_development_dependency 'epzip'
|
31
31
|
s.add_development_dependency 'epubcheck'
|
32
32
|
s.add_development_dependency 'epub_validator'
|
33
|
+
s.add_development_dependency 'zipruby'
|
34
|
+
s.add_development_dependency 'rubyzip'
|
33
35
|
|
34
36
|
s.add_runtime_dependency 'enumerabler'
|
35
37
|
s.add_runtime_dependency 'nokogiri'
|
data/lib/epub.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'epub/ocf'
|
2
2
|
require 'epub/publication'
|
3
3
|
require 'epub/content_document'
|
4
|
+
require 'epub/parser'
|
4
5
|
|
5
6
|
module EPUB
|
6
7
|
modules = [ :ocf, :package, :content_document ]
|
@@ -12,7 +13,13 @@ module EPUB
|
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
15
|
-
def
|
16
|
+
def parse(file, dir, options = {})
|
17
|
+
options = options.merge({:book => self})
|
18
|
+
Parser.parse(file, dir, options)
|
19
|
+
end
|
20
|
+
module_function :parse
|
21
|
+
|
22
|
+
def each_page_on_spine(&blk)
|
16
23
|
enum = @package.spine.items
|
17
24
|
if block_given?
|
18
25
|
enum.each &blk
|
@@ -21,7 +28,7 @@ module EPUB
|
|
21
28
|
end
|
22
29
|
end
|
23
30
|
|
24
|
-
def
|
31
|
+
def each_page_on_toc(&blk)
|
25
32
|
end
|
26
33
|
|
27
34
|
def each_content(&blk)
|
data/lib/epub/constants.rb
CHANGED
data/lib/epub/parser.rb
CHANGED
data/lib/epub/parser/ocf.rb
CHANGED
@@ -21,7 +21,7 @@ module EPUB
|
|
21
21
|
|
22
22
|
def parse
|
23
23
|
EPUB::OCF::MODULES.each do |m|
|
24
|
-
@ocf.
|
24
|
+
@ocf.__send__ "#{m}=", __send__("parse_#{m}")
|
25
25
|
end
|
26
26
|
@ocf
|
27
27
|
end
|
@@ -33,7 +33,7 @@ module EPUB
|
|
33
33
|
doc.xpath('/container:container/container:rootfiles/container:rootfile', EPUB::NAMESPACES).each do |elem|
|
34
34
|
rootfile = EPUB::OCF::Container::Rootfile.new
|
35
35
|
%w[full-path media-type].each do |attr|
|
36
|
-
rootfile.
|
36
|
+
rootfile.__send__(attr.gsub(/-/, '_') + '=', elem[attr])
|
37
37
|
end
|
38
38
|
container.rootfiles << rootfile
|
39
39
|
end
|
@@ -19,7 +19,7 @@ module EPUB
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def parse
|
22
|
-
|
22
|
+
parse_metadata
|
23
23
|
parse_manifest
|
24
24
|
parse_spine
|
25
25
|
parse_guide
|
@@ -29,7 +29,52 @@ module EPUB
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def parse_metadata
|
32
|
-
|
32
|
+
metadata = @package.metadata = EPUB::Publication::Package::Metadata.new
|
33
|
+
elem = @doc.xpath('/opf:package/opf:metadata', EPUB::NAMESPACES).first
|
34
|
+
|
35
|
+
metadata.identifiers = elem.xpath('./dc:identifier', EPUB::NAMESPACES).collect do |e|
|
36
|
+
identifier = EPUB::Publication::Package::Metadata::Identifier.new
|
37
|
+
identifier.content = e.content
|
38
|
+
identifier.id = id = e['id']
|
39
|
+
metadata.unique_identifier = identifier if id == @package.unique_identifier
|
40
|
+
identifier
|
41
|
+
end
|
42
|
+
|
43
|
+
metadata.titles = elem.xpath('./dc:title', EPUB::NAMESPACES).collect do |e|
|
44
|
+
title = EPUB::Publication::Package::Metadata::Title.new
|
45
|
+
title.content = e.content
|
46
|
+
%w[ id lang dir ].each do |attr|
|
47
|
+
title.__send__("#{attr}=", e[attr])
|
48
|
+
end
|
49
|
+
title
|
50
|
+
end
|
51
|
+
|
52
|
+
metadata.languages = elem.xpath('./dc:language', EPUB::NAMESPACES).collect do |e|
|
53
|
+
e.content
|
54
|
+
end
|
55
|
+
|
56
|
+
%w[ contributor coverage creator date description format publisher relation source subject type ].each do |dcmes|
|
57
|
+
metadata.__send__ "#{dcmes}s=", elem.xpath("./dc:#{dcmes}", EPUB::NAMESPACES).collect { |e|
|
58
|
+
md = EPUB::Publication::Package::Metadata::DCMES.new
|
59
|
+
md.content = e.content
|
60
|
+
%w[ id lang dir ].each do |attr|
|
61
|
+
md.__send__("#{attr}=", e[attr])
|
62
|
+
end
|
63
|
+
md
|
64
|
+
}
|
65
|
+
end
|
66
|
+
metadata.rights = elem.xpath('./dc:rights', EPUB::NAMESPACES).collect do |e|
|
67
|
+
md = EPUB::Publication::Package::Manifest::DCMES.new
|
68
|
+
md.content = e.content
|
69
|
+
%w[ id lang dir ].each do |attr|
|
70
|
+
md.__send__("#{attr}=", e[attr])
|
71
|
+
end
|
72
|
+
md
|
73
|
+
end
|
74
|
+
|
75
|
+
# handle meta elements
|
76
|
+
|
77
|
+
metadata
|
33
78
|
end
|
34
79
|
|
35
80
|
def parse_manifest
|
@@ -38,15 +83,15 @@ module EPUB
|
|
38
83
|
manifest.id = elem['id']
|
39
84
|
|
40
85
|
fallback_map = {}
|
41
|
-
elem.xpath('./opf:item', EPUB::NAMESPACES).each do |
|
86
|
+
elem.xpath('./opf:item', EPUB::NAMESPACES).each do |e|
|
42
87
|
item = EPUB::Publication::Package::Manifest::Item.new
|
43
88
|
%w[ id media-type media-overlay ].each do |attr|
|
44
|
-
item.
|
89
|
+
item.__send__("#{attr.gsub(/-/, '_')}=", e[attr])
|
45
90
|
end
|
46
|
-
item.href =
|
47
|
-
item.iri = @rootfile.join Addressable::URI.parse(
|
48
|
-
fallback_map[
|
49
|
-
item.properties =
|
91
|
+
item.href = e['href']
|
92
|
+
item.iri = @rootfile.join Addressable::URI.parse(e['href'])
|
93
|
+
fallback_map[e['fallback']] = item if e['fallback']
|
94
|
+
item.properties = e['properties'] ? e['properties'].split(' ') : []
|
50
95
|
manifest << item
|
51
96
|
end
|
52
97
|
fallback_map.each_pair do |id, from|
|
@@ -60,16 +105,16 @@ module EPUB
|
|
60
105
|
spine = @package.spine = EPUB::Publication::Package::Spine.new
|
61
106
|
elem = @doc.xpath('/opf:package/opf:spine', EPUB::NAMESPACES).first
|
62
107
|
%w[ id toc page-progression-direction ].each do |attr|
|
63
|
-
spine.
|
108
|
+
spine.__send__("#{attr.gsub(/-/, '_')}=", elem[attr])
|
64
109
|
end
|
65
110
|
|
66
|
-
elem.xpath('./opf:itemref', EPUB::NAMESPACES).each do |
|
111
|
+
elem.xpath('./opf:itemref', EPUB::NAMESPACES).each do |e|
|
67
112
|
itemref = EPUB::Publication::Package::Spine::Itemref.new
|
68
113
|
%w[ idref id ].each do |attr|
|
69
|
-
itemref.
|
114
|
+
itemref.__send__("#{attr}=", e[attr])
|
70
115
|
end
|
71
|
-
itemref.linear = (
|
72
|
-
itemref.properties =
|
116
|
+
itemref.linear = (e['linear'] != 'no')
|
117
|
+
itemref.properties = e['properties'] ? e['properties'].split(' ') : []
|
73
118
|
spine << itemref
|
74
119
|
end
|
75
120
|
|
@@ -81,7 +126,7 @@ module EPUB
|
|
81
126
|
elem = @doc.xpath('/opf:package/opf:guide/opf:reference', EPUB::NAMESPACES).each do |ref|
|
82
127
|
reference = EPUB::Publication::Package::Guide::Reference.new
|
83
128
|
%w[ type title href ].each do |attr|
|
84
|
-
reference.
|
129
|
+
reference.__send__("#{attr}=", ref[attr])
|
85
130
|
end
|
86
131
|
reference.iri = @rootfile.join Addressable::URI.parse(reference.href)
|
87
132
|
guide << reference
|
data/lib/epub/parser/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
%w[ metadata manifest spine guide ].each { |f| require "epub/publication/package/#{f}" }
|
1
|
+
%w[ metadata manifest spine guide bindings ].each { |f| require "epub/publication/package/#{f}" }
|
2
2
|
|
3
3
|
module EPUB
|
4
4
|
module Publication
|
@@ -10,6 +10,8 @@ module EPUB
|
|
10
10
|
alias lang= xml_lang=
|
11
11
|
|
12
12
|
def metadata=(metadata)
|
13
|
+
metadata.package = self
|
14
|
+
@metadata = metadata
|
13
15
|
end
|
14
16
|
|
15
17
|
def manifest=(manifest)
|
@@ -15,7 +15,6 @@ module EPUB
|
|
15
15
|
references << reference
|
16
16
|
end
|
17
17
|
|
18
|
-
# Should use epub:type list?
|
19
18
|
%w[cover title-page toc index glossary acknowledgements bibliography colophon copyright-page dedication epigraph foreword loi lot notes preface text].each do |type|
|
20
19
|
define_method type do
|
21
20
|
var = instance_variable_get "@#{type}"
|
@@ -8,7 +8,6 @@ module EPUB
|
|
8
8
|
attr_accessor :package,
|
9
9
|
:id
|
10
10
|
|
11
|
-
# syntax sugar for #items.<<
|
12
11
|
def <<(item)
|
13
12
|
@items ||= {}
|
14
13
|
item.manifest = self
|
@@ -57,16 +56,16 @@ module EPUB
|
|
57
56
|
if ad = options[:supported]
|
58
57
|
supported = supported | (ad.respond_to?(:to_ary) ? ad : [ad])
|
59
58
|
end
|
60
|
-
if del = options[:
|
59
|
+
if del = options[:unsupported]
|
61
60
|
supported = supported - (del.respond_to?(:to_ary) ? del : [del])
|
62
61
|
end
|
63
62
|
|
64
63
|
if supported.include? media_type
|
65
64
|
yield self
|
66
65
|
elsif fallback
|
67
|
-
fallback.use_fallback_chain(options) {|
|
66
|
+
fallback.use_fallback_chain(options) {|fb| yield fb}
|
68
67
|
else
|
69
|
-
raise EPUB::MediaType::
|
68
|
+
raise EPUB::MediaType::UnsupportedError
|
70
69
|
end
|
71
70
|
end
|
72
71
|
|
@@ -1,16 +1,51 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
1
3
|
module EPUB
|
2
4
|
module Publication
|
3
5
|
class Package
|
4
6
|
class Metadata
|
5
|
-
|
6
|
-
[:
|
7
|
-
:relations, :
|
8
|
-
attr_accessor
|
9
|
-
|
7
|
+
ELEMS = [:identifiers, :titles, :languages] +
|
8
|
+
[:contributors, :coverages, :creators, :dates, :descriptions, :formats, :publishers,
|
9
|
+
:relations, :rights, :sources, :subjects, :types]
|
10
|
+
attr_accessor :package,
|
11
|
+
*(ELEMS.collect {|elem| "dc_#{elem}"})
|
12
|
+
ELEMS.each do |elem|
|
10
13
|
alias_method elem, "dc_#{elem}"
|
11
14
|
alias_method "#{elem}=", "dc_#{elem}="
|
12
15
|
end
|
13
|
-
attr_accessor :
|
16
|
+
attr_accessor :links
|
17
|
+
|
18
|
+
def to_json(pretty = false)
|
19
|
+
obj = {}
|
20
|
+
ELEMS.each do |elem|
|
21
|
+
obj[elem] = __send__(elem)
|
22
|
+
end
|
23
|
+
obj.to_json
|
24
|
+
end
|
25
|
+
|
26
|
+
class Identifier
|
27
|
+
attr_accessor :content, :id
|
28
|
+
|
29
|
+
def to_s
|
30
|
+
content
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Title
|
35
|
+
attr_accessor :content, :id, :lang, :dir
|
36
|
+
|
37
|
+
def to_s
|
38
|
+
content
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class DCMES
|
43
|
+
attr_accessor :content, :id, :lang, :dir
|
44
|
+
|
45
|
+
def to_s
|
46
|
+
content
|
47
|
+
end
|
48
|
+
end
|
14
49
|
end
|
15
50
|
end
|
16
51
|
end
|
data/test/fixtures/book.epub
CHANGED
Binary file
|
@@ -1,8 +1,44 @@
|
|
1
1
|
<?xml version="1.0"?>
|
2
2
|
<package version="3.0"
|
3
|
-
|
3
|
+
unique-identifier="pub-id"
|
4
4
|
xmlns="http://www.idpf.org/2007/opf">
|
5
|
-
<metadata
|
5
|
+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
|
6
|
+
<dc:identifier id="pub-id">da265185-8da8-462d-a146-17dd388f61fc</dc:identifier>
|
7
|
+
|
8
|
+
<dc:title id="t1" xml:lang="fr">Mon premier guide de cuisson, un Mémoire</dc:title>
|
9
|
+
<meta refines="#t1" property="title-type">main</meta>
|
10
|
+
<meta refines="#t1" property="display-seq">2</meta>
|
11
|
+
|
12
|
+
<dc:title id="t2">The Great Cookbooks of the World</dc:title>
|
13
|
+
<meta refines="#t2" property="title-type">collection</meta>
|
14
|
+
<meta refines="#t2" property="display-seq">1</meta>
|
15
|
+
|
16
|
+
<dc:title id="t3">The New French Cuisine Masters</dc:title>
|
17
|
+
<meta refines="#t3" property="title-type">collection</meta>
|
18
|
+
<meta refines="#t3" property="group-position">2</meta>
|
19
|
+
<meta refines="#t3" property="display-seq">3</meta>
|
20
|
+
|
21
|
+
<dc:title id="t4">Special Anniversary Edition</dc:title>
|
22
|
+
<meta refines="#t4" property="title-type">edition</meta>
|
23
|
+
<meta refines="#t4" property="display-seq">4</meta>
|
24
|
+
|
25
|
+
<dc:title id="t5">The Great Cookbooks of the World:
|
26
|
+
Mon premier guide de cuisson, un Mémoire.
|
27
|
+
The New French Cuisine Masters, Volume Two.
|
28
|
+
Special Anniversary Edition</dc:title>
|
29
|
+
<meta refines="#t5" property="title-type">extended</meta>
|
30
|
+
|
31
|
+
<dc:language>ja</dc:language>
|
32
|
+
<meta property="dcterms:modified">2012-02-03T12:00:00Z</meta>
|
33
|
+
|
34
|
+
<dc:creator id="creator01">Lewis Carroll</dc:creator>
|
35
|
+
<meta refines="#creator01" property="role" scheme="marc:relators">aut</meta>
|
36
|
+
<meta refines="#creator01" property="display-seq">1</meta>
|
37
|
+
|
38
|
+
<dc:creator id="creator02">John Tenniel</dc:creator>
|
39
|
+
<meta refines="#creator02" property="role" scheme="marc:relators">ill</meta>
|
40
|
+
<meta refines="#creator02" property="display-seq">2</meta>
|
41
|
+
</metadata>
|
6
42
|
<manifest id="manifest-id">
|
7
43
|
<item id="nav"
|
8
44
|
href="nav.xhtml"
|
data/test/test_parser.rb
CHANGED
@@ -23,8 +23,8 @@ class TestParser < Test::Unit::TestCase
|
|
23
23
|
@book = @parser.parse
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
27
|
-
@book.
|
26
|
+
def test_each_page_on_spine_iterates_items_in_spines_order
|
27
|
+
@book.each_page_on_spine do |page|
|
28
28
|
assert_instance_of EPUB::Publication::Package::Manifest::Item, page
|
29
29
|
end
|
30
30
|
end
|
@@ -48,13 +48,5 @@ class TestParser < Test::Unit::TestCase
|
|
48
48
|
assert_instance_of EPUB::Publication::Package::Manifest::Item, page
|
49
49
|
end
|
50
50
|
end
|
51
|
-
|
52
|
-
def test_h
|
53
|
-
Modify method name
|
54
|
-
|
55
|
-
@book.resources.each do |item|
|
56
|
-
assert_instance_of EPUB::Publication::Package::Manifest::Item, item
|
57
|
-
end
|
58
|
-
end
|
59
51
|
end
|
60
52
|
end
|
@@ -7,6 +7,21 @@ class TestParserPublication < Test::Unit::TestCase
|
|
7
7
|
@parser = EPUB::Parser::Publication.new 'test/fixtures/book/OPS/ルートファイル.opf'
|
8
8
|
end
|
9
9
|
|
10
|
+
class TestParseMetaata < TestParserPublication
|
11
|
+
def setup
|
12
|
+
super
|
13
|
+
@metadata = @parser.parse_metadata
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_has_identifier
|
17
|
+
assert_equal 'da265185-8da8-462d-a146-17dd388f61fc', @metadata.identifiers.first.content
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_has_five_titles
|
21
|
+
assert_equal 5, @metadata.titles.length
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
10
25
|
class TestParseManifest < TestParserPublication
|
11
26
|
def setup
|
12
27
|
super
|
@@ -70,7 +85,7 @@ class TestParserPublication < Test::Unit::TestCase
|
|
70
85
|
def test_item_can_custome_not_supported_media_type_in_use_fallback_chain
|
71
86
|
item = @manifest['manifest-item-2']
|
72
87
|
fallback = item.fallback.fallback
|
73
|
-
result = item.use_fallback_chain
|
88
|
+
result = item.use_fallback_chain unsupported: 'image/svg+xml' do |current|
|
74
89
|
current
|
75
90
|
end
|
76
91
|
|
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.6
|
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-02-14 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubygems-test
|
16
|
-
requirement: &
|
16
|
+
requirement: &7403740 !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: *7403740
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &7421660 !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: *7421660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: pry
|
38
|
-
requirement: &
|
38
|
+
requirement: &7421060 !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: *7421060
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: test-unit
|
49
|
-
requirement: &
|
49
|
+
requirement: &7420480 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '2'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *7420480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
requirement: &
|
60
|
+
requirement: &7419900 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *7419900
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thin
|
71
|
-
requirement: &
|
71
|
+
requirement: &7419300 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *7419300
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: yard
|
82
|
-
requirement: &
|
82
|
+
requirement: &7418720 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *7418720
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: epzip
|
93
|
-
requirement: &
|
93
|
+
requirement: &7418100 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *7418100
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: epubcheck
|
104
|
-
requirement: &
|
104
|
+
requirement: &7416760 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *7416760
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: epub_validator
|
115
|
-
requirement: &
|
115
|
+
requirement: &7414340 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,32 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *7414340
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: zipruby
|
126
|
+
requirement: &7427980 !ruby/object:Gem::Requirement
|
127
|
+
none: false
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: *7427980
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: rubyzip
|
137
|
+
requirement: &7442820 !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
type: :development
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *7442820
|
124
146
|
- !ruby/object:Gem::Dependency
|
125
147
|
name: enumerabler
|
126
|
-
requirement: &
|
148
|
+
requirement: &7440660 !ruby/object:Gem::Requirement
|
127
149
|
none: false
|
128
150
|
requirements:
|
129
151
|
- - ! '>='
|
@@ -131,10 +153,10 @@ dependencies:
|
|
131
153
|
version: '0'
|
132
154
|
type: :runtime
|
133
155
|
prerelease: false
|
134
|
-
version_requirements: *
|
156
|
+
version_requirements: *7440660
|
135
157
|
- !ruby/object:Gem::Dependency
|
136
158
|
name: nokogiri
|
137
|
-
requirement: &
|
159
|
+
requirement: &7439140 !ruby/object:Gem::Requirement
|
138
160
|
none: false
|
139
161
|
requirements:
|
140
162
|
- - ! '>='
|
@@ -142,10 +164,10 @@ dependencies:
|
|
142
164
|
version: '0'
|
143
165
|
type: :runtime
|
144
166
|
prerelease: false
|
145
|
-
version_requirements: *
|
167
|
+
version_requirements: *7439140
|
146
168
|
- !ruby/object:Gem::Dependency
|
147
169
|
name: addressable
|
148
|
-
requirement: &
|
170
|
+
requirement: &7436940 !ruby/object:Gem::Requirement
|
149
171
|
none: false
|
150
172
|
requirements:
|
151
173
|
- - ! '>='
|
@@ -153,11 +175,12 @@ dependencies:
|
|
153
175
|
version: '0'
|
154
176
|
type: :runtime
|
155
177
|
prerelease: false
|
156
|
-
version_requirements: *
|
178
|
+
version_requirements: *7436940
|
157
179
|
description: Parse EPUB 3 book loosely
|
158
180
|
email:
|
159
181
|
- KitaitiMakoto@gmail.com
|
160
|
-
executables:
|
182
|
+
executables:
|
183
|
+
- epubinfo
|
161
184
|
extensions: []
|
162
185
|
extra_rdoc_files: []
|
163
186
|
files:
|
@@ -165,8 +188,9 @@ files:
|
|
165
188
|
- .gitignore
|
166
189
|
- Gemfile
|
167
190
|
- MIT-LICENSE
|
168
|
-
- README
|
191
|
+
- README.markdown
|
169
192
|
- Rakefile
|
193
|
+
- bin/epubinfo
|
170
194
|
- epub-parser.gemspec
|
171
195
|
- lib/epub.rb
|
172
196
|
- lib/epub/book.rb
|
@@ -221,7 +245,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
221
245
|
version: '0'
|
222
246
|
segments:
|
223
247
|
- 0
|
224
|
-
hash:
|
248
|
+
hash: 3679147164764535889
|
225
249
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
226
250
|
none: false
|
227
251
|
requirements:
|
@@ -230,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
254
|
version: '0'
|
231
255
|
segments:
|
232
256
|
- 0
|
233
|
-
hash:
|
257
|
+
hash: 3679147164764535889
|
234
258
|
requirements: []
|
235
259
|
rubyforge_project:
|
236
260
|
rubygems_version: 1.8.8
|
data/README
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
EPUB Parer
|
2
|
-
==========
|
3
|
-
|
4
|
-
USAGE
|
5
|
-
-----
|
6
|
-
book = EPUB::Parser.parse 'book.epub'
|
7
|
-
book.each_page_in_spines_order do |page|
|
8
|
-
# do somethong...
|
9
|
-
end
|
10
|
-
|
11
|
-
LICENSE
|
12
|
-
-------
|
13
|
-
This library is distribuetd under the term of the MIT License.
|
14
|
-
See MIT-LICENSE file for more info.
|