epub-parser 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/.yardopts +2 -0
  4. data/CHANGELOG.markdown +18 -0
  5. data/README.markdown +40 -11
  6. data/bin/epub-open +1 -1
  7. data/bin/epubinfo +14 -14
  8. data/docs/Home.markdown +3 -2
  9. data/docs/Item.markdown +3 -3
  10. data/docs/Navigation.markdown +58 -0
  11. data/docs/Publication.markdown +54 -0
  12. data/epub-parser.gemspec +1 -2
  13. data/lib/epub.rb +5 -83
  14. data/lib/epub/book.rb +1 -1
  15. data/lib/epub/book/features.rb +85 -0
  16. data/lib/epub/constants.rb +2 -0
  17. data/lib/epub/content_document/navigation.rb +31 -4
  18. data/lib/epub/content_document/xhtml.rb +1 -1
  19. data/lib/epub/inspector.rb +9 -7
  20. data/lib/epub/parser.rb +1 -1
  21. data/lib/epub/parser/content_document.rb +5 -1
  22. data/lib/epub/parser/ocf.rb +2 -2
  23. data/lib/epub/parser/publication.rb +46 -87
  24. data/lib/epub/parser/version.rb +1 -1
  25. data/lib/epub/publication/fixed_layout.rb +2 -3
  26. data/lib/epub/publication/package/guide.rb +19 -14
  27. data/lib/epub/publication/package/manifest.rb +36 -6
  28. data/lib/epub/publication/package/metadata.rb +27 -8
  29. data/lib/epub/publication/package/spine.rb +10 -3
  30. data/test/fixtures/book/OPS/nav.xhtml +1 -1
  31. 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 +2 -1
  32. data/test/helper.rb +1 -1
  33. data/test/test_content_document.rb +41 -2
  34. data/test/test_epub.rb +0 -7
  35. data/test/test_parser.rb +4 -4
  36. data/test/test_parser_content_document.rb +2 -0
  37. data/test/test_parser_publication.rb +4 -0
  38. data/test/test_publication.rb +60 -0
  39. metadata +55 -67
  40. data/lib/method_decorators/deprecated.rb +0 -84
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4451be8049a35f2aa4ca54da4d89445f6269c967
4
- data.tar.gz: d254d043d0e356d062f7a422d8f0dbe28bd3be0b
3
+ metadata.gz: 65f7f0d3749c5bf1d34ab527c94ac0905a3fa30f
4
+ data.tar.gz: d88e97de68e8b5d81c27d5921ce2fbe3ebd99e7f
5
5
  SHA512:
6
- metadata.gz: 4b36dd1a28d7a4249a6be8487e41210e1d9b29c00eddb7ada281035540199fcb263cec36b2b74ce55c4771225d24e1b04a3611227e06870a1b33d5544a30246f
7
- data.tar.gz: 0619e36858b236585f330d5272aa90469481771445bb383086d1686026216fe066dc3bcaf2624fe6b55877072875a4a8ed5c8cc335f0015a5447e3b9329ccfe4
6
+ metadata.gz: 1e2a88587ff96a480845cee7a99b624b4ee86d373ac659ace2f89b1cd597fed87156c9ffb487ee37b7a87f81a225f0f86b0f47c17d45c4150a70b594638afbdc
7
+ data.tar.gz: b7634902c0e838a66e4852c62d1356d8cfeb9b9ab84b371a8cba654057fd2c440f8b14e1a92e14311c42670c9557ac3f51e2638d118abdf330de9d750417d7a0
data/.travis.yml CHANGED
@@ -1,3 +1,4 @@
1
1
  rvm:
2
2
  - "1.9.3"
3
3
  - "2.0.0"
4
+ - "2.1.0"
data/.yardopts CHANGED
@@ -2,7 +2,9 @@
2
2
  CHANGELOG.markdown
3
3
  MIT-LICENSE
4
4
  docs/Home.markdown
5
+ docs/Publication.markdown
5
6
  docs/Item.markdown
6
7
  docs/FixedLayout.markdown
7
8
  docs/Epubinfo.markdown
8
9
  docs/EpubOpen.markdown
10
+ docs/Navigation.markdown
data/CHANGELOG.markdown CHANGED
@@ -1,5 +1,23 @@
1
1
  CHANGELOG
