epub-parser-io 0.1.6a

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.
Files changed (78) hide show
  1. data/.gemtest +0 -0
  2. data/.gitignore +12 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +4 -0
  5. data/.yardopts +10 -0
  6. data/CHANGELOG.markdown +61 -0
  7. data/Gemfile +2 -0
  8. data/MIT-LICENSE +7 -0
  9. data/README.markdown +174 -0
  10. data/Rakefile +68 -0
  11. data/bin/epub-open +25 -0
  12. data/bin/epubinfo +64 -0
  13. data/docs/EpubOpen.markdown +43 -0
  14. data/docs/Epubinfo.markdown +37 -0
  15. data/docs/FixedLayout.markdown +96 -0
  16. data/docs/Home.markdown +128 -0
  17. data/docs/Item.markdown +80 -0
  18. data/docs/Navigation.markdown +58 -0
  19. data/docs/Publication.markdown +54 -0
  20. data/epub-parser.gemspec +49 -0
  21. data/features/epubinfo.feature +6 -0
  22. data/features/step_definitions/epubinfo_steps.rb +5 -0
  23. data/features/support/env.rb +1 -0
  24. data/lib/epub/book/features.rb +85 -0
  25. data/lib/epub/book.rb +7 -0
  26. data/lib/epub/constants.rb +48 -0
  27. data/lib/epub/content_document/navigation.rb +104 -0
  28. data/lib/epub/content_document/xhtml.rb +41 -0
  29. data/lib/epub/content_document.rb +2 -0
  30. data/lib/epub/inspector.rb +45 -0
  31. data/lib/epub/ocf/container.rb +28 -0
  32. data/lib/epub/ocf/encryption.rb +7 -0
  33. data/lib/epub/ocf/manifest.rb +6 -0
  34. data/lib/epub/ocf/metadata.rb +6 -0
  35. data/lib/epub/ocf/rights.rb +6 -0
  36. data/lib/epub/ocf/signatures.rb +6 -0
  37. data/lib/epub/ocf.rb +8 -0
  38. data/lib/epub/parser/content_document.rb +111 -0
  39. data/lib/epub/parser/ocf.rb +73 -0
  40. data/lib/epub/parser/publication.rb +200 -0
  41. data/lib/epub/parser/utils.rb +20 -0
  42. data/lib/epub/parser/version.rb +5 -0
  43. data/lib/epub/parser.rb +103 -0
  44. data/lib/epub/publication/fixed_layout.rb +208 -0
  45. data/lib/epub/publication/package/bindings.rb +31 -0
  46. data/lib/epub/publication/package/guide.rb +51 -0
  47. data/lib/epub/publication/package/manifest.rb +180 -0
  48. data/lib/epub/publication/package/metadata.rb +170 -0
  49. data/lib/epub/publication/package/spine.rb +106 -0
  50. data/lib/epub/publication/package.rb +68 -0
  51. data/lib/epub/publication.rb +2 -0
  52. data/lib/epub.rb +14 -0
  53. data/man/epubinfo.1.ronn +19 -0
  54. data/schemas/epub-nav-30.rnc +10 -0
  55. data/schemas/epub-nav-30.sch +72 -0
  56. data/schemas/epub-xhtml-30.sch +377 -0
  57. data/schemas/ocf-container-30.rnc +16 -0
  58. data/test/fixtures/book/META-INF/container.xml +6 -0
  59. data/test/fixtures/book/OPS/%E6%97%A5%E6%9C%AC%E8%AA%9E.xhtml +10 -0
  60. data/test/fixtures/book/OPS/case-sensitive.xhtml +9 -0
  61. data/test/fixtures/book/OPS/containing space.xhtml +10 -0
  62. data/test/fixtures/book/OPS/containing%20space.xhtml +10 -0
  63. data/test/fixtures/book/OPS/nav.xhtml +28 -0
  64. 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 +119 -0
  65. data/test/fixtures/book/OPS//346/227/245/346/234/254/350/252/236.xhtml +10 -0
  66. data/test/fixtures/book/mimetype +1 -0
  67. data/test/helper.rb +9 -0
  68. data/test/test_content_document.rb +92 -0
  69. data/test/test_epub.rb +21 -0
  70. data/test/test_fixed_layout.rb +257 -0
  71. data/test/test_inspect.rb +121 -0
  72. data/test/test_parser.rb +60 -0
  73. data/test/test_parser_content_document.rb +36 -0
  74. data/test/test_parser_fixed_layout.rb +16 -0
  75. data/test/test_parser_ocf.rb +38 -0
  76. data/test/test_parser_publication.rb +247 -0
  77. data/test/test_publication.rb +324 -0
  78. metadata +445 -0
