epub-parser 0.0.4 → 0.0.5
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/Rakefile +10 -0
- data/epub-parser.gemspec +1 -0
- data/lib/epub/parser/ocf.rb +1 -1
- data/lib/epub/parser/publication.rb +1 -1
- data/lib/epub/parser/version.rb +1 -1
- data/lib/epub/publication/package/manifest.rb +7 -4
- data/lib/epub/publication/package/spine.rb +1 -0
- 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 +6 -0
- data/test/test_parser.rb +2 -0
- data/test/test_parser_ocf.rb +4 -0
- data/test/test_parser_publication.rb +7 -2
- metadata +39 -28
data/Rakefile
CHANGED
@@ -10,3 +10,13 @@ Rake::TestTask.new do |task|
|
|
10
10
|
end
|
11
11
|
|
12
12
|
YARD::Rake::YardocTask.new
|
13
|
+
|
14
|
+
namespace :sample do
|
15
|
+
desc 'Build the test fixture EPUB'
|
16
|
+
task :build do
|
17
|
+
input_dir = 'test/fixtures/book'
|
18
|
+
output_dir = 'test/fixtures/'
|
19
|
+
FileList["#{input_dir}/**/*"]
|
20
|
+
sh "epzip #{input_dir}"
|
21
|
+
end
|
22
|
+
end
|
data/epub-parser.gemspec
CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_development_dependency 'thin'
|
29
29
|
s.add_development_dependency 'yard'
|
30
30
|
s.add_development_dependency 'epzip'
|
31
|
+
s.add_development_dependency 'epubcheck'
|
31
32
|
s.add_development_dependency 'epub_validator'
|
32
33
|
|
33
34
|
s.add_runtime_dependency 'enumerabler'
|
data/lib/epub/parser/ocf.rb
CHANGED
@@ -34,8 +34,8 @@ module EPUB
|
|
34
34
|
rootfile = EPUB::OCF::Container::Rootfile.new
|
35
35
|
%w[full-path media-type].each do |attr|
|
36
36
|
rootfile.send(attr.gsub(/-/, '_') + '=', elem[attr])
|
37
|
-
container.rootfiles << rootfile
|
38
37
|
end
|
38
|
+
container.rootfiles << rootfile
|
39
39
|
end
|
40
40
|
|
41
41
|
container
|
@@ -68,7 +68,7 @@ module EPUB
|
|
68
68
|
%w[ idref id ].each do |attr|
|
69
69
|
itemref.send "#{attr}=", elm[attr]
|
70
70
|
end
|
71
|
-
itemref.linear =
|
71
|
+
itemref.linear = (elm['linear'] != 'no')
|
72
72
|
itemref.properties = elm['properties'] ? elm['properties'].split(' ') : []
|
73
73
|
spine << itemref
|
74
74
|
end
|
data/lib/epub/parser/version.rb
CHANGED
@@ -7,13 +7,12 @@ module EPUB
|
|
7
7
|
class Manifest
|
8
8
|
attr_accessor :package,
|
9
9
|
:id
|
10
|
-
attr_reader :items
|
11
10
|
|
12
11
|
# syntax sugar for #items.<<
|
13
12
|
def <<(item)
|
14
|
-
@items ||=
|
13
|
+
@items ||= {}
|
15
14
|
item.manifest = self
|
16
|
-
@items
|
15
|
+
@items[item.id] = item
|
17
16
|
end
|
18
17
|
|
19
18
|
# syntax sugar
|
@@ -29,8 +28,12 @@ module EPUB
|
|
29
28
|
items.selector {|i| i.properties.include? 'cover-image'}.first
|
30
29
|
end
|
31
30
|
|
31
|
+
def items
|
32
|
+
@items.collect {|id, item| item}
|
33
|
+
end
|
34
|
+
|
32
35
|
def [](item_id)
|
33
|
-
items
|
36
|
+
@items[item_id]
|
34
37
|
end
|
35
38
|
|
36
39
|
class Item
|
data/test/fixtures/book.epub
CHANGED
Binary file
|
@@ -26,6 +26,12 @@
|
|
26
26
|
<item id="cover"
|
27
27
|
href="cover.xhtml"
|
28
28
|
media-type="application/xhtml+xml"/>
|
29
|
+
<item id="internal-css"
|
30
|
+
href="special.css"
|
31
|
+
media-type="text/css"/>
|
32
|
+
<item id="external-css"
|
33
|
+
href="http://example.net/stylesheets/common.css"
|
34
|
+
media-type="text/css"/>
|
29
35
|
</manifest>
|
30
36
|
<spine>
|
31
37
|
<itemref idref="nav"/>
|
data/test/test_parser.rb
CHANGED
data/test/test_parser_ocf.rb
CHANGED
@@ -7,6 +7,10 @@ class TestParserOCF < Test::Unit::TestCase
|
|
7
7
|
@parser = EPUB::Parser::OCF.new 'test/fixtures/book'
|
8
8
|
end
|
9
9
|
|
10
|
+
def test_parsed_container_has_one_rootfile
|
11
|
+
assert_equal 1, @parser.parse_container.rootfiles.length
|
12
|
+
end
|
13
|
+
|
10
14
|
def test_parse_container_can_find_primary_rootfile
|
11
15
|
container = @parser.parse_container
|
12
16
|
|
@@ -13,8 +13,8 @@ class TestParserPublication < Test::Unit::TestCase
|
|
13
13
|
@manifest = @parser.parse_manifest
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
assert_equal
|
16
|
+
def test_manifest_has_8_items
|
17
|
+
assert_equal 8, @manifest.items.length
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_item_has_full_path_as_iri_attribute
|
@@ -76,6 +76,11 @@ class TestParserPublication < Test::Unit::TestCase
|
|
76
76
|
|
77
77
|
assert_equal fallback, result
|
78
78
|
end
|
79
|
+
|
80
|
+
def test_item_with_absolute_iri_as_href_must_keep_it
|
81
|
+
item = @manifest['external-css']
|
82
|
+
assert_equal 'http://example.net/stylesheets/common.css', item.iri.to_s
|
83
|
+
end
|
79
84
|
end
|
80
85
|
|
81
86
|
class TestParseGuide < TestParserPublication
|
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.5
|
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-01-
|
12
|
+
date: 2012-01-08 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rubygems-test
|
16
|
-
requirement: &
|
16
|
+
requirement: &11713580 !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: *11713580
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &11712960 !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: *11712960
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: pry
|
38
|
-
requirement: &
|
38
|
+
requirement: &11712220 !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: *11712220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: test-unit
|
49
|
-
requirement: &
|
49
|
+
requirement: &11730760 !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: *11730760
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
requirement: &
|
60
|
+
requirement: &11730060 !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: *11730060
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: thin
|
71
|
-
requirement: &
|
71
|
+
requirement: &11729480 !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: *11729480
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: yard
|
82
|
-
requirement: &
|
82
|
+
requirement: &11728780 !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: *11728780
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: epzip
|
93
|
-
requirement: &
|
93
|
+
requirement: &11728300 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,21 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *11728300
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: epubcheck
|
104
|
+
requirement: &11727620 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *11727620
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: epub_validator
|
104
|
-
requirement: &
|
115
|
+
requirement: &11727080 !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: *11727080
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: enumerabler
|
115
|
-
requirement: &
|
126
|
+
requirement: &11726420 !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: :runtime
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *11726420
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: nokogiri
|
126
|
-
requirement: &
|
137
|
+
requirement: &11725700 !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: :runtime
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *11725700
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: addressable
|
137
|
-
requirement: &
|
148
|
+
requirement: &11725080 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,7 +153,7 @@ dependencies:
|
|
142
153
|
version: '0'
|
143
154
|
type: :runtime
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *11725080
|
146
157
|
description: Parse EPUB 3 book loosely
|
147
158
|
email:
|
148
159
|
- KitaitiMakoto@gmail.com
|
@@ -210,7 +221,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
210
221
|
version: '0'
|
211
222
|
segments:
|
212
223
|
- 0
|
213
|
-
hash:
|
224
|
+
hash: -4205757875746414572
|
214
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
226
|
none: false
|
216
227
|
requirements:
|
@@ -219,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
230
|
version: '0'
|
220
231
|
segments:
|
221
232
|
- 0
|
222
|
-
hash:
|
233
|
+
hash: -4205757875746414572
|
223
234
|
requirements: []
|
224
235
|
rubyforge_project:
|
225
236
|
rubygems_version: 1.8.8
|