gepub 1.0.14 → 1.0.16
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 +4 -4
- data/.github/workflows/gempush.yml +2 -2
- data/.github/workflows/test.yml +5 -5
- data/.gitignore +0 -2
- data/Gemfile +0 -2
- data/README.md +6 -7
- data/gepub.gemspec +1 -1
- data/lib/gepub/bindings.rb +2 -0
- data/lib/gepub/book.rb +9 -7
- data/lib/gepub/inspect_mixin.rb +26 -0
- data/lib/gepub/item.rb +8 -4
- data/lib/gepub/manifest.rb +2 -0
- data/lib/gepub/meta.rb +6 -4
- data/lib/gepub/metadata.rb +2 -0
- data/lib/gepub/metadata_add.rb +2 -2
- data/lib/gepub/package.rb +8 -5
- data/lib/gepub/spine.rb +9 -5
- data/lib/gepub/version.rb +1 -1
- data/lib/gepub.rb +1 -0
- data/tools/generate_function.rb +3 -2
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93cb58ca825f4f30efeb8f1ce191ccf9bbb2e74d32f9cfd77f37dedb85cc7a3e
|
4
|
+
data.tar.gz: da3618e21ad20a7f6a12c4d52fe43d1159ecdd378a5eb4bae39d1eb2558fb605
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ba5fbbd7590739ef20d73af2cc3b50811c0ba330959cc784a6246bb13dbd249d32a0c9fbe3c31adb15ae4e4b9c69a7c7988cc5c62b8b6e65cdf9c105eed85d6
|
7
|
+
data.tar.gz: bb66bd6e2f564ed780e0417b91e43993fb0ece0fc938095a31d10fdfff56b9c77d290df812e3ff94feb64256ac1b21e06aa2a36fb29553b6145ee89644c2f684
|
data/.github/workflows/test.yml
CHANGED
@@ -4,13 +4,13 @@ jobs:
|
|
4
4
|
test:
|
5
5
|
strategy:
|
6
6
|
matrix:
|
7
|
-
ruby: [2.
|
7
|
+
ruby: [2.7, 3.0, 3.1, 3.2, 3.3, jruby]
|
8
8
|
platform: [ubuntu-latest, macos-latest, windows-latest]
|
9
9
|
runs-on: ${{ matrix.platform }}
|
10
10
|
env:
|
11
11
|
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
12
12
|
steps:
|
13
|
-
- uses: actions/checkout@
|
13
|
+
- uses: actions/checkout@v4
|
14
14
|
- name: Set up Ruby
|
15
15
|
uses: ruby/setup-ruby@v1
|
16
16
|
with:
|
@@ -18,12 +18,12 @@ jobs:
|
|
18
18
|
- name: setup gems
|
19
19
|
run: bundle install --jobs 4 --retry 3
|
20
20
|
- name: run test and publish code coverage
|
21
|
-
if: runner.os == 'Linux' && matrix.ruby == '
|
22
|
-
uses: paambaati/codeclimate-action@
|
21
|
+
if: runner.os == 'Linux' && matrix.ruby == '3.3' && env.CC_TEST_REPORTER_ID != ''
|
22
|
+
uses: paambaati/codeclimate-action@v5.0.0
|
23
23
|
env:
|
24
24
|
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
25
25
|
with:
|
26
26
|
coverageCommand: bundle exec rake spec
|
27
27
|
- name: run test
|
28
|
-
if: runner.os != 'Linux' || matrix.ruby != '
|
28
|
+
if: runner.os != 'Linux' || matrix.ruby != '3.3' || env.CC_TEST_REPORTER_ID == ''
|
29
29
|
run: bundle exec rake spec
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
[](https://codeclimate.com/github/skoji/gepub/test_coverage)
|
6
6
|
[](http://badge.fury.io/rb/gepub)
|
7
7
|
|
8
|
-
*
|
8
|
+
* https://rubydoc.info/github/skoji/gepub
|
9
9
|
|
10
10
|
## DESCRIPTION:
|
11
11
|
|
@@ -13,12 +13,12 @@ a generic EPUB parser/generator library.
|
|
13
13
|
|
14
14
|
## FEATURES/PROBLEMS:
|
15
15
|
|
16
|
-
* GEPUB::Book provides functionality to create EPUB
|
16
|
+
* GEPUB::Book provides functionality to create EPUB files and parse EPUB files
|
17
17
|
* Handle every metadata in EPUB2/EPUB3.
|
18
18
|
|
19
19
|
* See [issues](https://github.com/skoji/gepub/issues/) for known problems.
|
20
20
|
|
21
|
-
If you are using GEPUB::Builder and do not like its
|
21
|
+
If you are using GEPUB::Builder and do not like its behavior (e.g., GEPUB::Builder evaluates the block as inside the Builder instance), consider using GEPUB::Book directly.
|
22
22
|
|
23
23
|
## SYNOPSIS:
|
24
24
|
|
@@ -98,9 +98,9 @@ book.ordered {
|
|
98
98
|
}
|
99
99
|
epubname = File.join(File.dirname(__FILE__), 'example_test.epub')
|
100
100
|
|
101
|
-
# if you do not specify
|
102
|
-
#
|
103
|
-
# auto-generated nav file will not appear on spine.
|
101
|
+
# if you do not specify a nav document with add_item,
|
102
|
+
# generate_epub will generate simple navigation text.
|
103
|
+
# auto-generated nav file will not appear on the spine.
|
104
104
|
book.generate_epub(epubname)
|
105
105
|
```
|
106
106
|
* [examples in this repository](https://github.com/skoji/gepub/tree/main/examples/)
|
@@ -112,4 +112,3 @@ book.generate_epub(epubname)
|
|
112
112
|
## DONATE:
|
113
113
|
|
114
114
|
* Bitcoin Address: `1M69AwoxpgPZsp5KStLUEjP7so5dHVfDTH`
|
115
|
-
|
data/gepub.gemspec
CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
17
|
s.require_paths = ["lib"]
|
18
18
|
|
19
|
-
s.add_runtime_dependency "nokogiri", ">= 1.8.2", "<
|
19
|
+
s.add_runtime_dependency "nokogiri", ">= 1.8.2", "< 2.0"
|
20
20
|
s.add_runtime_dependency "rubyzip", "> 1.1.1", "< 2.4"
|
21
21
|
s.add_development_dependency "epubcheck-ruby"
|
22
22
|
s.add_development_dependency "rake"
|
data/lib/gepub/bindings.rb
CHANGED
data/lib/gepub/book.rb
CHANGED
@@ -79,6 +79,8 @@ module GEPUB
|
|
79
79
|
# set page-proression-direction attribute to spine.
|
80
80
|
|
81
81
|
class Book
|
82
|
+
include InspectMixin
|
83
|
+
|
82
84
|
MIMETYPE='mimetype'
|
83
85
|
MIMETYPE_CONTENTS='application/epub+zip'
|
84
86
|
CONTAINER='META-INF/container.xml'
|
@@ -100,14 +102,14 @@ module GEPUB
|
|
100
102
|
package = nil
|
101
103
|
package_path = nil
|
102
104
|
book = nil
|
103
|
-
Zip::
|
104
|
-
|
|
105
|
-
package, package_path = parse_container(
|
105
|
+
Zip::File.open_buffer(io) do
|
106
|
+
|zip_file|
|
107
|
+
package, package_path = parse_container(zip_file, files)
|
106
108
|
check_consistency_of_package(package, package_path)
|
107
109
|
parse_files_into_package(files, package)
|
108
110
|
book = Book.new(package.path)
|
109
111
|
book.instance_eval { @package = package; @optional_files = files }
|
110
|
-
|
112
|
+
end
|
111
113
|
book
|
112
114
|
end
|
113
115
|
|
@@ -377,12 +379,12 @@ EOF
|
|
377
379
|
end
|
378
380
|
|
379
381
|
private
|
380
|
-
def self.parse_container(
|
382
|
+
def self.parse_container(zip_file, files)
|
381
383
|
package_path = nil
|
382
384
|
package = nil
|
383
|
-
|
385
|
+
zip_file.each do |entry|
|
384
386
|
if !entry.directory?
|
385
|
-
files[entry.name] =
|
387
|
+
files[entry.name] = zip_file.read(entry)
|
386
388
|
case entry.name
|
387
389
|
when MIMETYPE then
|
388
390
|
if files[MIMETYPE] != MIMETYPE_CONTENTS
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module GEPUB
|
2
|
+
module InspectMixin
|
3
|
+
def inspect
|
4
|
+
result = instance_variables.each
|
5
|
+
.with_object({}) { |name, h| h[name] = instance_variable_get(name) }
|
6
|
+
.reject { |name, value| value.nil? }
|
7
|
+
.map { |name, value|
|
8
|
+
case value
|
9
|
+
when true, false, Symbol, Numeric, Array, Hash
|
10
|
+
"#{name}=#{value.inspect}"
|
11
|
+
when String
|
12
|
+
if value.length > 80
|
13
|
+
"#{name}=(omitted)"
|
14
|
+
else
|
15
|
+
"#{name}=#{value.inspect}"
|
16
|
+
end
|
17
|
+
else
|
18
|
+
"#{name}=#<#{value.class.name}>"
|
19
|
+
end
|
20
|
+
}
|
21
|
+
.join(' ')
|
22
|
+
|
23
|
+
"#<#{self.class.name} " + result + '>'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/gepub/item.rb
CHANGED
@@ -6,6 +6,8 @@ module GEPUB
|
|
6
6
|
# #id, #id=, #set_id, #href, #href=, #set_href, #media_type, #media_type=, #set_media_type,
|
7
7
|
# #fallback, #fallback=, #set_fallback, #media_overlay, #media_overlay=, #set_media_overlay
|
8
8
|
class Item
|
9
|
+
include InspectMixin
|
10
|
+
|
9
11
|
attr_accessor :content
|
10
12
|
def self.create(parent, attributes = {})
|
11
13
|
Item.new(attributes['id'], attributes['href'], attributes['media-type'], parent,
|
@@ -46,12 +48,14 @@ module GEPUB
|
|
46
48
|
media_type
|
47
49
|
end
|
48
50
|
|
49
|
-
|
50
|
-
|
51
|
+
# get +attribute+
|
52
|
+
def [](attribute)
|
53
|
+
@attributes[attribute]
|
51
54
|
end
|
52
55
|
|
53
|
-
|
54
|
-
|
56
|
+
# set +attribute+
|
57
|
+
def []=(attribute, value)
|
58
|
+
@attributes[attribute] = value
|
55
59
|
end
|
56
60
|
|
57
61
|
# add value to properties attribute.
|
data/lib/gepub/manifest.rb
CHANGED
data/lib/gepub/meta.rb
CHANGED
@@ -16,12 +16,14 @@ module GEPUB
|
|
16
16
|
@parent.register_meta(self) unless @parent.nil?
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
19
|
+
# get +attribute+
|
20
|
+
def [](attribute)
|
21
|
+
@attributes[attribute]
|
21
22
|
end
|
22
23
|
|
23
|
-
|
24
|
-
|
24
|
+
# set +attribute+
|
25
|
+
def []=(attribute, value)
|
26
|
+
@attributes[attribute] = value
|
25
27
|
end
|
26
28
|
|
27
29
|
def refiner_list(name)
|
data/lib/gepub/metadata.rb
CHANGED
@@ -18,6 +18,8 @@ module GEPUB
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
include XMLUtil, DSLUtil
|
21
|
+
include InspectMixin
|
22
|
+
|
21
23
|
attr_accessor :opf_version
|
22
24
|
# parse metadata element. metadata_xml should be Nokogiri::XML::Node object.
|
23
25
|
def self.parse(metadata_xml, opf_version = '3.0', id_pool = Package::IDPool.new)
|
data/lib/gepub/metadata_add.rb
CHANGED
data/lib/gepub/package.rb
CHANGED
@@ -6,6 +6,8 @@ module GEPUB
|
|
6
6
|
# Holds data in opf file.
|
7
7
|
class Package
|
8
8
|
include XMLUtil, DSLUtil
|
9
|
+
include InspectMixin
|
10
|
+
|
9
11
|
extend Forwardable
|
10
12
|
attr_accessor :path, :metadata, :manifest, :spine, :bindings, :epub_backward_compat, :contents_prefix, :prefixes
|
11
13
|
def_delegators :@manifest, :item_by_href
|
@@ -142,15 +144,16 @@ module GEPUB
|
|
142
144
|
})
|
143
145
|
}
|
144
146
|
|
145
|
-
|
146
|
-
|
147
|
+
# get +attribute+
|
148
|
+
def [](attribute)
|
149
|
+
@attributes[attribute]
|
147
150
|
end
|
148
151
|
|
149
|
-
|
150
|
-
|
152
|
+
# set +attribute+
|
153
|
+
def []=(attribute, value)
|
154
|
+
@attributes[attribute] = value
|
151
155
|
end
|
152
156
|
|
153
|
-
|
154
157
|
def identifier(identifier=UNASSIGNED)
|
155
158
|
if unassigned?(identifier)
|
156
159
|
@metadata.identifier_by_id(unique_identifier)
|
data/lib/gepub/spine.rb
CHANGED
@@ -3,6 +3,8 @@ require 'nokogiri'
|
|
3
3
|
module GEPUB
|
4
4
|
class Spine
|
5
5
|
include XMLUtil
|
6
|
+
include InspectMixin
|
7
|
+
|
6
8
|
attr_accessor :opf_version
|
7
9
|
class Itemref
|
8
10
|
def self.create(parent, attributes = {})
|
@@ -26,14 +28,16 @@ module GEPUB
|
|
26
28
|
define_method(methodbase) { @attributes[name] }
|
27
29
|
}
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
+
# get +attribute+
|
32
|
+
def [](attribute)
|
33
|
+
@attributes[attribute]
|
31
34
|
end
|
32
35
|
|
33
|
-
|
34
|
-
|
36
|
+
# set +attribute+
|
37
|
+
def []=(attribute, value)
|
38
|
+
@attributes[attribute] = value
|
35
39
|
end
|
36
|
-
|
40
|
+
|
37
41
|
def add_property(property)
|
38
42
|
(@attributes['properties'] ||=[]) << property
|
39
43
|
end
|
data/lib/gepub/version.rb
CHANGED
data/lib/gepub.rb
CHANGED
data/tools/generate_function.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require_relative '../lib/gepub/inspect_mixin.rb'
|
1
2
|
require_relative '../lib/gepub/item.rb'
|
2
3
|
attrs = GEPUB::Item::ATTRIBUTES.select do |attr|
|
3
4
|
attr != 'href'
|
@@ -188,9 +189,9 @@ module GEPUB
|
|
188
189
|
meta.add_alternates alternates
|
189
190
|
end
|
190
191
|
yield meta if block_given?
|
191
|
-
|
192
|
-
end
|
192
|
+
meta
|
193
193
|
end
|
194
|
+
end
|
194
195
|
end
|
195
196
|
EOF
|
196
197
|
|
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.
|
4
|
+
version: 1.0.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KOJIMA Satoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 1.8.2
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '2.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: 1.8.2
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '2.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rubyzip
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- lib/gepub/builder_mixin.rb
|
144
144
|
- lib/gepub/datemeta.rb
|
145
145
|
- lib/gepub/dsl_util.rb
|
146
|
+
- lib/gepub/inspect_mixin.rb
|
146
147
|
- lib/gepub/item.rb
|
147
148
|
- lib/gepub/manifest.rb
|
148
149
|
- lib/gepub/meta.rb
|
@@ -177,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
178
|
- !ruby/object:Gem::Version
|
178
179
|
version: '0'
|
179
180
|
requirements: []
|
180
|
-
rubygems_version: 3.
|
181
|
+
rubygems_version: 3.3.26
|
181
182
|
signing_key:
|
182
183
|
specification_version: 4
|
183
184
|
summary: a generic EPUB library for Ruby.
|