@@ -0,0 +1,324 @@
1
+ require_relative 'helper'
2
+ require 'epub/publication'
3
+
4
+ class TestPublication < Test::Unit::TestCase
5
+ include EPUB::Publication
6
+ def setup
7
+ @package = EPUB::Publication::Package.new
8
+ end
9
+
10
+ def test_package_clear_package_attribute_of_submodules_when_attribute_writer_called
11
+ metadata = EPUB::Publication::Package::Metadata.new
12
+ another_metadata = EPUB::Publication::Package::Metadata.new
13
+
14
+ @package.metadata = metadata
15
+ assert_equal metadata.package, @package
16
+
17
+ @package.metadata = another_metadata
18
+ assert_nil metadata.package
19
+ end
20
+
21
+ class TestMetadata < TestPublication
22
+ def test_meta_refines_setter_connect_refinee_to_the_meta
23
+ refiner = Package::Metadata::Meta.new
24
+ refinee = Package::Metadata::Meta.new
25
+ refiner.refines = refinee
26
+ assert_same refinee.refiners.first, refiner
27
+ end
28
+
29
+ def test_link_refines_setter_connect_refinee_to_the_link
30
+ refiner = Package::Metadata::Link.new
31
+ refinee = Package::Metadata::Meta.new
32
+ refiner.refines = refinee
33
+ assert_same refinee.refiners.first, refiner
34
+ end
35
+
36
+ def test_title_returns_extended_title_when_it_exists
37
+ extended_title = Package::Metadata::Title.new
38
+ extended_title.id = 'extended-title'
39
+ extended_title.content = 'Extended Title'
40
+ extended_refiner = Package::Metadata::Meta.new
41
+ extended_refiner.property = 'title-type'
42
+ extended_refiner.content = 'extended'
43
+ extended_refiner.refines = extended_title
44
+ extended_order = Package::Metadata::Meta.new
45
+ extended_order.property = 'display-seq'
46
+ extended_order.content = 2
47
+ extended_order.refines = extended_title
48
+
49
+ main_title = Package::Metadata::Title.new
50
+ main_title.id = 'main-title'
51
+ main_title.content = 'Main Title'
52
+ main_refiner = Package::Metadata::Meta.new
53
+ main_refiner.property = 'title-type'
54
+ main_refiner.content = 'main'
55
+ main_refiner.refines = main_title
56
+ main_order = Package::Metadata::Meta.new
57
+ main_order.property = 'display-seq'
58
+ main_order.content = 1
59
+ main_order.refines = main_title
60
+
61
+ package = Package::Metadata.new
62
+ package.titles << main_title
63
+ package.titles << extended_title
64
+
65
+ assert_equal 'Extended Title', package.title
66
+ end
67
+
68
+ def test_title_returns_compositted_title_when_it_is_not_empty
69
+ main_title = Package::Metadata::Title.new
70
+ main_title.id = 'main-title'
71
+ main_title.content = 'main title'
72
+ main_refiner = Package::Metadata::Meta.new
73
+ main_refiner.property = 'title-type'
74
+ main_refiner.content = 'main'
75
+ main_refiner.refines = main_title
76
+ main_order = Package::Metadata::Meta.new
77
+ main_order.property = 'display-seq'
78
+ main_order.content = 1
79
+ main_order.refines = main_title
80
+
81
+ subtitle = Package::Metadata::Title.new
82
+ subtitle.id = 'subtitle'
83
+ subtitle.content = 'subtitle'
84
+ sub_refiner = Package::Metadata::Meta.new
85
+ sub_refiner.property = 'title-type'
86
+ sub_refiner.content = 'subtitle'
87
+ sub_refiner.refines = subtitle
88
+ sub_order = Package::Metadata::Meta.new
89
+ sub_order.property = 'display-seq'
90
+ sub_order.content = 2
91
+ sub_order.refines = subtitle
92
+
93
+ package = Package::Metadata.new
94
+ package.titles << main_title << subtitle
95
+
96
+ assert_equal "main title\nsubtitle", package.title
97
+ end
98
+
99
+ def test_title_returns_main_title_when_no_title_has_order
100
+ main_title = Package::Metadata::Title.new
101
+ main_title.id = 'main-title'
102
+ main_title.content = 'main title'
103
+ main_refiner = Package::Metadata::Meta.new
104
+ main_refiner.property = 'title-type'
105
+ main_refiner.content = 'main'
106
+ main_refiner.refines = main_title
107
+
108
+ subtitle = Package::Metadata::Title.new
109
+ subtitle.id = 'subtitle'
110
+ subtitle.content = 'subtitle'
111
+ sub_refiner = Package::Metadata::Meta.new
112
+ sub_refiner.property = 'title-type'
113
+ sub_refiner.content = 'subtitle'
114
+ sub_refiner.refines = subtitle
115
+
116
+ package = Package::Metadata.new
117
+ package.titles << subtitle << main_title
118
+
119
+ assert_equal "main title", package.title
120
+ end
121
+
122
+ def test_meta_refining_publication_is_primary_expression
123
+ meta = Package::Metadata::Meta.new
124
+ meta.property = 'dcterms:modified'
125
+
126
+ assert_true meta.primary_expression?
127
+ end
128
+
129
+ def test_meta_refining_other_element_is_subexpression
130
+ title = Package::Metadata::Title.new
131
+ title.id = 'title'
132
+ meta = Package::Metadata::Meta.new
133
+ meta.refines = title
134
+
135
+ assert_true meta.subexpression?
136
+ end
137
+
138
+ class TestIdentifier < self
139
+ def setup
140
+ @identifier = Package::Metadata::Identifier.new
141
+ end
142
+
143
+ def test_is_isbn_when_refined_by_onix_scheme
144
+ meta = Package::Metadata::Meta.new
145
+ meta.property = 'identifier-type'
146
+ meta.scheme = 'onix:codelist5'
147
+ meta.content = '02'
148
+ meta.refines = @identifier
149
+
150
+ assert_true @identifier.isbn?
151
+ end
152
+
153
+ def test_is_isbn_when_qualified_by_attribute
154
+ @identifier.content = '0000000000'
155
+ @identifier.scheme = 'ISBN'
156
+
157
+ assert_true @identifier.isbn?
158
+ end
159
+
160
+ def test_is_isbn_when_content_is_isbn_urn
161
+ @identifier.content = 'urn:isbn:0000000000'
162
+
163
+ assert_true @identifier.isbn?
164
+ end
165
+
166
+ def test_is_not_isbn_when_no_refiner_nor_scheme
167
+ assert_false @identifier.isbn?
168
+ end
169
+
170
+ def test_refiner_take_precedence_over_scheme_for_isbn
171
+ @identifier.content = '0000000000000'
172
+ @identifier.scheme = 'something'
173
+ meta = Package::Metadata::Meta.new
174
+ meta.property = 'identifier-type'
175
+ meta.scheme = 'onix:codelist5'
176
+ meta.content = '15'
177
+ meta.refines = @identifier
178
+
179
+ assert_true @identifier.isbn?
180
+ end
181
+ end
182
+ end
183
+
184
+ class TestManifest < TestPublication
185
+ include EPUB::Publication
186
+
187
+ class TestItem < TestManifest
188
+ def test_content_document_returns_nil_when_not_xhtml_nor_svg
189
+ item = EPUB::Publication::Package::Manifest::Item.new
190
+ item.media_type = 'some/media'
191
+ assert_nil item.content_document
192
+ end
193
+
194
+ def test_content_document_returns_navigation_document_when_nav
195
+ item = EPUB::Publication::Package::Manifest::Item.new
196
+ item.media_type = 'application/xhtml+xml'
197
+ item.properties = %w[nav]
198
+ stub(item).read {File.read(File.expand_path('../fixtures/book/OPS/nav.xhtml', __FILE__))}
199
+ stub(item).manifest.stub!.items {[]}
200
+
201
+ assert_instance_of EPUB::ContentDocument::Navigation, item.content_document
202
+ end
203
+
204
+ def test_can_refer_itemref_which_refers_self
205
+ itemref = stub!
206
+ stub(itemref).idref {'item'}
207
+ item = Package::Manifest::Item.new
208
+ item.id = 'item'
209
+ stub(item).manifest.stub!.package.stub!.spine.stub!.itemrefs {[itemref]}
210
+
211
+ assert_same itemref, item.itemref
212
+ end
213
+
214
+ def test_xhtml_returns_true_when_xhtml
215
+ item = Package::Manifest::Item.new
216
+ item.media_type = 'application/xhtml+xml'
217
+
218
+ assert_true item.xhtml?
219
+ end
220
+
221
+ def test_xhtml_returns_false_when_not_xhtml
222
+ item = Package::Manifest::Item.new
223
+ item.media_type = 'text/css'
224
+
225
+ assert_false item.xhtml?
226
+ end
227
+
228
+ def test_find_item_by_relative_iri_returns_item_which_has_resolved_iri_as_href
229
+ manifest = Package::Manifest.new
230
+ manifest << xhtml_item = Package::Manifest::Item.new.tap {|item| item.href = Addressable::URI.parse('text/01.xhtml')}
231
+ manifest << image_item = Package::Manifest::Item.new.tap {|item| item.href = Addressable::URI.parse('image/01.png')}
232
+
233
+ assert_equal image_item, xhtml_item.find_item_by_relative_iri(Addressable::URI.parse('../image/01.png'))
234
+ end
235
+
236
+ def test_find_item_by_relative_iri_returns_nil_when_no_item_found
237
+ manifest = Package::Manifest.new
238
+ manifest << xhtml_item = Package::Manifest::Item.new.tap {|item| item.href = Addressable::URI.parse('text/01.xhtml')}
239
+
240
+ assert_nil xhtml_item.find_item_by_relative_iri(Addressable::URI.parse('../image/01.png'))
241
+ end
242
+ end
243
+ end
244
+
245
+ class TestSpine < TestPublication
246
+ class TestItemref < TestSpine
247
+ def setup
248
+ super
249
+ @itemref = Package::Spine::Itemref.new
250
+ end
251
+
252
+ def test_default_page_spread_is_nil
253
+ assert_nil @itemref.page_spread
254
+ end
255
+
256
+ def test_can_set_page_spread
257
+ @itemref.page_spread = 'left'
258
+
259
+ assert_equal 'left', @itemref.page_spread
260
+ assert_include @itemref.properties, 'page-spread-left'
261
+ end
262
+
263
+ def test_page_spread_is_exclusive
264
+ @itemref.page_spread = 'left'
265
+ @itemref.page_spread = 'right'
266
+
267
+ assert_not_include @itemref.properties, 'page-spread-left'
268
+ end
269
+
270
+ def test_can_set_item
271
+ package = Package.new
272
+ item = Package::Manifest::Item.new
273
+ item.id = 'item'
274
+ manifest = Package::Manifest.new
275
+ spine = Package::Spine.new
276
+ manifest << item
277
+ spine << @itemref
278
+ package.manifest = manifest
279
+ package.spine = spine
280
+
281
+ @itemref.item = item
282
+
283
+ assert_equal 'item', @itemref.idref
284
+ assert_include spine.items, item
285
+ assert_same item, @itemref.item
286
+ end
287
+
288
+ def test_itemref_equals_itemref_with_same_attributes
289
+ base = Package::Spine::Itemref.new
290
+ another = Package::Spine::Itemref.new
291
+ [base, another].each do |itemref|
292
+ [:spine, :idref, :id].each do |attr|
293
+ itemref.__send__ "#{attr}=", attr.to_s
294
+ end
295
+ itemref.linear = false
296
+ end
297
+ base.properties = ['property1', 'property2']
298
+ another.properties = ['property2', 'property1']
299
+
300
+ assert_true base == another
301
+
302
+ base.linear = true
303
+ another.linear = 'yes'
304
+
305
+ assert_true base == another
306
+ end
307
+
308
+ def test_itemref_doesnt_equal_itemref_with_different_attributes
309
+ base = Package::Spine::Itemref.new
310
+ another = Package::Spine::Itemref.new
311
+ [base, another].each do |itemref|
312
+ [:spine, :idref, :id].each do |attr|
313
+ itemref.__send__ "#{attr}=", attr.to_s
314
+ end
315
+ itemref.linear = false
316
+ end
317
+ base.properties = ['property1', 'property2']
318
+ another.properties = ['property1', 'property2', 'property3']
319
+
320
+ assert_false base == another
321
+ end
322
+ end
323
+ end
324
+ end
metadata ADDED
@@ -0,0 +1,445 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: epub-parser-io
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.6a
5
+ prerelease: 5
6
+ platform: ruby
7
+ authors:
8
+ - KITAITI Makoto, Brian Glusman
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-06-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: pry
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: pry-doc
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: test-unit
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: test-unit-rr
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: test-unit-notify
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: simplecov
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: thin
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: yard
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: gem-man
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: ronn
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: epzip
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: epubcheck
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: epub_validator
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: aruba
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ - !ruby/object:Gem::Dependency
255
+ name: enumerabler
256
+ requirement: !ruby/object:Gem::Requirement
257
+ none: false
258
+ requirements:
259
+ - - ! '>='
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ type: :runtime
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ none: false
266
+ requirements:
267
+ - - ! '>='
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ - !ruby/object:Gem::Dependency
271
+ name: zipruby
272
+ requirement: !ruby/object:Gem::Requirement
273
+ none: false
274
+ requirements:
275
+ - - ! '>='
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ type: :runtime
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ none: false
282
+ requirements:
283
+ - - ! '>='
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ - !ruby/object:Gem::Dependency
287
+ name: nokogiri
288
+ requirement: !ruby/object:Gem::Requirement
289
+ none: false
290
+ requirements:
291
+ - - ~>
292
+ - !ruby/object:Gem::Version
293
+ version: '1.6'
294
+ type: :runtime
295
+ prerelease: false
296
+ version_requirements: !ruby/object:Gem::Requirement
297
+ none: false
298
+ requirements:
299
+ - - ~>
300
+ - !ruby/object:Gem::Version
301
+ version: '1.6'
302
+ - !ruby/object:Gem::Dependency
303
+ name: addressable
304
+ requirement: !ruby/object:Gem::Requirement
305
+ none: false
306
+ requirements:
307
+ - - ! '>='
308
+ - !ruby/object:Gem::Version
309
+ version: 2.3.5
310
+ type: :runtime
311
+ prerelease: false
312
+ version_requirements: !ruby/object:Gem::Requirement
313
+ none: false
314
+ requirements:
315
+ - - ! '>='
316
+ - !ruby/object:Gem::Version
317
+ version: 2.3.5
318
+ description: Parse EPUB 3 book loosely
319
+ email:
320
+ - KitaitiMakoto@gmail.com
321
+ - brian@glusman.me
322
+ executables:
323
+ - epub-open
324
+ - epubinfo
325
+ extensions: []
326
+ extra_rdoc_files: []
327
+ files:
328
+ - .gemtest
329
+ - .gitignore
330
+ - .gitmodules
331
+ - .travis.yml
332
+ - .yardopts
333
+ - CHANGELOG.markdown
334
+ - Gemfile
335
+ - MIT-LICENSE
336
+ - README.markdown
337
+ - Rakefile
338
+ - bin/epub-open
339
+ - bin/epubinfo
340
+ - docs/EpubOpen.markdown
341
+ - docs/Epubinfo.markdown
342
+ - docs/FixedLayout.markdown
343
+ - docs/Home.markdown
344
+ - docs/Item.markdown
345
+ - docs/Navigation.markdown
346
+ - docs/Publication.markdown
347
+ - epub-parser.gemspec
348
+ - features/epubinfo.feature
349
+ - features/step_definitions/epubinfo_steps.rb
350
+ - features/support/env.rb
351
+ - lib/epub.rb
352
+ - lib/epub/book.rb
353
+ - lib/epub/book/features.rb
354
+ - lib/epub/constants.rb
355
+ - lib/epub/content_document.rb
356
+ - lib/epub/content_document/navigation.rb
357
+ - lib/epub/content_document/xhtml.rb
358
+ - lib/epub/inspector.rb
359
+ - lib/epub/ocf.rb
360
+ - lib/epub/ocf/container.rb
361
+ - lib/epub/ocf/encryption.rb
362
+ - lib/epub/ocf/manifest.rb
363
+ - lib/epub/ocf/metadata.rb
364
+ - lib/epub/ocf/rights.rb
365
+ - lib/epub/ocf/signatures.rb
366
+ - lib/epub/parser.rb
367
+ - lib/epub/parser/content_document.rb
368
+ - lib/epub/parser/ocf.rb
369
+ - lib/epub/parser/publication.rb
370
+ - lib/epub/parser/utils.rb
371
+ - lib/epub/parser/version.rb
372
+ - lib/epub/publication.rb
373
+ - lib/epub/publication/fixed_layout.rb
374
+ - lib/epub/publication/package.rb
375
+ - lib/epub/publication/package/bindings.rb
376
+ - lib/epub/publication/package/guide.rb
377
+ - lib/epub/publication/package/manifest.rb
378
+ - lib/epub/publication/package/metadata.rb
379
+ - lib/epub/publication/package/spine.rb
380
+ - man/epubinfo.1.ronn
381
+ - schemas/epub-nav-30.rnc
382
+ - schemas/epub-nav-30.sch
383
+ - schemas/epub-xhtml-30.sch
384
+ - schemas/ocf-container-30.rnc
385
+ - test/fixtures/book/META-INF/container.xml
386
+ - test/fixtures/book/OPS/%E6%97%A5%E6%9C%AC%E8%AA%9E.xhtml
387
+ - test/fixtures/book/OPS/case-sensitive.xhtml
388
+ - test/fixtures/book/OPS/containing space.xhtml
389
+ - test/fixtures/book/OPS/containing%20space.xhtml
390
+ - test/fixtures/book/OPS/nav.xhtml
391
+ - test/fixtures/book/OPS/ルートファイル.opf
392
+ - test/fixtures/book/OPS/日本語.xhtml
393
+ - test/fixtures/book/mimetype
394
+ - test/helper.rb
395
+ - test/test_content_document.rb
396
+ - test/test_epub.rb
397
+ - test/test_fixed_layout.rb
398
+ - test/test_inspect.rb
399
+ - test/test_parser.rb
400
+ - test/test_parser_content_document.rb
401
+ - test/test_parser_fixed_layout.rb
402
+ - test/test_parser_ocf.rb
403
+ - test/test_parser_publication.rb
404
+ - test/test_publication.rb
405
+ homepage: https://github.com/bglusman/epub-parser
406
+ licenses:
407
+ - MIT
408
+ post_install_message:
409
+ rdoc_options: []
410
+ require_paths:
411
+ - lib
412
+ required_ruby_version: !ruby/object:Gem::Requirement
413
+ none: false
414
+ requirements:
415
+ - - ! '>='
416
+ - !ruby/object:Gem::Version
417
+ version: '0'
418
+ required_rubygems_version: !ruby/object:Gem::Requirement
419
+ none: false
420
+ requirements:
421
+ - - ! '>'
422
+ - !ruby/object:Gem::Version
423
+ version: 1.3.1
424
+ requirements: []
425
+ rubyforge_project:
426
+ rubygems_version: 1.8.24
427
+ signing_key:
428
+ specification_version: 3
429
+ summary: EPUB 3 Parser
430
+ test_files:
431
+ - features/epubinfo.feature
432
+ - features/step_definitions/epubinfo_steps.rb
433
+ - features/support/env.rb
434
+ - test/helper.rb
435
+ - test/test_content_document.rb
436
+ - test/test_epub.rb
437
+ - test/test_fixed_layout.rb
438
+ - test/test_inspect.rb
439
+ - test/test_parser.rb
440
+ - test/test_parser_content_document.rb
441
+ - test/test_parser_fixed_layout.rb
442
+ - test/test_parser_ocf.rb
443
+ - test/test_parser_publication.rb
444
+ - test/test_publication.rb
445
+ has_rdoc: yard