2
2
  =========
3
+ 0.1.6
4
+ -----
5
+ * Remove `EPUB.parse` method
6
+ * Remove `EPUB::Publication::Package::Metadata#to_hash`
7
+ * Add `EPUB::Publication::Package::Metadata::Identifier` for ad-hoc `scheme` attribute and `#isbn?` method
8
+ * Remove `MethodDecorators::Deprecated`
9
+ * Make `EPUB::Parser::OCF::CONTAINER_FILE` and other constants deprecated
10
+ * Make `EPUB::Publication::Package::Metadata::Link#rel` a `Set`
11
+ * Add exception class `EPUB::Constants::MediaType::UnsupportedMediaType`
12
+ * Make `EPUB::Constants::MediaType::UnsupportedError` deprecated. Use `UnsupportedMediatType` instead
13
+ * Add `EPUB::Publication::Package::Item#cover_image?`
14
+ * Add `EPUB::Book::Features` module and move methods of `EPUB` module to it(Thanks, [takahashim][]!)
15
+ * Make including `EPUB` deprecated
16
+ * Parse `hidden` attribute of `nav` elements
17
+ * [Experimental]Add `EPUB::ContentDocument::Navigation::Item#traverse`
18
+
19
+ [takahashim]: https://github.com/takahashim
20
+
3
21
  0.1.5
4
22
  -----
5
23
  * Add `ContentDocument::XHTML#title`
data/README.markdown CHANGED
@@ -1,6 +1,7 @@
1
1
  EPUB Parser
2
2
  ===========
