gepub 0.6.9.2 → 0.7.0beta1
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/.gitignore +3 -0
- data/.travis.yml +1 -1
- data/README.md +6 -2
- data/Rakefile +12 -0
- data/examples/new_book_example.rb +20 -0
- data/gepub.gemspec +2 -1
- data/lib/gepub/book.rb +13 -18
- data/lib/gepub/builder.rb +11 -6
- data/lib/gepub/datemeta.rb +3 -3
- data/lib/gepub/dsl_util.rb +11 -0
- data/lib/gepub/item.rb +3 -30
- data/lib/gepub/meta.rb +19 -5
- data/lib/gepub/metadata.rb +67 -20
- data/lib/gepub/mime.rb +49 -0
- data/lib/gepub/package.rb +35 -52
- data/lib/gepub/resource_builder.rb +2 -2
- data/lib/gepub/version.rb +1 -1
- data/lib/gepub.rb +3 -19
- data/spec/book_spec.rb +16 -15
- data/spec/builder_spec.rb +51 -37
- data/spec/example_spec.rb +9 -21
- data/spec/gepub_spec.rb +4 -23
- data/spec/metadata_spec.rb +18 -11
- data/spec/package_spec.rb +37 -37
- data/spec/spec_helper.rb +14 -7
- data/spec/spine_spec.rb +1 -1
- metadata +31 -14
data/spec/package_spec.rb
CHANGED
@@ -37,13 +37,13 @@ describe GEPUB::Package do
|
|
37
37
|
end
|
38
38
|
context 'generate new opf' do
|
39
39
|
it 'should generate opf' do
|
40
|
-
opf = GEPUB::Package.new('OEBPS/package.
|
41
|
-
|
|
42
|
-
|
43
|
-
|
40
|
+
opf = GEPUB::Package.new('OEBPS/package.package') {
|
41
|
+
|package|
|
42
|
+
package.primary_identifier('http://example.jp', 'BookID', 'url')
|
43
|
+
package['xml:lang'] = 'ja'
|
44
44
|
|
45
45
|
# metadata add: style 1
|
46
|
-
|
46
|
+
package.metadata.add_title('EPUB3 Sample', nil, GEPUB::TITLE_TYPE::MAIN) {
|
47
47
|
|title|
|
48
48
|
title.display_seq = 1
|
49
49
|
title.file_as = 'Sample EPUB3'
|
@@ -53,17 +53,17 @@ describe GEPUB::Package do
|
|
53
53
|
'th' => 'EPUB3 ตัวอย่าง (ญี่ปุ่น)')
|
54
54
|
}
|
55
55
|
# metadata add: style2
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
56
|
+
package.metadata.add_title('これでEPUB3もばっちり', nil, GEPUB::TITLE_TYPE::SUBTITLE).display_seq(2).add_alternates('en' => 'you need nothing but this book!')
|
57
|
+
package.metadata.add_creator('小嶋智').display_seq(1).add_alternates('en' => 'KOJIMA Satoshi')
|
58
|
+
package.metadata.add_contributor('電書部').display_seq(1).add_alternates('en' => 'Denshobu')
|
59
|
+
package.metadata.add_contributor('アサガヤデンショ').display_seq(2).add_alternates('en' => 'Asagaya Densho')
|
60
|
+
package.metadata.add_contributor('湘南電書鼎談').display_seq(3).add_alternates('en' => 'Shonan Densho Teidan')
|
61
|
+
package.metadata.add_contributor('電子雑誌トルタル').display_seq(4).add_alternates('en' => 'eMagazine Torutaru')
|
62
|
+
package.add_item('img/image1.jpg')
|
63
|
+
package.add_item('img/cover.jpg').add_property('cover-image')
|
64
|
+
package.ordered {
|
65
|
+
package.add_item('text/chapter1.xhtml')
|
66
|
+
package.add_item('text/chapter2.xhtml')
|
67
67
|
}
|
68
68
|
}
|
69
69
|
xml = Nokogiri::XML::Document.parse opf.opf_xml
|
@@ -76,24 +76,24 @@ describe GEPUB::Package do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
it 'should generate package with prefix attribute' do
|
79
|
-
|
79
|
+
opf = GEPUB::Package.new('OEBPS/package.opf') do
|
80
80
|
|package|
|
81
|
-
package.
|
81
|
+
package.primary_identifier('http://example.jp', 'BookID', 'url')
|
82
82
|
package['xml:lang'] = 'ja'
|
83
83
|
package.enable_rendition
|
84
84
|
end
|
85
|
-
xml = Nokogiri::XML::Document.parse
|
85
|
+
xml = Nokogiri::XML::Document.parse opf.opf_xml
|
86
86
|
expect(xml.root['prefix']).to eq('rendition: http://www.idpf.org/vocab/rendition/#')
|
87
87
|
end
|
88
88
|
|
89
89
|
it 'should generate package with rendition attributes' do
|
90
|
-
|
90
|
+
opf = GEPUB::Package.new('OEBPS/package.opf') do
|
91
91
|
|package|
|
92
92
|
package.rendition_layout = 'pre-paginated'
|
93
93
|
package.rendition_orientation = 'portlait'
|
94
94
|
package.rendition_spread = 'landscape'
|
95
95
|
end
|
96
|
-
xml = Nokogiri::XML::Document.parse
|
96
|
+
xml = Nokogiri::XML::Document.parse opf.opf_xml
|
97
97
|
expect(xml.root['prefix']).to eq('rendition: http://www.idpf.org/vocab/rendition/#')
|
98
98
|
expect(xml.at_xpath("//xmlns:meta[@property='rendition:layout']").content).to eq('pre-paginated')
|
99
99
|
expect(xml.at_xpath("//xmlns:meta[@property='rendition:orientation']").content).to eq('portlait')
|
@@ -101,23 +101,23 @@ describe GEPUB::Package do
|
|
101
101
|
end
|
102
102
|
|
103
103
|
it 'should handle ibooks version' do
|
104
|
-
|
104
|
+
opf = GEPUB::Package.new('OEBPS/package.opf') do
|
105
105
|
|package|
|
106
106
|
package.ibooks_version = '1.1.1'
|
107
107
|
end
|
108
|
-
xml = Nokogiri::XML::Document.parse
|
108
|
+
xml = Nokogiri::XML::Document.parse opf.opf_xml
|
109
109
|
expect(xml.root['prefix']).to eq('ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/')
|
110
110
|
expect(xml.at_xpath("//xmlns:meta[@property='ibooks:version']").content).to eq('1.1.1')
|
111
111
|
end
|
112
112
|
|
113
113
|
it 'should generate opf2.0' do
|
114
114
|
opf = GEPUB::Package.new('OEBPS/package.opf', { 'version' => '2.0'}) {
|
115
|
-
|
|
116
|
-
|
117
|
-
|
115
|
+
|package|
|
116
|
+
package.primary_identifier('http://example.jp', 'BookID', 'url')
|
117
|
+
package['xml:lang'] = 'ja'
|
118
118
|
|
119
119
|
# metadata add: style 1
|
120
|
-
|
120
|
+
package.metadata.add_title('EPUB3 Sample', nil, GEPUB::TITLE_TYPE::MAIN) {
|
121
121
|
|title|
|
122
122
|
title.display_seq = 1
|
123
123
|
title.file_as = 'Sample EPUB3'
|
@@ -127,16 +127,16 @@ describe GEPUB::Package do
|
|
127
127
|
'th' => 'EPUB3 ตัวอย่าง (ญี่ปุ่น)')
|
128
128
|
}
|
129
129
|
# metadata add: style2
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
130
|
+
package.metadata.add_title('これでEPUB3もばっちり', nil, GEPUB::TITLE_TYPE::SUBTITLE).display_seq(2).add_alternates('en' => 'you need nothing but this book!')
|
131
|
+
package.metadata.add_creator('小嶋智').display_seq(1).add_alternates('en' => 'KOJIMA Satoshi')
|
132
|
+
package.metadata.add_contributor('電書部').display_seq(1).add_alternates('en' => 'Denshobu')
|
133
|
+
package.metadata.add_contributor('アサガヤデンショ').display_seq(2).add_alternates('en' => 'Asagaya Densho')
|
134
|
+
package.metadata.add_contributor('湘南電書鼎談').display_seq(3).add_alternates('en' => 'Shonan Densho Teidan')
|
135
|
+
package.metadata.add_contributor('電子雑誌トルタル').display_seq(4).add_alternates('en' => 'eMagazine Torutaru')
|
136
|
+
package.add_item('img/image1.jpg')
|
137
|
+
package.ordered {
|
138
|
+
package.add_item('text/chapter1.xhtml')
|
139
|
+
package.add_item('text/chapter2.xhtml')
|
140
140
|
}
|
141
141
|
}
|
142
142
|
xml = Nokogiri::XML::Document.parse opf.opf_xml
|
data/spec/spec_helper.rb
CHANGED
@@ -31,7 +31,14 @@ RSpec.configure do |config|
|
|
31
31
|
result
|
32
32
|
end
|
33
33
|
|
34
|
-
|
34
|
+
def epubcheck(epubname)
|
35
|
+
jar = File.join(File.dirname(__FILE__), 'fixtures/epubcheck-3.0.1/epubcheck-3.0.1.jar')
|
36
|
+
stdout = capture(:stdout) do
|
37
|
+
puts %x(java -jar #{jar} #{epubname})
|
38
|
+
end
|
39
|
+
expect(stdout).to include("No errors or warnings detected.")
|
40
|
+
end
|
41
|
+
|
35
42
|
end
|
36
43
|
|
37
44
|
require 'rspec/core/formatters/base_text_formatter'
|
@@ -39,12 +46,12 @@ module RSpec
|
|
39
46
|
module Core
|
40
47
|
module Formatters
|
41
48
|
class DocumentationFormatter < BaseTextFormatter
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
49
|
+
# def green(text); color(text, "\e[42m") end
|
50
|
+
def red(text); color(text, "\e[41m") end
|
51
|
+
# def magenta(text); color(text, "\e[45m") end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
48
55
|
end
|
49
56
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
50
57
|
require 'gepub'
|
data/spec/spine_spec.rb
CHANGED
@@ -10,7 +10,7 @@ describe GEPUB::Spine do
|
|
10
10
|
end
|
11
11
|
it 'should be parsed' do
|
12
12
|
expect(@spine.toc).to eq('ncx')
|
13
|
-
@spine.page_progression_direction
|
13
|
+
expect(@spine.page_progression_direction).to eq('ltr')
|
14
14
|
expect(@spine.itemref_list.size).to eq(4)
|
15
15
|
expect(@spine.itemref_list[0].idref).to eq('cover')
|
16
16
|
expect(@spine.itemref_list[0].linear).to eq('no')
|
metadata
CHANGED
@@ -1,43 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gepub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KOJIMA Satoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: nokogiri
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: 1.6.1
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.6.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rubyzip
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,6 +88,7 @@ files:
|
|
74
88
|
- examples/builder_example.rb
|
75
89
|
- examples/generate_example.rb
|
76
90
|
- examples/image1.jpg
|
91
|
+
- examples/new_book_example.rb
|
77
92
|
- gepub.gemspec
|
78
93
|
- lib/gepub.rb
|
79
94
|
- lib/gepub/bindings.rb
|
@@ -81,11 +96,13 @@ files:
|
|
81
96
|
- lib/gepub/builder.rb
|
82
97
|
- lib/gepub/builder_mixin.rb
|
83
98
|
- lib/gepub/datemeta.rb
|
99
|
+
- lib/gepub/dsl_util.rb
|
84
100
|
- lib/gepub/item.rb
|
85
101
|
- lib/gepub/manifest.rb
|
86
102
|
- lib/gepub/meta.rb
|
87
103
|
- lib/gepub/meta_array.rb
|
88
104
|
- lib/gepub/metadata.rb
|
105
|
+
- lib/gepub/mime.rb
|
89
106
|
- lib/gepub/package.rb
|
90
107
|
- lib/gepub/rendition.rb
|
91
108
|
- lib/gepub/resource_builder.rb
|
@@ -145,9 +162,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
162
|
version: '0'
|
146
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
164
|
requirements:
|
148
|
-
- - "
|
165
|
+
- - ">"
|
149
166
|
- !ruby/object:Gem::Version
|
150
|
-
version:
|
167
|
+
version: 1.3.1
|
151
168
|
requirements: []
|
152
169
|
rubyforge_project: gepub
|
153
170
|
rubygems_version: 2.2.0
|