epub-maker 0.2.0 → 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: 8db2f63b56d79949a6fbeb34d4a18d17179d7eafd79b140eecee4ec863811bea
4
- data.tar.gz: 3c06d5c127dfe80c35e0e023a6143070d68285df5d41e49c05c72b14c78a6afa
3
+ metadata.gz: a0de0d21b15c7edf149c559cc3f4d3e96ddeb6f2fb8555743de048e324d00702
4
+ data.tar.gz: b7a0d6f0354c4a87be88c8f9b0e82ced57146acd928c8e619fa49fb0af2a62c5
5
5
  SHA512:
6
- metadata.gz: 8cde226fa77ce56db13f1b43b13e4b804d1bcea44fc98edeaab0f96cefeaccf5af749d37a90bca3ef6cc35fb98fab197a07133a5f62a68cc2f55f97f87fa6dd2
7
- data.tar.gz: 376e3f6f5c8df3a28005a5e365930f595bb12a1233a6159519eac32ba7966caff8f99c7510e46ffbb57e24ed52de3f34128faacf5c9ee0066f6bb0c5eeea55f2
6
+ metadata.gz: d02e4860645bb195799f655fbd2d52de44d2d3dd1b377e57216397074c5448e1ab846ad898d641110b025f74911fac7ff410546edd565bf02ddc73c04e55607b
7
+ data.tar.gz: 377056e9093afa652560d5dd9478b7fa06f23dc10cd1ce3b1085143adfddd0ea429ad2d6f1b6f0bb9ae7039dd807633c40e646f39079eb8f86777b6c58e2b3a9
data/.gitlab-ci.yml CHANGED
@@ -3,29 +3,11 @@ before_script:
3
3
  - which ruby
4
4
  - apt -qq update -y
5
5
  - apt -qq install -y default-jre
6
- - bundle install --jobs=$(nproc) --path=deps --quiet
6
+ - bundle config set path deps
7
+ - bundle config --local build.zipruby "--with-zlib-include=/usr/include --with-cflags='-Wno-error=implicit-function-declaration -Wno-error=implicit-int -Wno-error=incompatible-pointer-types'"
8
+ - bundle install --jobs=$(nproc) --quiet
7
9
  - bundle clean
8
10
 
9
- test:2.7:
10
- image: ruby:2.7
11
- script: bundle exec rake test
12
- except:
13
- - tags
14
- cache:
15
- key: ruby:2.7
16
- paths:
17
- - deps
18
-
19
- test:3.0:
20
- image: ruby:3.0
21
- script: bundle exec rake test
22
- except:
23
- - tags
24
- cache:
25
- key: ruby:3.0
26
- paths:
27
- - deps
28
-
29
11
  test:3.1:
30
12
  image: ruby:3.1
31
13
  script: bundle exec rake test
@@ -65,3 +47,13 @@ test:3.4:
65
47
  key: ruby:3.4
66
48
  paths:
67
49
  - deps
50
+
51
+ test:4.0:
52
+ image: ruby:4.0
53
+ script: bundle exec rake test
54
+ except:
55
+ - tags
56
+ cache:
57
+ key: ruby:4.0
58
+ paths:
59
+ - deps
data/CHANGELOG.markdown CHANGED
@@ -1,3 +1,13 @@
1
+ 0.2.2
2
+ -----
3
+
4
+ * Add `Publication::Package::Manifest#make_nav` method
5
+
6
+ 0.2.1
7
+ -----
8
+
9
+ * Add `Publication::Package::Manifest#make_cover_image` method
10
+
1
11
  0.2.0
2
12
  -----
3
13
 
data/Rakefile CHANGED
@@ -2,16 +2,14 @@ require 'rake/testtask'
2
2
  require 'rake/clean'
3
3
  require 'yard'
4
4
  require "rubygems/tasks"
5
- require "open-uri"
5
+ require "kar/dsl"
6
6
 
7
7
  task :default => :test
8
8
 
9
9
  CLEAN.include 'README.html'
10
10
 
11
11
  VALID_EPUB = "test/fixtures/accessible_epub_3.epub"
12
- file VALID_EPUB do |t|
13
- File.write t.name, URI("https://github.com/IDPF/epub3-samples/releases/download/20170606/accessible_epub_3.epub").read
14
- end
12
+ download VALID_EPUB => "https://github.com/IDPF/epub3-samples/releases/download/20170606/accessible_epub_3.epub"
15
13
  Rake::TestTask.new
16
14
  task test: VALID_EPUB
17
15
  YARD::Rake::YardocTask.new
data/epub-maker.gemspec CHANGED
@@ -38,4 +38,5 @@ Gem::Specification.new do |gem|
38
38
  gem.add_development_dependency 'pry-doc'
39
39
  gem.add_development_dependency 'yard'
40
40
  gem.add_development_dependency 'rubygems-tasks'
41
+ gem.add_development_dependency "kar"
41
42
  end
@@ -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
@@ -264,6 +257,33 @@ module EPUB
264
257
  item
265
258
  end
266
259
 
260
+ def make_cover_image(options={})
261
+ make_item options do |item|
262
+ item.properties << 'cover-image'
263
+ yield item if block_given?
264
+ end
265
+ end
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
+
267
287
  def to_xml_fragment(xml)
268
288
  node = xml.manifest_ {
269
289
  items.each do |item|
@@ -1,5 +1,5 @@
1
1
  module EPUB
2
2
  module Maker
3
- VERSION = "0.2.0"
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.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - KITAITI Makoto
@@ -247,6 +247,20 @@ dependencies:
247
247
  - - ">="
248
248
  - !ruby/object:Gem::Version
249
249
  version: '0'
250
+ - !ruby/object:Gem::Dependency
251
+ name: kar
252
+ requirement: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ type: :development
258
+ prerelease: false
259
+ version_requirements: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
250
264
  description: This library supports making and editing EPUB books
251
265
  email:
252
266
  - KitaitiMakoto@gmail.com
@@ -310,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
324
  - !ruby/object:Gem::Version
311
325
  version: '0'
312
326
  requirements: []
313
- rubygems_version: 3.6.7
327
+ rubygems_version: 4.0.3
314
328
  specification_version: 4
315
329
  summary: EPUB Maker
316
330
  test_files: