gepub 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1db2d11c67936c89488f52ae496b80b127c8807b98c4f3f571c107a8bcfda32
4
- data.tar.gz: ef0bf9c479ad9ef13625794702a0a7bd40e9d13a1b482c45e4c173612eef109b
3
+ metadata.gz: 6279f47052dbbe90014ca6653faf663043872dabd364f3cabadc9c2e82ae8262
4
+ data.tar.gz: 79e0d32c97a46879c7b6597c48bbeb1253e96bd89c3d5f2c04d307d35c544118
5
5
  SHA512:
6
- metadata.gz: db24109e27da25d65c5e9bab5b69d827f4d2952787fda9cf75ba01d71e09360c48662442d4c95dff0f981157e3f14b6388d3057f297c1504af78b7deec805cab
7
- data.tar.gz: 1d673c6b9c30ce5136b224ae746b2ef4ed4d76813b04180a3bb7fd934bd09a97047b7cb949ff14df11453b60bd136736c7525a79b44592d06ae6507e5febdaf7
6
+ metadata.gz: bdb6373fc9a484abfd0c041fc989313b6c3033d6c192fd0688b80597fefc1f64aa49cecd56539c67aed9669f1b623ad2c500d046d47bda02853ffb3f6d3dd525
7
+ data.tar.gz: 2cf23f8b402e491e4dff1b3a6b69a6e9ca6130139716a991d447e0b670bd04249dc0d030b247936a070bbaf7cdd8aa58f6ebb64313cd549a2879d5f0c1ccafdd
@@ -1,18 +1,23 @@
1
1
  name: Test
2
- on: push
2
+ on: [push, pull_request]
3
3
  jobs:
4
4
  test:
5
- name: test
6
- runs-on: ubuntu-latest
7
5
  strategy:
8
6
  matrix:
9
- ruby: [2.5.x, 2.6.x]
7
+ ruby: [2.4, 2.5, 2.6, 2.7, jruby]
8
+ platform: [ubuntu-latest, macos-latest, windows-latest]
9
+ exclude:
10
+ # TODO: https://github.com/sparklemotion/nokogiri/issues/1961
11
+ # exclude windows with ruby 2.7 ; nokogiri is not supported for the present
12
+ - ruby: 2.7
13
+ platform: windows-latest
14
+ runs-on: ${{ matrix.platform }}
10
15
  env:
11
16
  CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
12
17
  steps:
13
18
  - uses: actions/checkout@master
14
19
  - name: Set up Ruby
15
- uses: actions/setup-ruby@v1
20
+ uses: eregon/use-ruby-action@master
16
21
  with:
17
22
  ruby-version: ${{ matrix.ruby }}
18
23
  - name: setup gems
@@ -20,9 +25,12 @@ jobs:
20
25
  gem install bundler
21
26
  bundle install
22
27
  - name: run test and publish code coverage
28
+ if: runner.os == 'Linux' && matrix.ruby == '2.7' && env.CC_TEST_REPORTER_ID != ''
23
29
  uses: paambaati/codeclimate-action@v2.3.0
24
30
  env:
25
31
  CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
26
32
  with:
27
33
  coverageCommand: bundle exec rake spec
28
-
34
+ - name: run test
35
+ if: runner.os != 'Linux' || matrix.ruby != '2.7' || env.CC_TEST_REPORTER_ID == ''
36
+ run: bundle exec rake spec
data/Gemfile CHANGED
@@ -2,4 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in gepub.gemspec
4
4
  gemspec
