gepub 1.0.7 → 1.0.8

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: 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: []