3
3
  [![Build Status](https://secure.travis-ci.org/KitaitiMakoto/epub-parser.png?branch=master)](http://travis-ci.org/KitaitiMakoto/epub-parser)
4
+ [![Dependency Status](https://gemnasium.com/KitaitiMakoto/epub-parser.png)](https://gemnasium.com/KitaitiMakoto/epub-parser)
4
5
 
5
6
  INSTALLATION
6
7
  -------
@@ -15,9 +16,12 @@ USAGE
15
16
  require 'epub/parser'
16
17
 
17
18
  book = EPUB::Parser.parse('book.epub')
19
+ book.metadata.titles # => Array of EPUB::Publication::Package::Metadata::Title. Main title, subtitle, etc...
20
+ book.metadata.title # => Title string including all titles
21
+ book.metadata.creators # => Creators(authors)
18
22
  book.each_page_on_spine do |page|
19
23
  page.media_type # => "application/xhtml+xml"
20
- page.entry_name #=> "OPS/nav.xhtml" entry name in EPUB package(zip archive)
24
+ page.entry_name # => "OPS/nav.xhtml" entry name in EPUB package(zip archive)
21
25
  page.read # => raw content document
22
26
  page.content_document.nokogiri # => Nokogiri::XML::Document. The same to Nokogiri.XML(page.read)
23
27
  # do something more
@@ -67,7 +71,7 @@ IRB starts. `self` becomes the EPUB book and can access to methods of `EPUB`.
67
71
  metadata.creators
68
72
  => [Author 1, Author2, ...]
69
73
  resources.first.properties
70
- => ["nav"] # You know that first resource of this book is nav document
74
+ => #<Set: {"nav"}> # You know that first resource of this book is nav document
71
75
  nav = resources.first
72
76
  => ...
73
77
  nav.href
@@ -88,18 +92,47 @@ See {file:docs/EpubOpen} for more info.
88
92
 
89
93
  REQUIREMENTS
90
94
  ------------
91
- * Ruby 1.9.2 or later
95
+ * Ruby 1.9.3 or later
92
96
  * C compiler to compile Zip/Ruby and Nokogiri
93
97
 
98
+ Related Gems
99
+ ------------
100
+ * [gepub](https://github.com/skoji/gepub) - a generic EPUB library for Ruby
101
+ * [epubinfo](https://github.com/chdorner/epubinfo) - Extracts metadata information from EPUB files. Supports EPUB2 and EPUB3 formats.
102
+ * [ReVIEW](https://github.com/kmuto/review) - ReVIEW is a easy-to-use digital publishing system for books and ebooks.
103
+ * [epzip](https://github.com/takahashim/epzip) - epzip is EPUB packing tool. It's just only doing 'zip.' :)
104
+ * [eeepub](https://github.com/jugyo/eeepub) - EeePub is a Ruby ePub generator
105
+ * [epub-maker](https://github.com/KitaitiMakoto/epub-maker) - This library supports making and editing EPUB books based on this EPUB Parser library
106
+
107
+ If you find other gems, please tell me or request a pull request.
108
+
94
109
  RECENT CHANGES
95
110
  --------------
111
+ ### 0.1.6
112
+ * Remove `EPUB.parse` method
113
+ * Remove `EPUB::Publication::Package::Metadata#to_hash`
114
+ * Add `EPUB::Publication::Package::Metadata::Identifier`
115
+ * Remove `MethodDecorators::Deprecated`
116
+ * Make `EPUB::Parser::OCF::CONTAINER_FILE` and other constants deprecated
117
+ * Make `EPUB::Publication::Package::Metadata::Link#rel` a `Set`
118
+ * Add exception class `EPUB::Constants::MediaType::UnsupportedMediaType`
119
+ * Make `EPUB::Constants::MediaType::UnsupportedError` deprecated
120
+ * Add `EPUB::Publication::Package::Item#find_item_by_relative_iri`
121
+ * Add `EPUB::Publication::Package::Item#cover_image?`
122
+ * Add `EPUB::Book::Features` module and move methods of `EPUB` module to it.(Thanks, [takahashim][]!)
123
+ * Make including `EPUB` deprecated
124
+ * Parse `hidden` attribute of `nav` elements
125
+ * [Experimental]Add `EPUB::ContentDocument::Navigation::Item#traverse`
126
+
127
+ [takahashim]: https://github.com/takahashim
128
+
96
129
  ### 0.1.5
97
130
  * Add `ContentDocument::XHTML#title`
98
131
  * Add `Manifest::Item#xhtml?`
99
132
  * Add `--words` and `--char` options to `epubinfo` command
100
133
  * API change: `OCF::Container::Rootfile#full_path` became Addressable::URI object rather than `String`
101
134
  * Add `ContentDocument::XHTML#rexml` and `#nokogiri`
102
- * Inspect more readbly
135
+ * Inspect more readably
103
136
 
104
137
  ### 0.1.4
105
138
  * [Fixed-Layout Documents][fixed-layout] support
@@ -109,17 +142,12 @@ RECENT CHANGES
109
142
 
110
143
  [fixed-layout]: http://www.idpf.org/epub/fxl/
111
144
 
112
- ### 0.1.3
113
- * Add a command-line tool `epub-open`
114
- * Add support for XHTML Navigation Document
115
- * Make `EPUB::Publication::Package::Metadata#to_hash` obsolete. Use `#to_h` instead
116
- * Add utility methods `EPUB#description`, `EPUB#date` and `EPUB#unique_identifier`
117
-
118
145
  See {file:CHANGELOG.markdown} for older changelogs and details.
119
146
 
120
147
  TODOS
121
148
  -----
122
- * Simple inspect for `epub-open` tool
149
+ * EPUB 3.0.1
150
+ * Multiple rootfiles
123
151
  * Help features for `epub-open` tool
124
152
  * Vocabulary Association Mechanisms
125
153
  * Implementing navigation document and so on
@@ -133,6 +161,7 @@ TODOS
133
161
 
134
162
  DONE
135
163
  ----
164
+ * Simple inspect for `epub-open` tool
136
165
  * Using zip library instead of `unzip` command, which has security issue
137
166
  * Modify methods around fallback to see `bindings` element in the package
138
167
  * Content Document(only for Navigation Documents)
data/bin/epub-open CHANGED
@@ -19,7 +19,7 @@ EOB
19
19
  }.parse!
20
20
 
21
21
  $0 = File.basename($PROGRAM_NAME)
22
- include EPUB
22
+ include EPUB::Book::Features
23
23
  EPUB::Parser.parse(ARGV.shift, :book => self)
24
24
  $stderr.puts "Enter \"exit\" to exit #{shell}"
25
25
  shell.start
data/bin/epubinfo CHANGED
@@ -11,9 +11,7 @@ Usage: epubinfo [options] EPUBFILE
11
11
  EOB
12
12
  opt.version = EPUB::Parser::VERSION
13
13
  formats = [:line, :json, :yaml]
14
- nl_formats = formats.dup
15
- nl_last = nl_formats.pop
16
- opt.on '-f', '--format=FORMAT', formats, "format of output(#{nl_formats.join(', ')} or #{nl_last}), defaults to line(for console)" do |format|
14
+ opt.on '-f', '--format=FORMAT', formats, "format of output(#{formats[0..-2].join(', ')} or #{formats.last}), defaults to line(for console)" do |format|
17
15
  options[:format] = format
18
16
  end
19
17
  opt.on '--words', 'count words of content documents' do
@@ -38,21 +36,23 @@ data.merge!(book.metadata.to_h)
38
36
  data['Unique identifier'] = [book.metadata.unique_identifier]
39
37
  data['EPUB Version'] = [book.package.version]
40
38
  counts = {:chars => 0, :words => 0}
41
- book.resources.select(&:xhtml?).each do |xhtml|
42
- begin
43
- doc = Nokogiri.XML(xhtml.read)
44
- body = doc.search('body').first
45
- content = body.content
46
- if body
47
- counts[:words] += content.scan(/\S+/).length
48
- counts[:chars] += content.gsub(/\r|\n/, '').length
39
+ if options[:words] or options[:chars]
40
+ book.resources.select(&:xhtml?).each do |xhtml|
41
+ begin
42
+ doc = xhtml.content_document.nokogiri
43
+ body = doc.search('body').first
44
+ content = body.content
45
+ if body
46
+ counts[:words] += content.scan(/\S+/).length
47
+ counts[:chars] += content.gsub(/\r|\n/, '').length
48
+ end
49
+ rescue => error
50
+ warn "#{xhtml.href}: #{error}"
49
51
  end
50
- rescue => error
51
- warn "#{xhtml.href}: #{error}"
52
52
  end
53
53
  end
54
54
  data['Words'] = [counts[:words]] if options[:words]
55
- data['Charactors'] = [counts[:chars]] if options[:chars]
55
+ data['Characters'] = [counts[:chars]] if options[:chars]
56
56
  if options[:format] == :line
57
57
  key_width = data.keys.map {|k| k.length}.max + 3
58
58
  data.each_pair do |k, v|
data/docs/Home.markdown CHANGED
@@ -61,7 +61,7 @@ By the way, although `book` above is a {EPUB::Book} object, all features are pro
61
61
  require 'epub'
62
62
 
63
63
  class YourBook < ActiveRecord::Base
64
- include EPUB
64
+ include EPUB::Book::Features
65
65
  end
66
66
 
67
67
  book = EPUB::Parser.parse(
@@ -92,13 +92,14 @@ You are also able to find YourBook object for the first:
92
92
 
93
93
  More documentations are avaiable in:
94
94
 
95
+ * {file:docs/Publication.markdown}
95
96
  * {file:docs/Item.markdown}
96
97
  * {file:docs/FixedLayout.markdown}
97
98
 
98
99
  Requirements
99
100
  ------------
100
101
 
101
- * libxml2 and libxslt for Nokogiri gem
102
+ * Ruby 1.9.3 or later
102
103
  * C compiler to compile Zip/Ruby and Nokogiri
103
104
 
104
105
  Note
data/docs/Item.markdown CHANGED
@@ -66,15 +66,15 @@ Also you can use {EPUB::Publication::Package::Manifest::Item#use_fallback_chain
66
66
 
67
67
  If item's media type is, for instance, 'image/x-eps', the fallback is used.
68
68
  If the fallback item's media type is 'image/png', `png` variable means the item, if not, "fallback of fallback" will be checked.
69
- Finally you can use the item you want, or {EPUB::Constants::MediaType::UnsupportedError EPUB::MediaType::UnsupportedError} exception will be raised(if no item you can accept found).
69
+ Finally you can use the item you want, or {EPUB::Constants::MediaType::UnsupportedMediaType EPUB::MediaType::UnsupportedMediaType} exception will be raised(if no item you can accept found).
70
70
  Therefore, you should `rescue` clause:
71
71
 
72
72
  # :unsupported option can also be used
73
- # fallback chain will be followed until EPUB's Core Media Types found or UnsupportedError raised
73
+ # fallback chain will be followed until EPUB's Core Media Types found or UnsupportedMediaType raised
74
74
  begin
75
75
  item.use_fallback_chain :unsupported => 'application/pdf' do |page|
76
76
  # do something with item with core media type
77
77
  end
78
- rescue EPUB::MediaType::UnsupportedError => evar
78
+ rescue EPUB::MediaType::UnsupportedMediaType => evar
79
79
  # error handling
80
80
  end
@@ -0,0 +1,58 @@
1
+ {file:docs/Home.markdown} > **{file:docs/Navigation.markdown}**
2
+
3
+ Traversing
4
+ ==========
5
+
6
+ Example to show tree of Table of Contents:
7
+
8
+ nav = book.manifest.navs.first.content_document # => EPUB::ContentDocument::Navigation
9
+ toc = nav.toc # => EPUB::ContentDocument::Navigation::Navigation
10
+ toc_tree = ''
11
+ toc.traverse do |item, depth|
12
+ item # => EPUB::ContentDocument::Navigation::Item
13
+ depth # => Integer
14
+ toc_tree << "#{' ' * depth * 2}#{item.text}\n"
15
+ end
16
+ puts toc_tree
17
+ THE CONTENTS
18
+ SECTION IV FAIRY STORIES—MODERN FANTASTIC TALES
19
+ BIBLIOGRAPHY
20
+ INTRODUCTORY
21
+ Abram S. Isaacs
22
+ 190 A FOUR-LEAVED CLOVER
23
+
24
+ I. The Rabbi and the Diadem
25
+
26
+
27
+ II. Friendship
28
+
29
+
30
+ III. True Charity
31
+
32
+
33
+ IV. An Eastern Garden
34
+
35
+ Samuel Taylor Coleridge
36
+ 191 THE LORD HELPETH MAN AND BEAST
37
+ Hans Christian Andersen
38
+ 192 THE REAL PRINCESS
39
+ 193 THE EMPEROR'S NEW CLOTHES
40
+ 194 THE NIGHTINGALE
41
+ 195 THE FIR TREE
42
+ 196 THE TINDER-BOX
43
+ 197 THE HARDY TIN SOLDIER
44
+ 198 THE UGLY DUCKLING
45
+ Frances Browne
46
+ 199 THE STORY OF FAIRYFOOT
47
+ Oscar Wilde
48
+ 200 THE HAPPY PRINCE
49
+ Raymond MacDonald Alden
50
+ 201 THE KNIGHTS OF THE SILVER SHIELD
51
+ Jean Ingelow
52
+ 202 THE PRINCE'S DREAM
53
+ Frank R. Stockton
54
+ 203 OLD PIPES AND THE DRYAD
55
+ John Ruskin
56
+ 204 THE KING OF THE GOLDEN RIVER OR THE BLACK BROTHERS
57
+
58
+ **NOTE**: This API is not stable.
@@ -0,0 +1,54 @@
1
+ {file:docs/Home.markdown} > **{file:docs/Publication.markdow}**
2
+
3
+ Publication(Information about EPUB book)
4
+ ========================================
5
+
6
+ EPUB Publications is information about EPUB books.
7
+
8
+ EPUB Parser represents it as {EPUB::Publication} module and classes under the namespace and you can access them such like `EPUB::Parser.parse("path/to/book.epub").package`
9
+
10
+ Let
11
+
12
+ book = EPUB::Parser.parse("path/to/book.epub")
13
+
14
+ for continuing.
15
+
16
+ Five Models
17
+ -----------
18
+
19
+ `book.package` is a package document, a root of information tree about the book, and it has attributes to access five major models of the publication; {EPUB::Publication::Package::Metadata Metadata}, {EPUB::Publication::Package::Manifest Manifest}, {EPUB::Publication::Package::Spine Spine}, {EPUB::Publication::Package::Guide Guide} and {EPUB::Publication::Package::Bindings Bindings}.
20
+
21
+ Each of them has information the book in the way its own.
22
+
23
+ Metadata
24
+ --------
25
+
26
+ {EPUB::Publication::Package::Metadata Metadata} is literally metadata of the book, including identifiers, titles, languages, links and so on.
27
+
28
+ You can access them by:
29
+
30
+ md = book.package.metadata # => EPUB::Publication::Package::Metadata
31
+ md.titles # => [#<EPUB::Publication::Package::Metadata::Title...>, #<EPUB::Publication::Package::Metadata::Title...>, ...]
32
+ # ...
33
+
34
+ Manifest
35
+ --------
36
+
37
+ Spine
38
+ -----
39
+
40
+ Guide
41
+ -----
42
+
43
+ Bindings
44
+ --------
45
+
46
+ Package
47
+ -------
48
+
49
+ References
50
+ ----------
51
+
52
+ * [EPUB Publications 3.0][publications] on IDPF site
53
+
54
+ [publications]: http://www.idpf.org/epub/30/spec/epub30-publications.html
data/epub-parser.gemspec CHANGED
@@ -45,6 +45,5 @@ Gem::Specification.new do |s|
45
45
  s.add_runtime_dependency 'enumerabler'
46
46
  s.add_runtime_dependency 'zipruby'
47
47
  s.add_runtime_dependency 'nokogiri', '~> 1.6'
48
- s.add_runtime_dependency 'addressable'
49
- s.add_runtime_dependency 'method_decorators', '0.9.3'
48
+ s.add_runtime_dependency 'addressable', '>= 2.3.5'
50
49
  end
data/lib/epub.rb CHANGED
@@ -1,92 +1,14 @@
1
- require 'method_decorators/deprecated'
2
1
  require 'epub/inspector'
3
2
  require 'epub/ocf'
4
3
  require 'epub/publication'
5
4
  require 'epub/content_document'
5
+ require 'epub/book/features'
6
6
 
7
7
  module EPUB
8
- modules = [ :ocf, :package, :content_document ]
9
- attr_reader *modules
10
- attr_accessor :epub_file
11
- modules.each do |mod|
12
- define_method "#{mod}=" do |obj|
13
- instance_variable_set "@#{mod}", obj
14
- obj.book = self
8
+ class << self
9
+ def included(base)
10
+ warn 'Including EPUB module is deprecated. Include EPUB::Book::Features instead.'
11
+ base.__send__ :include, EPUB::Book::Features
15
12
  end
16
13
  end
17
-
18
- def parse(file, options = {})
19
- @epub_file = file
20
- options = options.merge({:book => self})
21
- Parser.parse(file, options)
22
- end
23
-
24
- Publication::Package::CONTENT_MODELS.each do |model|
25
- define_method model do
26
- package.__send__(model)
27
- end
28
- end
29
-
30
- %w[ title main_title subtitle short_title collection_title edition_title extended_title description date unique_identifier ].each do |met|
31
- define_method met do
32
- metadata.__send__(met)
33
- end
34
- end
35
-
36
- %w[nav].each do |met|
37
- define_method met do
38
- manifest.__send__ met
39
- end
40
- end
41
-
42
- # @overload each_page_on_spine(&blk)
43
- # iterate over items in order of spine when block given
44
- # @yieldparam item [Publication::Package::Manifest::Item]
45
- # @overload each_page_on_spine
46
- # @return [Enumerator] which iterates over {Publication::Package::Manifest::Item}s in order of spine when block not given
47
- def each_page_on_spine(&blk)
48
- enum = package.spine.items
49
- if block_given?
50
- enum.each &blk
51
- else
52
- enum
53
- end
54
- end
55
-
56
- def each_page_on_toc(&blk)
57
- raise NotImplementedError
58
- end
59
-
60
- # @overload each_content(&blk)
61
- # iterate all items over when block given
62
- # @yieldparam item [Publication::Package::Manifest::Item]
63
- # @overload each_content
64
- # @return [Enumerator] which iterates over all {Publication::Package::Manifest::Item}s in EPUB package when block not given
65
- def each_content(&blk)
66
- enum = manifest.items
67
- if block_given?
68
- enum.each &blk
69
- else
70
- enum.to_enum
71
- end
72
- end
73
-
74
- def other_navigation
75
- raise NotImplementedError
76
- end
77
-
78
- # @return [Array<Publication::Package::Manifest::Item>] All {Publication::Package::Manifest::Item}s in EPUB package
79
- def resources
80
- manifest.items
81
- end
82
-
83
- # Syntax sugar
84
- def rootfile_path
85
- ocf.container.rootfile.full_path.to_s
86
- end
87
-
88
- # Syntax sugar
89
- def cover_image
90
- manifest.cover_image
91
- end
92
14
  end