epub-maker 0.2.1 → 0.2.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac55c3efea9258647b54d5ffb1c605ec47049e12109273edd4957e65da653e93
4
- data.tar.gz: 9ded641258ad972db31156ead2dc80dbef26d78d3792d37d30f94114977424ad
3
+ metadata.gz: a0de0d21b15c7edf149c559cc3f4d3e96ddeb6f2fb8555743de048e324d00702
4
+ data.tar.gz: b7a0d6f0354c4a87be88c8f9b0e82ced57146acd928c8e619fa49fb0af2a62c5
5
5
  SHA512:
6
- metadata.gz: 0fa89977951ececd825e5ce136694053ebd5b62dcf79948cc6bcef51888181aaaae9aea4771d747fc7fb09308695a97a1b95e86f9905e7aee7519b7f5d9ef4da
7
- data.tar.gz: 8c6290d49321120c2518f9794dfb78938fd49bf1655e4f7290813badbc289e915f9e3623d8864bf1c7af8a8be6f53a1c3a938dfe4ff32eca93ca72de039b20c6
6
+ metadata.gz: d02e4860645bb195799f655fbd2d52de44d2d3dd1b377e57216397074c5448e1ab846ad898d641110b025f74911fac7ff410546edd565bf02ddc73c04e55607b
7
+ data.tar.gz: 377056e9093afa652560d5dd9478b7fa06f23dc10cd1ce3b1085143adfddd0ea429ad2d6f1b6f0bb9ae7039dd807633c40e646f39079eb8f86777b6c58e2b3a9
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,8 @@
1
+ 0.2.2
2
+ -----
3
+
4
+ * Add `Publication::Package::Manifest#make_nav` method
5
+
1
6
  0.2.1
2
7
  -----
3
8
 
@@ -207,6 +207,8 @@ module EPUB
207
207
  end
208
208
 
209
209
  class Manifest
210
+ using Parser::XMLDocument::Refinements
211
+
210
212
  include ContentModel
211
213
 
212
214
  def make
@@ -214,29 +216,20 @@ module EPUB
214
216
 
215
217
  # @todo more careful
216
218
  unless items.any? &:nav?
217
- nav = Item.new
218
- nav.id = 'toc'
219
- nav.href = Addressable::URI.parse('nav.xhtml')
220
- nav.media_type = 'application/xhtml+xml'
221
- nav.properties << 'nav'
222
-
223
- nav_doc = ContentDocument::Navigation.new
224
- nav_doc.item = nav
225
-
226
- nav_nav = ContentDocument::Navigation::Navigation.new
227
- nav_nav.type = ContentDocument::Navigation::Navigation::Type::TOC
228
- nav_nav.items = items.select(&:xhtml?).map {|item; nav|
229
- nav = ContentDocument::Navigation::Item.new
230
- nav.item = item
231
- nav.href = item.href
232
- nav.text = File.basename(item.href.normalize.request_uri, '.*')
233
- nav
234
- }
235
- nav_doc.navigations << nav_nav
236
-
237
- nav.content = nav_doc.to_xml
238
-
239
- self << nav
219
+ make_nav do |item, doc|
220
+ doc.navigations[0].items = items.select(&:xhtml?).collect {|i|
221
+ nav = ContentDocument::Navigation::Item.new
222
+ nav.item = item
223
+ nav.href = item.href
224
+ text = File.basename(item.href.normalize.request_uri, '.*')
225
+ if i.content_file
226
+ title = Parser::XMLDocument.new(File.read(i.content_file)).each_element_by_xpath("/xhtml:html/xhtml:head/xhtml:title", EPUB::NAMESPACES).first&.text
227
+ text = title if title
228
+ end
229
+ nav.text = text
230
+ nav
231
+ }
232
+ end
240
233
  end
241
234
 
242
235
  self
@@ -271,6 +264,26 @@ module EPUB
271
264
  end
272
265
  end
273
266
 
267
+ def make_nav(options={})
268
+ make_item options do |item|
269
+ item.id = "toc"
270
+ item.href = Addressable::URI.parse("nav.xhtml")
271
+ item.media_type = "application/xhtml+xml"
272
+ item.properties << "nav"
273
+
274
+ doc = ContentDocument::Navigation.new
275
+ doc.item = item
276
+
277
+ nav = ContentDocument::Navigation::Navigation.new
278
+ nav.type = ContentDocument::Navigation::Navigation::Type::TOC
279
+ doc.navigations << nav
280
+
281
+ yield [item, doc] if block_given?
282
+
283
+ item.content = doc.to_xml
284
+ end
285
+ end
286
+
274
287
  def to_xml_fragment(xml)
275
288
  node = xml.manifest_ {
276
289
  items.each do |item|
@@ -1,5 +1,5 @@
1
1
  module EPUB
2
2
  module Maker
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epub-maker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - KITAITI Makoto