gepub 1.0.11 → 1.0.15
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/FUNDING.yml +3 -0
- data/.github/dependabot.yml +8 -0
- data/.github/workflows/test.yml +4 -11
- data/.rubocop.yml +6 -0
- data/Gemfile +1 -1
- data/README.md +6 -2
- data/Rakefile +1 -1
- data/gepub.gemspec +4 -2
- data/lib/gepub/bindings.rb +2 -0
- data/lib/gepub/book.rb +5 -0
- data/lib/gepub/book_add_item.rb +2 -0
- data/lib/gepub/inspect_mixin.rb +26 -0
- data/lib/gepub/item.rb +20 -8
- 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 +36 -34
- 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 +40 -35
- metadata +39 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 19218e13519e47532dee8d0a4f1c45a3acaa65dd105b4fcd1b09774f9f482bd6
|
4
|
+
data.tar.gz: abeb56bc8baa0d505f75af8403eb4e59a86aa386aeac83040c2dcf9fc2f5b45e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1c20a5567c1033fceafbe660f8bc2b227b3a269125d1da4b58d2183fb13f24a4f7e56242100e37b662f03a17ebb744fc686151782ef2d8fb36c9d94ef39275b
|
7
|
+
data.tar.gz: 6dcf08c29ca933edba399cd1ffbb001196d8d8ef74cb62bcb8619135eddec743975b1654b5c3ce57342d91da7c8166949057591da1d3e429c1f326967544077e
|
data/.github/FUNDING.yml
ADDED
data/.github/workflows/test.yml
CHANGED
@@ -4,26 +4,19 @@ jobs:
|
|
4
4
|
test:
|
5
5
|
strategy:
|
6
6
|
matrix:
|
7
|
-
ruby: [2.
|
7
|
+
ruby: [2.5, 2.6, 2.7, 3.0, jruby]
|
8
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
9
|
runs-on: ${{ matrix.platform }}
|
15
10
|
env:
|
16
11
|
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
17
12
|
steps:
|
18
|
-
- uses: actions/checkout@
|
13
|
+
- uses: actions/checkout@v2
|
19
14
|
- name: Set up Ruby
|
20
|
-
uses:
|
15
|
+
uses: ruby/setup-ruby@v1
|
21
16
|
with:
|
22
17
|
ruby-version: ${{ matrix.ruby }}
|
23
18
|
- name: setup gems
|
24
|
-
run:
|
25
|
-
gem install bundler
|
26
|
-
bundle install
|
19
|
+
run: bundle install --jobs 4 --retry 3
|
27
20
|
- name: run test and publish code coverage
|
28
21
|
if: runner.os == 'Linux' && matrix.ruby == '2.7' && env.CC_TEST_REPORTER_ID != ''
|
29
22
|
uses: paambaati/codeclimate-action@v2.3.0
|
data/.rubocop.yml
ADDED
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
|
-
* http://rdoc.info/github/skoji/gepub/
|
8
|
+
* http://rdoc.info/github/skoji/gepub/main/frames
|
9
9
|
|
10
10
|
## DESCRIPTION:
|
11
11
|
|
@@ -103,9 +103,13 @@ epubname = File.join(File.dirname(__FILE__), 'example_test.epub')
|
|
103
103
|
# auto-generated nav file will not appear on spine.
|
104
104
|
book.generate_epub(epubname)
|
105
105
|
```
|
106
|
-
* [examples in this repository](https://github.com/skoji/gepub/tree/
|
106
|
+
* [examples in this repository](https://github.com/skoji/gepub/tree/main/examples/)
|
107
107
|
|
108
108
|
## INSTALL:
|
109
109
|
|
110
110
|
* gem install gepub
|
111
111
|
|
112
|
+
## DONATE:
|
113
|
+
|
114
|
+
* Bitcoin Address: `1M69AwoxpgPZsp5KStLUEjP7so5dHVfDTH`
|
115
|
+
|
data/Rakefile
CHANGED
data/gepub.gemspec
CHANGED
@@ -16,8 +16,10 @@ 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", "<
|
20
|
-
s.add_runtime_dependency "rubyzip", "> 1.1.1", "< 2.
|
19
|
+
s.add_runtime_dependency "nokogiri", ">= 1.8.2", "< 2.0"
|
20
|
+
s.add_runtime_dependency "rubyzip", "> 1.1.1", "< 2.4"
|
21
|
+
s.add_development_dependency "epubcheck-ruby"
|
21
22
|
s.add_development_dependency "rake"
|
22
23
|
s.add_development_dependency "rspec"
|
24
|
+
s.add_development_dependency "rubocop"
|
23
25
|
end
|
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'
|
@@ -316,6 +318,9 @@ EOF
|
|
316
318
|
# build nav
|
317
319
|
builder = Nokogiri::XML::Builder.new {
|
318
320
|
|doc|
|
321
|
+
unless version.to_f < 3.0
|
322
|
+
doc.doc.create_internal_subset('html', nil, nil )
|
323
|
+
end
|
319
324
|
doc.html('xmlns' => "http://www.w3.org/1999/xhtml",'xmlns:epub' => "http://www.idpf.org/2007/ops") {
|
320
325
|
doc.head {
|
321
326
|
doc.title title
|
data/lib/gepub/book_add_item.rb
CHANGED
@@ -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.
|
@@ -106,9 +110,10 @@ module GEPUB
|
|
106
110
|
else
|
107
111
|
prefix = "#{ns_prefix}:"
|
108
112
|
end
|
113
|
+
images = parsed.xpath("//#{prefix}img[starts-with(@src,'http')]")
|
109
114
|
videos = parsed.xpath("//#{prefix}video[starts-with(@src,'http')]") + parsed.xpath("//#{prefix}video/#{prefix}source[starts-with(@src,'http')]")
|
110
115
|
audios = parsed.xpath("//#{prefix}audio[starts-with(@src,'http')]") + parsed.xpath("//#{prefix}audio/#{prefix}source[starts-with(@src,'http')]")
|
111
|
-
if videos.size > 0 || audios.size > 0
|
116
|
+
if images.size > 0 || videos.size > 0 || audios.size > 0
|
112
117
|
self.add_property('remote-resources')
|
113
118
|
end
|
114
119
|
if parsed.xpath("//p:math", { 'p' => 'http://www.w3.org/1998/Math/MathML' }).size > 0
|
@@ -137,12 +142,19 @@ module GEPUB
|
|
137
142
|
self
|
138
143
|
end
|
139
144
|
|
140
|
-
# add content
|
145
|
+
# add content from io or file to the item
|
141
146
|
def add_content(io_or_filename)
|
142
|
-
io = io_or_filename
|
143
147
|
if io_or_filename.class == String
|
144
|
-
|
148
|
+
File.open(io_or_filename, mode='r') do |f|
|
149
|
+
add_content_io f
|
150
|
+
end
|
151
|
+
else
|
152
|
+
add_content_io io_or_filename
|
145
153
|
end
|
154
|
+
self
|
155
|
+
end
|
156
|
+
|
157
|
+
def add_content_io(io)
|
146
158
|
io.binmode
|
147
159
|
@content = io.read
|
148
160
|
if File.extname(self.href) =~ /x?html$/
|
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
@@ -1,5 +1,7 @@
|
|
1
|
+
## this file is automatically generated by tools/generate_function.rb . do not edit this code directly.
|
2
|
+
|
1
3
|
module GEPUB
|
2
|
-
|
4
|
+
class Metadata
|
3
5
|
CONTENT_NODE_LIST = ['identifier', 'title', 'language', 'contributor', 'creator', 'coverage', 'date','description','format','publisher','relation','rights','source','subject','type'].each {
|
4
6
|
|node|
|
5
7
|
define_method(node + '_list') { @content_nodes[node].dup.sort_as_meta }
|
@@ -14,7 +16,7 @@ module GEPUB
|
|
14
16
|
|
15
17
|
define_method(node, ->(content=UNASSIGNED, deprecated_id=nil, id:nil,
|
16
18
|
title_type: nil,identifier_type: nil,display_seq: nil,file_as: nil,group_position: nil,role: nil,
|
17
|
-
|
19
|
+
lang: nil, alternates: {}) {
|
18
20
|
if unassigned?(content)
|
19
21
|
get_first_node(node)
|
20
22
|
else
|
@@ -48,7 +50,7 @@ module GEPUB
|
|
48
50
|
|
49
51
|
def add_title(content, deprecated_id = nil, deprecated_title_type = nil, id: nil,
|
50
52
|
title_type: nil,identifier_type: nil,display_seq: nil,file_as: nil,group_position: nil,role: nil,
|
51
|
-
|
53
|
+
lang: nil, alternates: {})
|
52
54
|
if deprecated_id
|
53
55
|
warn 'second argument for add_title is deprecated. use id: instead'
|
54
56
|
id = deprecated_id
|
@@ -58,15 +60,15 @@ module GEPUB
|
|
58
60
|
title_type = deprecated_title_type
|
59
61
|
end
|
60
62
|
meta = add_metadata('title', content, id: id,
|
61
|
-
|
62
|
-
|
63
|
+
title_type: title_type,identifier_type: identifier_type,display_seq: display_seq,file_as: file_as,group_position: group_position,role: role,
|
64
|
+
lang: lang, alternates: alternates)
|
63
65
|
yield meta if block_given?
|
64
66
|
meta
|
65
67
|
end
|
66
68
|
|
67
69
|
def add_person(name, content, deprecated_id = nil, deprecated_role = nil, id: nil,
|
68
|
-
|
69
|
-
|
70
|
+
title_type: nil,identifier_type: nil,display_seq: nil,file_as: nil,group_position: nil,role: nil,
|
71
|
+
lang: nil, alternates: {})
|
70
72
|
if deprecated_id
|
71
73
|
warn 'second argument for add_person is deprecated. use id: instead'
|
72
74
|
id = deprecated_id
|
@@ -76,15 +78,15 @@ module GEPUB
|
|
76
78
|
role = deprecated_role
|
77
79
|
end
|
78
80
|
meta = add_metadata(name, content, id: id,
|
79
|
-
|
80
|
-
|
81
|
+
title_type: title_type,identifier_type: identifier_type,display_seq: display_seq,file_as: file_as,group_position: group_position,role: role,
|
82
|
+
lang: lang, alternates: alternates)
|
81
83
|
yield meta if block_given?
|
82
84
|
meta
|
83
85
|
end
|
84
86
|
|
85
87
|
def add_creator(content, deprecated_id = nil, deprecated_role = nil, id: nil,
|
86
88
|
title_type: nil,identifier_type: nil,display_seq: nil,file_as: nil,group_position: nil,role: nil,
|
87
|
-
|
89
|
+
lang: nil, alternates: {})
|
88
90
|
if deprecated_id
|
89
91
|
warn 'second argument for add_creator is deprecated. use id: instead'
|
90
92
|
id = deprecated_id
|
@@ -93,17 +95,17 @@ module GEPUB
|
|
93
95
|
warn 'third argument for add_creator is deprecated. use role: instead'
|
94
96
|
role = deprecated_role
|
95
97
|
end
|
96
|
-
|
98
|
+
role = 'aut' if role.nil?
|
97
99
|
meta = add_person('creator', content, id: id,
|
98
|
-
|
99
|
-
|
100
|
+
title_type: title_type,identifier_type: identifier_type,display_seq: display_seq,file_as: file_as,group_position: group_position,role: role,
|
101
|
+
lang: lang, alternates: alternates)
|
100
102
|
yield meta if block_given?
|
101
103
|
meta
|
102
104
|
end
|
103
105
|
|
104
106
|
def add_contributor(content, deprecated_id = nil, deprecated_role = nil, id: nil,
|
105
107
|
title_type: nil,identifier_type: nil,display_seq: nil,file_as: nil,group_position: nil,role: nil,
|
106
|
-
|
108
|
+
lang: nil, alternates: {})
|
107
109
|
if deprecated_id
|
108
110
|
warn 'second argument for add_contributor is deprecated. use id: instead'
|
109
111
|
id = deprecated_id
|
@@ -113,30 +115,30 @@ module GEPUB
|
|
113
115
|
role = deprecated_role
|
114
116
|
end
|
115
117
|
meta = add_person('contributor', content, id: id,
|
116
|
-
|
117
|
-
|
118
|
+
title_type: title_type,identifier_type: identifier_type,display_seq: display_seq,file_as: file_as,group_position: group_position,role: role,
|
119
|
+
lang: lang, alternates: alternates)
|
118
120
|
yield meta if block_given?
|
119
121
|
meta
|
120
122
|
end
|
121
123
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
124
|
+
def add_metadata(name, content, id: nil, itemclass: Meta,
|
125
|
+
title_type: nil,identifier_type: nil,display_seq: nil,file_as: nil,group_position: nil,role: nil,
|
126
|
+
lang: nil, alternates: {}
|
127
|
+
)
|
128
|
+
meta = add_metadata_internal(name, content, id: id, itemclass: itemclass)
|
127
129
|
[{ value: title_type, name: 'title-type'},{ value: identifier_type, name: 'identifier-type'},{ value: display_seq, name: 'display-seq'},{ value: file_as, name: 'file-as'},{ value: group_position, name: 'group-position'},{ value: role, name: 'role'}].each do |refiner|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
130
|
+
if refiner[:value]
|
131
|
+
meta.refine(refiner[:name], refiner[:value])
|
132
|
+
end
|
133
|
+
end
|
134
|
+
if lang
|
135
|
+
meta.lang = lang
|
136
|
+
end
|
137
|
+
if alternates
|
138
|
+
meta.add_alternates alternates
|
139
|
+
end
|
138
140
|
yield meta if block_given?
|
139
|
-
|
140
|
-
|
141
|
-
|
141
|
+
meta
|
142
|
+
end
|
143
|
+
end
|
142
144
|
end
|
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'
|
@@ -9,6 +10,8 @@ attrs << "property"
|
|
9
10
|
attrs_arguments_string = attrs.map { |attr| "#{attr}: nil" }.join(',')
|
10
11
|
attrs_internal_string = "{ " + attrs.map { |attr| "#{attr}: #{attr}"}.join(',') + " }"
|
11
12
|
File.write(File.join(File.dirname(__FILE__), "../lib/gepub/book_add_item.rb"), <<EOF)
|
13
|
+
## this file is automatically generated by tools/generate_function.rb . do not edit this code directly.
|
14
|
+
|
12
15
|
module GEPUB
|
13
16
|
class Book
|
14
17
|
# add an item(i.e. html, images, audios, etc) to Book.
|
@@ -35,7 +38,7 @@ require_relative '../lib/gepub/dsl_util.rb'
|
|
35
38
|
require_relative '../lib/gepub/meta.rb'
|
36
39
|
|
37
40
|
refiners = GEPUB::Meta::REFINERS.map do |refiner|
|
38
|
-
|
41
|
+
refiner.sub('-', '_')
|
39
42
|
end
|
40
43
|
|
41
44
|
refiners_arguments_string = refiners.map { |refiner| "#{refiner}: nil" }.join(',')
|
@@ -46,8 +49,10 @@ meta_attr_arguments_string = "lang: nil, alternates: {}"
|
|
46
49
|
meta_attr_arguments_set_string = "lang: lang, alternates: alternates"
|
47
50
|
|
48
51
|
File.write(File.join(File.dirname(__FILE__), "../lib/gepub/metadata_add.rb"), <<EOF)
|
52
|
+
## this file is automatically generated by tools/generate_function.rb . do not edit this code directly.
|
53
|
+
|
49
54
|
module GEPUB
|
50
|
-
|
55
|
+
class Metadata
|
51
56
|
CONTENT_NODE_LIST = ['identifier', 'title', 'language', 'contributor', 'creator', 'coverage', 'date','description','format','publisher','relation','rights','source','subject','type'].each {
|
52
57
|
|node|
|
53
58
|
define_method(node + '_list') { @content_nodes[node].dup.sort_as_meta }
|
@@ -62,7 +67,7 @@ module GEPUB
|
|
62
67
|
|
63
68
|
define_method(node, ->(content=UNASSIGNED, deprecated_id=nil, id:nil,
|
64
69
|
#{refiners_arguments_string},
|
65
|
-
|
70
|
+
#{meta_attr_arguments_string}) {
|
66
71
|
if unassigned?(content)
|
67
72
|
get_first_node(node)
|
68
73
|
else
|
@@ -96,7 +101,7 @@ module GEPUB
|
|
96
101
|
|
97
102
|
def add_title(content, deprecated_id = nil, deprecated_title_type = nil, id: nil,
|
98
103
|
#{refiners_arguments_string},
|
99
|
-
|
104
|
+
#{meta_attr_arguments_string})
|
100
105
|
if deprecated_id
|
101
106
|
warn 'second argument for add_title is deprecated. use id: instead'
|
102
107
|
id = deprecated_id
|
@@ -106,15 +111,15 @@ module GEPUB
|
|
106
111
|
title_type = deprecated_title_type
|
107
112
|
end
|
108
113
|
meta = add_metadata('title', content, id: id,
|
109
|
-
|
110
|
-
|
114
|
+
#{refiners_arguments_set_string},
|
115
|
+
#{meta_attr_arguments_set_string})
|
111
116
|
yield meta if block_given?
|
112
117
|
meta
|
113
118
|
end
|
114
119
|
|
115
120
|
def add_person(name, content, deprecated_id = nil, deprecated_role = nil, id: nil,
|
116
|
-
|
117
|
-
|
121
|
+
#{refiners_arguments_string},
|
122
|
+
#{meta_attr_arguments_string})
|
118
123
|
if deprecated_id
|
119
124
|
warn 'second argument for add_person is deprecated. use id: instead'
|
120
125
|
id = deprecated_id
|
@@ -124,15 +129,15 @@ module GEPUB
|
|
124
129
|
role = deprecated_role
|
125
130
|
end
|
126
131
|
meta = add_metadata(name, content, id: id,
|
127
|
-
|
128
|
-
|
132
|
+
#{refiners_arguments_set_string},
|
133
|
+
#{meta_attr_arguments_set_string})
|
129
134
|
yield meta if block_given?
|
130
135
|
meta
|
131
136
|
end
|
132
137
|
|
133
138
|
def add_creator(content, deprecated_id = nil, deprecated_role = nil, id: nil,
|
134
139
|
#{refiners_arguments_string},
|
135
|
-
|
140
|
+
#{meta_attr_arguments_string})
|
136
141
|
if deprecated_id
|
137
142
|
warn 'second argument for add_creator is deprecated. use id: instead'
|
138
143
|
id = deprecated_id
|
@@ -141,17 +146,17 @@ module GEPUB
|
|
141
146
|
warn 'third argument for add_creator is deprecated. use role: instead'
|
142
147
|
role = deprecated_role
|
143
148
|
end
|
144
|
-
|
149
|
+
role = 'aut' if role.nil?
|
145
150
|
meta = add_person('creator', content, id: id,
|
146
|
-
|
147
|
-
|
151
|
+
#{refiners_arguments_set_string},
|
152
|
+
#{meta_attr_arguments_set_string})
|
148
153
|
yield meta if block_given?
|
149
154
|
meta
|
150
155
|
end
|
151
156
|
|
152
157
|
def add_contributor(content, deprecated_id = nil, deprecated_role = nil, id: nil,
|
153
158
|
#{refiners_arguments_string},
|
154
|
-
|
159
|
+
#{meta_attr_arguments_string})
|
155
160
|
if deprecated_id
|
156
161
|
warn 'second argument for add_contributor is deprecated. use id: instead'
|
157
162
|
id = deprecated_id
|
@@ -161,32 +166,32 @@ module GEPUB
|
|
161
166
|
role = deprecated_role
|
162
167
|
end
|
163
168
|
meta = add_person('contributor', content, id: id,
|
164
|
-
|
165
|
-
|
169
|
+
#{refiners_arguments_set_string},
|
170
|
+
#{meta_attr_arguments_set_string})
|
166
171
|
yield meta if block_given?
|
167
172
|
meta
|
168
173
|
end
|
169
174
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
+
def add_metadata(name, content, id: nil, itemclass: Meta,
|
176
|
+
#{refiners_arguments_string},
|
177
|
+
#{meta_attr_arguments_string}
|
178
|
+
)
|
179
|
+
meta = add_metadata_internal(name, content, id: id, itemclass: itemclass)
|
175
180
|
#{refiners_string}.each do |refiner|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
181
|
+
if refiner[:value]
|
182
|
+
meta.refine(refiner[:name], refiner[:value])
|
183
|
+
end
|
184
|
+
end
|
185
|
+
if lang
|
186
|
+
meta.lang = lang
|
187
|
+
end
|
188
|
+
if alternates
|
189
|
+
meta.add_alternates alternates
|
190
|
+
end
|
186
191
|
yield meta if block_given?
|
187
|
-
|
188
|
-
|
189
|
-
|
192
|
+
meta
|
193
|
+
end
|
194
|
+
end
|
190
195
|
end
|
191
196
|
EOF
|
192
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.15
|
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: 2021-10-09 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
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: 1.1.1
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '2.
|
42
|
+
version: '2.4'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +49,21 @@ dependencies:
|
|
49
49
|
version: 1.1.1
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '2.
|
52
|
+
version: '2.4'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: epubcheck-ruby
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
name: rake
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,6 +92,20 @@ dependencies:
|
|
78
92
|
- - ">="
|
79
93
|
- !ruby/object:Gem::Version
|
80
94
|
version: '0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rubocop
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
81
109
|
description: gepub is a generic EPUB parser/generator. Generates and parse EPUB2 and
|
82
110
|
EPUB3
|
83
111
|
email:
|
@@ -89,9 +117,12 @@ extensions: []
|
|
89
117
|
extra_rdoc_files: []
|
90
118
|
files:
|
91
119
|
- ".gitattributes"
|
120
|
+
- ".github/FUNDING.yml"
|
121
|
+
- ".github/dependabot.yml"
|
92
122
|
- ".github/workflows/gempush.yml"
|
93
123
|
- ".github/workflows/test.yml"
|
94
124
|
- ".gitignore"
|
125
|
+
- ".rubocop.yml"
|
95
126
|
- Gemfile
|
96
127
|
- LICENSE.txt
|
97
128
|
- README.md
|
@@ -112,6 +143,7 @@ files:
|
|
112
143
|
- lib/gepub/builder_mixin.rb
|
113
144
|
- lib/gepub/datemeta.rb
|
114
145
|
- lib/gepub/dsl_util.rb
|
146
|
+
- lib/gepub/inspect_mixin.rb
|
115
147
|
- lib/gepub/item.rb
|
116
148
|
- lib/gepub/manifest.rb
|
117
149
|
- lib/gepub/meta.rb
|
@@ -146,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
178
|
- !ruby/object:Gem::Version
|
147
179
|
version: '0'
|
148
180
|
requirements: []
|
149
|
-
rubygems_version: 3.0.3
|
181
|
+
rubygems_version: 3.0.3.1
|
150
182
|
signing_key:
|
151
183
|
specification_version: 4
|
152
184
|
summary: a generic EPUB library for Ruby.
|