5
- gem 'simplecov', require: false
5
+
6
+ # workarond : simplecov 0.18 with cc-reporter is broken
7
+ # https://github.com/codeclimate/test-reporter/issues/418
8
+ gem 'simplecov', '~> 0.10', '< 0.18', require: false
data/gepub.gemspec CHANGED
@@ -10,13 +10,14 @@ Gem::Specification.new do |s|
10
10
  s.homepage = %q{http://github.com/skoji/gepub}
11
11
  s.summary = %q{a generic EPUB library for Ruby.}
12
12
  s.description = %q{gepub is a generic EPUB parser/generator. Generates and parse EPUB2 and EPUB3}
13
+ s.license = "BSD-3-Clause"
13
14
 
14
15
  s.files = `git ls-files`.split("\n").reject { |f| f.match(%r{^spec/}) }
15
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
17
  s.require_paths = ["lib"]
17
18
 
18
19
  s.add_runtime_dependency "nokogiri", ">= 1.8.2", "< 1.11"
19
- s.add_runtime_dependency "rubyzip", "> 1.1.1", "< 2.1"
20
+ s.add_runtime_dependency "rubyzip", "> 1.1.1", "< 2.3"
20
21
  s.add_development_dependency "rake"
21
22
  s.add_development_dependency "rspec"
22
23
  end
data/lib/gepub/book.rb CHANGED
@@ -68,7 +68,7 @@ module GEPUB
68
68
  # returns contributors list by display-seq or defined order.
69
69
  # the contributors without display-seq is appear after contributors with display-seq.
70
70
  # === Book#lastmodified(date) (delegated to Metadata#lastmodified)
71
- # set last modified date.
71
+ # set last modified date. date is a Time, DateTime or string that can be parsed by DateTime#parse.
72
72
  # === Book#modified_now (delegated to Metadata#modified_now)
73
73
  # set last modified date to current time.
74
74
  # === Book#lastmodified (delegated to Metadata#lastmodified)
@@ -299,7 +299,6 @@ EOF
299
299
  |landmark|
300
300
  id = landmark[:id].nil? ? "" : "##{x[:id]}"
301
301
  landmark_title = landmark[:title]
302
- type = landmark[:type]
303
302
  xml_doc.li {
304
303
  xml_doc.a({'href' => landmark[:item].href + id, 'epub:type' => landmark[:type]}, landmark_title)
305
304
  }
@@ -390,6 +389,7 @@ EOF
390
389
  end
391
390
  return package, package_path
392
391
  end
392
+ private_class_method :parse_container
393
393
 
394
394
  def self.check_consistency_of_package(package, package_path)
395
395
  if package.nil?
@@ -397,9 +397,11 @@ EOF
397
397
  end
398
398
 
399
399
  if package_path != package.path
400
- warn 'inconsistend EPUB file: container says opf is #{package_path}, but actually #{package.path}'
400
+ warn "inconsistend EPUB file: container says opf is #{package_path}, but actually #{package.path}"
401
401
  end
402
402
  end
403
+ private_class_method :check_consistency_of_package
404
+
403
405
  def self.parse_files_into_package(files, package)
404
406
  files.each {
405
407
  |k, content|
@@ -410,6 +412,8 @@ EOF
410
412
  end
411
413
  }
412
414
  end
415
+ private_class_method :parse_files_into_package
416
+
413
417
  def cleanup_for_epub2
414
418
  if version.to_f < 3.0 || @package.epub_backward_compat
415
419
  if @package.manifest.item_list.select {
@@ -425,7 +429,7 @@ EOF
425
429
  end
426
430
  def cleanup_for_epub3
427
431
  if version.to_f >=3.0
428
- @package.metadata.modified_now
432
+ @package.metadata.modified_now unless @package.metadata.lastmodified_updated?
429
433
 
430
434
  if @package.manifest.item_list.select {
431
435
  |_href, item|
@@ -54,6 +54,7 @@ module GEPUB
54
54
 
55
55
  }
56
56
  }
57
+ # do not set @lastmodified_updated here
57
58
  }
58
59
  end
59
60
 
@@ -73,9 +74,14 @@ module GEPUB
73
74
  @spread = NilContent
74
75
  @ibooks_version = NilContent
75
76
  @ibooks_scroll_axis = NilContent
77
+ @lastmodified_updated = false
76
78
  yield self if block_given?
77
79
  end
78
80
 
81
+ def lastmodified_updated?
82
+ @lastmodified_updated
83
+ end
84
+
79
85
  def to_xml(builder)
80
86
  builder.metadata(@namespaces) {
81
87
  @content_nodes.each {
@@ -186,14 +192,16 @@ module GEPUB
186
192
  }
187
193
  ret.size == 0 ? nil : ret[0]
188
194
  else
195
+ @lastmodified_updated = true
189
196
  date ||= Time.now
197
+ date = DateTime.parse(date) if date.is_a? String
190
198
  (@content_nodes['meta'] ||= []).each {
191
199
  |meta|
192
200
  if (meta['property'] == 'dcterms:modified')
193
201
  @content_nodes['meta'].delete meta
194
202
  end
195
203
  }
196
- add_metadata('meta', date.utc.strftime('%Y-%m-%dT%H:%M:%SZ'), itemclass: DateMeta)['property'] = 'dcterms:modified'
204
+ add_metadata('meta', date.to_time.utc.strftime('%Y-%m-%dT%H:%M:%SZ'), itemclass: DateMeta)['property'] = 'dcterms:modified'
197
205
  end
198
206
  end
199
207
 
@@ -207,14 +215,7 @@ module GEPUB
207
215
 
208
216
  def set_lastmodified(date=nil)
209
217
  warn "obsolete : set_lastmodified. use lastmodified instead."
210
- date ||= Time.now
211
- (@content_nodes['meta'] ||= []).each {
212
- |meta|
213
- if (meta['property'] == 'dcterms:modified')
214
- @content_nodes['meta'].delete meta
215
- end
216
- }
217
- add_metadata('meta', date.utc.strftime('%Y-%m-%dT%H:%M:%SZ'), itemclass: DateMeta)['property'] = 'dcterms:modified'
218
+ lastmodified(date)
218
219
  end
219
220
 
220
221
  def add_oldstyle_meta(content, attributes = {})
data/lib/gepub/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module GEPUB
2
2
  # GEPUB gem version
3
- VERSION = "1.0.7"
3
+ VERSION = "1.0.8"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gepub
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - KOJIMA Satoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-27 00:00:00.000000000 Z
11
+ date: 2020-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: 1.1.1
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '2.1'
42
+ version: '2.3'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: 1.1.1
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '2.1'
52
+ version: '2.3'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rake
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -128,7 +128,8 @@ files:
128
128
  - lib/gepub/xml_util.rb
129
129
  - tools/generate_function.rb
130
130
  homepage: http://github.com/skoji/gepub
131
- licenses: []
131
+ licenses:
132
+ - BSD-3-Clause
132
133
  metadata: {}
133
134
  post_install_message:
134
135
  rdoc_options: []