review 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +90 -66
  3. data/.travis.yml +1 -1
  4. data/Gemfile +0 -1
  5. data/NEWS.ja.md +82 -0
  6. data/NEWS.md +83 -0
  7. data/README.md +5 -3
  8. data/Rakefile +8 -8
  9. data/bin/review +1 -5
  10. data/bin/review-catalog-converter +22 -27
  11. data/bin/review-check +36 -43
  12. data/bin/review-checkdep +10 -15
  13. data/bin/review-compile +37 -55
  14. data/bin/review-epubmaker +4 -5
  15. data/bin/review-index +21 -29
  16. data/bin/review-init +26 -37
  17. data/bin/review-pdfmaker +0 -2
  18. data/bin/review-preproc +25 -45
  19. data/bin/review-validate +19 -18
  20. data/bin/review-vol +15 -27
  21. data/doc/config.yml.sample +5 -2
  22. data/doc/format.ja.md +20 -1
  23. data/doc/format.md +21 -5
  24. data/doc/images/review-generate.png +0 -0
  25. data/lib/epubmaker.rb +1 -3
  26. data/lib/epubmaker/content.rb +24 -27
  27. data/lib/epubmaker/epubcommon.rb +135 -148
  28. data/lib/epubmaker/epubv2.rb +39 -46
  29. data/lib/epubmaker/epubv3.rb +93 -103
  30. data/lib/epubmaker/producer.rb +138 -151
  31. data/lib/epubmaker/zip_exporter.rb +21 -26
  32. data/lib/review/book.rb +3 -6
  33. data/lib/review/book/base.rb +78 -103
  34. data/lib/review/book/chapter.rb +36 -40
  35. data/lib/review/book/compilable.rb +28 -31
  36. data/lib/review/book/image_finder.rb +6 -13
  37. data/lib/review/book/index.rb +100 -121
  38. data/lib/review/book/page_metric.rb +2 -7
  39. data/lib/review/book/part.rb +18 -20
  40. data/lib/review/book/volume.rb +9 -13
  41. data/lib/review/builder.rb +81 -116
  42. data/lib/review/catalog.rb +15 -19
  43. data/lib/review/compiler.rb +64 -83
  44. data/lib/review/configure.rb +87 -97
  45. data/lib/review/converter.rb +2 -7
  46. data/lib/review/epubbuilder.rb +1 -3
  47. data/lib/review/epubmaker.rb +213 -205
  48. data/lib/review/exception.rb +2 -4
  49. data/lib/review/extentions.rb +0 -1
  50. data/lib/review/extentions/hash.rb +2 -2
  51. data/lib/review/extentions/string.rb +5 -30
  52. data/lib/review/htmlbuilder.rb +320 -375
  53. data/lib/review/htmltoc.rb +4 -7
  54. data/lib/review/htmlutils.rb +29 -32
  55. data/lib/review/i18n.rb +33 -44
  56. data/lib/review/i18n.yml +3 -3
  57. data/lib/review/idgxmlbuilder.rb +309 -345
  58. data/lib/review/latexbuilder.rb +175 -212
  59. data/lib/review/latexindex.rb +2 -8
  60. data/lib/review/latexutils.rb +33 -43
  61. data/lib/review/lineinput.rb +1 -1
  62. data/lib/review/logger.rb +21 -0
  63. data/lib/review/makerhelper.rb +1 -4
  64. data/lib/review/markdownbuilder.rb +44 -53
  65. data/lib/review/md2inaobuilder.rb +6 -12
  66. data/lib/review/pdfmaker.rb +143 -173
  67. data/lib/review/preprocessor.rb +64 -101
  68. data/lib/review/rstbuilder.rb +126 -158
  69. data/lib/review/sec_counter.rb +18 -34
  70. data/lib/review/template.rb +4 -5
  71. data/lib/review/textbuilder.rb +2 -3
  72. data/lib/review/textutils.rb +7 -13
  73. data/lib/review/tocparser.rb +31 -56
  74. data/lib/review/tocprinter.rb +26 -52
  75. data/lib/review/topbuilder.rb +219 -247
  76. data/lib/review/unfold.rb +15 -24
  77. data/lib/review/version.rb +1 -1
  78. data/lib/review/webmaker.rb +75 -99
  79. data/lib/review/webtocprinter.rb +15 -20
  80. data/lib/review/yamlloader.rb +13 -15
  81. data/review.gemspec +20 -22
  82. data/templates/latex/layout.tex.erb +2 -2
  83. data/templates/opf/epubv2.opf.erb +7 -7
  84. data/templates/opf/epubv3.opf.erb +7 -7
  85. data/templates/web/html/layout-html5.html.erb +2 -2
  86. data/test/assets/black.eps +280 -0
  87. data/test/assets/fit.png +0 -0
  88. data/test/assets/large.gif +0 -0
  89. data/test/assets/large.jpg +0 -0
  90. data/test/assets/large.png +0 -0
  91. data/test/assets/large.svg +65 -0
  92. data/test/assets/test_template.tex +1 -1
  93. data/test/book_test_helper.rb +2 -2
  94. data/test/run_test.rb +4 -4
  95. data/test/sample-book/src/Rakefile +21 -22
  96. data/test/syntax-book/Gemfile +4 -0
  97. data/test/syntax-book/Rakefile +72 -0
  98. data/test/syntax-book/appA.re +22 -0
  99. data/test/syntax-book/bib.re +6 -0
  100. data/test/syntax-book/catalog.yml +15 -0
  101. data/test/syntax-book/ch01.re +136 -0
  102. data/test/syntax-book/ch02.re +351 -0
  103. data/test/syntax-book/ch03.re +82 -0
  104. data/test/syntax-book/config.yml +35 -0
  105. data/test/syntax-book/images/ball.png +0 -0
  106. data/test/syntax-book/images/cover.jpg +0 -0
  107. data/test/syntax-book/images/fractal.png +0 -0
  108. data/test/syntax-book/images/img3-1.png +0 -0
  109. data/test/syntax-book/images/inlineicon.jpg +0 -0
  110. data/test/syntax-book/images/logic.png +0 -0
  111. data/test/syntax-book/images/logic2.png +0 -0
  112. data/test/syntax-book/images/puzzle.jpg +0 -0
  113. data/test/syntax-book/images/table.jpg +0 -0
  114. data/test/syntax-book/part2.re +6 -0
  115. data/test/syntax-book/pre01.re +26 -0
  116. data/test/syntax-book/review-ext.rb +14 -0
  117. data/test/syntax-book/sty/jumoline.sty +310 -0
  118. data/test/syntax-book/sty/reviewmacro.sty +39 -0
  119. data/test/syntax-book/style.css +494 -0
  120. data/test/syntax-book/syntax.dic +2 -0
  121. data/test/test_book.rb +106 -111
  122. data/test/test_book_chapter.rb +21 -22
  123. data/test/test_book_part.rb +3 -5
  124. data/test/test_builder.rb +11 -22
  125. data/test/test_catalog.rb +17 -18
  126. data/test/test_catalog_converter_cmd.rb +5 -5
  127. data/test/test_compiler.rb +18 -16
  128. data/test/test_configure.rb +35 -38
  129. data/test/test_converter.rb +3 -4
  130. data/test/test_epub3maker.rb +136 -117
  131. data/test/test_epubmaker.rb +107 -114
  132. data/test/test_epubmaker_cmd.rb +2 -4
  133. data/test/test_extentions_hash.rb +32 -33
  134. data/test/test_helper.rb +9 -11
  135. data/test/test_htmlbuilder.rb +454 -420
  136. data/test/test_htmltoc.rb +8 -12
  137. data/test/test_htmlutils.rb +0 -2
  138. data/test/test_i18n.rb +159 -150
  139. data/test/test_idgxmlbuilder.rb +190 -197
  140. data/test/test_image_finder.rb +21 -22
  141. data/test/test_index.rb +24 -29
  142. data/test/test_latexbuilder.rb +274 -264
  143. data/test/test_lineinput.rb +7 -10
  144. data/test/test_location.rb +7 -7
  145. data/test/test_makerhelper.rb +13 -25
  146. data/test/test_markdownbuilder.rb +23 -26
  147. data/test/test_md2inaobuilder.rb +8 -11
  148. data/test/test_pdfmaker.rb +114 -123
  149. data/test/test_pdfmaker_cmd.rb +1 -3
  150. data/test/test_review_ext.rb +3 -5
  151. data/test/test_rstbuilder.rb +92 -97
  152. data/test/test_template.rb +3 -7
  153. data/test/test_textutils.rb +27 -27
  154. data/test/test_tocparser.rb +2 -2
  155. data/test/test_topbuilder.rb +98 -103
  156. data/test/test_webtocprinter.rb +5 -6
  157. data/test/test_yamlloader.rb +42 -42
  158. data/test/test_zip_exporter.rb +12 -18
  159. metadata +86 -9
  160. data/lib/review/ewbbuilder.rb +0 -382
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  # = producer.rb -- EPUB producer.
4
2
  #
5
3
  # Copyright (c) 2010-2017 Kenshi Muto
@@ -25,12 +23,12 @@ module EPUBMaker
25
23
  # Array of content objects.
26
24
  attr_accessor :contents
27
25
  # Parameter hash.
28
- attr_accessor :params
26
+ attr_accessor :config
29
27
  # Message resource object.
30
28
  attr_reader :res
31
29
 
32
30
  # Take YAML +file+ and return parameter hash.
33
- def Producer.load(file)
31
+ def self.load(file)
34
32
  raise "Can't open #{file}." if file.nil? || !File.exist?(file)
35
33
  loader = ReVIEW::YAMLLoader.new
36
34
  loader.load_file(file)
@@ -40,52 +38,48 @@ module EPUBMaker
40
38
  def load(file)
41
39
  raise "Can't open #{file}." if file.nil? || !File.exist?(file)
42
40
  loader = ReVIEW::YAMLLoader.new
43
- merge_params(@params.deep_merge(loader.load_file(file)))
41
+ merge_config(@config.deep_merge(loader.load_file(file)))
44
42
  end
45
43
 
46
44
  # Construct producer object.
47
- # +params+ takes initial parameter hash. This parameters can be overriden by EPUBMaker#load or EPUBMaker#merge_params.
45
+ # +config+ takes initial parameter hash. This parameters can be overriden by EPUBMaker#load or EPUBMaker#merge_config.
48
46
  # +version+ takes EPUB version (default is 2).
49
- def initialize(params=nil, version=nil)
47
+ def initialize(config = nil, version = nil)
50
48
  @contents = []
51
- @params = ReVIEW::Configure.new
49
+ @config = ReVIEW::Configure.new
52
50
  @epub = nil
53
- @params["epubversion"] = version unless version.nil?
51
+ @config['epubversion'] = version unless version.nil?
54
52
  @res = ReVIEW::I18n
55
53
 
56
- if params
57
- merge_params(params)
58
- end
54
+ merge_config(config) if config
59
55
  end
60
56
 
61
57
  def coverimage
62
- return nil unless params["coverimage"]
58
+ return nil unless config['coverimage']
63
59
  @contents.each do |item|
64
- if item.media.start_with?('image') && item.file =~ /#{params["coverimage"]}\Z/ # /
60
+ if item.media.start_with?('image') && item.file =~ /#{config['coverimage']}\Z/
65
61
  return item.file
66
62
  end
67
63
  end
68
- return nil
64
+ nil
69
65
  end
70
66
 
71
- # Update parameters by merging from new parameter hash +params+.
72
- def merge_params(params)
73
- @params.deep_merge!(params)
67
+ # Update parameters by merging from new parameter hash +config+.
68
+ def merge_config(config)
69
+ @config.deep_merge!(config)
74
70
  complement
75
71
 
76
- unless @params["epubversion"].nil?
77
- case @params["epubversion"].to_i
72
+ unless @config['epubversion'].nil?
73
+ case @config['epubversion'].to_i
78
74
  when 2
79
75
  @epub = EPUBMaker::EPUBv2.new(self)
80
76
  when 3
81
77
  @epub = EPUBMaker::EPUBv3.new(self)
82
78
  else
83
- raise "Invalid EPUB version (#{@params["epubversion"]}.)"
79
+ raise "Invalid EPUB version (#{@config['epubversion']}.)"
84
80
  end
85
81
  end
86
- if params["language"]
87
- ReVIEW::I18n.locale = params["language"]
88
- end
82
+ ReVIEW::I18n.locale = config['language'] if config['language']
89
83
  support_legacy_maker
90
84
  end
91
85
 
@@ -103,7 +97,7 @@ module EPUBMaker
103
97
 
104
98
  # Write ncx file to IO object +wobj+. +indentarray+ defines prefix
105
99
  # string for each level.
106
- def ncx(wobj, indentarray=[])
100
+ def ncx(wobj, indentarray = [])
107
101
  s = @epub.ncx(indentarray)
108
102
  wobj.puts s if !s.nil? && !wobj.nil?
109
103
  end
@@ -115,10 +109,10 @@ module EPUBMaker
115
109
  end
116
110
 
117
111
  # Write cover file to IO object +wobj+.
118
- # If Producer#params["coverimage"] is defined, it will be used for
112
+ # If Producer#config["coverimage"] is defined, it will be used for
119
113
  # the cover image.
120
114
  def cover(wobj)
121
- type = (@params["epubversion"] >= 3) ? "cover" : nil
115
+ type = @config['epubversion'] >= 3 ? 'cover' : nil
122
116
  s = @epub.cover(type)
123
117
  wobj.puts s if !s.nil? && !wobj.nil?
124
118
  end
@@ -143,22 +137,20 @@ module EPUBMaker
143
137
 
144
138
  # Add informations of figure files in +path+ to contents array.
145
139
  # +base+ defines a string to remove from path name.
146
- def import_imageinfo(path, base=nil, allow_exts=nil)
140
+ def import_imageinfo(path, base = nil, allow_exts = nil)
147
141
  return nil unless File.exist?(path)
148
- allow_exts = @params["image_ext"] if allow_exts.nil?
142
+ allow_exts = @config['image_ext'] if allow_exts.nil?
149
143
  Dir.foreach(path) do |f|
150
144
  next if f.start_with?('.')
151
- if f =~ /\.(#{allow_exts.join("|")})\Z/i
152
- path.chop! if path =~ /\/\Z/
145
+ if f =~ /\.(#{allow_exts.join('|')})\Z/i
146
+ path.chop! if path =~ %r{/\Z}
153
147
  if base.nil?
154
- @contents.push(EPUBMaker::Content.new({"file" => "#{path}/#{f}"}))
148
+ @contents.push(EPUBMaker::Content.new('file' => "#{path}/#{f}"))
155
149
  else
156
- @contents.push(EPUBMaker::Content.new({"file" => "#{path.sub(base + "/", '')}/#{f}"}))
150
+ @contents.push(EPUBMaker::Content.new('file' => "#{path.sub(base + '/', '')}/#{f}"))
157
151
  end
158
152
  end
159
- if FileTest.directory?("#{path}/#{f}")
160
- import_imageinfo("#{path}/#{f}", base)
161
- end
153
+ import_imageinfo("#{path}/#{f}", base) if FileTest.directory?("#{path}/#{f}")
162
154
  end
163
155
  end
164
156
 
@@ -167,12 +159,12 @@ module EPUBMaker
167
159
  # Produce EPUB file +epubfile+.
168
160
  # +basedir+ points the directory has contents (default: current directory.)
169
161
  # +tmpdir+ defines temporary directory.
170
- def produce(epubfile, basedir=nil, tmpdir=nil)
162
+ def produce(epubfile, basedir = nil, tmpdir = nil)
171
163
  current = Dir.pwd
172
164
  basedir = current if basedir.nil?
173
165
 
174
166
  new_tmpdir = tmpdir.nil? ? Dir.mktmpdir : tmpdir
175
- epubfile = "#{current}/#{epubfile}" if epubfile !~ /\A\// # /
167
+ epubfile = "#{current}/#{epubfile}" if epubfile !~ %r{\A/}
176
168
 
177
169
  # FIXME: error check
178
170
  File.unlink(epubfile) if File.exist?(epubfile)
@@ -185,115 +177,110 @@ module EPUBMaker
185
177
  end
186
178
 
187
179
  def call_hook(filename, *params)
188
- if !filename.nil? && File.exist?(filename) && FileTest.executable?(filename)
189
- if ENV["REVIEW_SAFE_MODE"].to_i & 1 > 0
190
- warn "hook is prohibited in safe mode. ignored."
191
- else
192
- system(filename, *params)
193
- end
180
+ return if !filename.present? || !File.exist?(filename) || !FileTest.executable?(filename)
181
+ if ENV['REVIEW_SAFE_MODE'].to_i & 1 > 0
182
+ warn 'hook is prohibited in safe mode. ignored.'
183
+ else
184
+ system(filename, *params)
194
185
  end
195
186
  end
196
187
 
197
188
  def isbn_hyphen
198
- str = @params["isbn"].to_s
189
+ str = @config['isbn'].to_s
199
190
 
200
- if str =~ /\A\d{10}\Z/
201
- "#{str[0..0]}-#{str[1..5]}-#{str[6..8]}-#{str[9..9]}"
202
- elsif str =~ /\A\d{13}\Z/
203
- "#{str[0..2]}-#{str[3..3]}-#{str[4..8]}-#{str[9..11]}-#{str[12..12]}"
204
- else
205
- nil
206
- end
191
+ return "#{str[0..0]}-#{str[1..5]}-#{str[6..8]}-#{str[9..9]}" if str =~ /\A\d{10}\Z/
192
+ return "#{str[0..2]}-#{str[3..3]}-#{str[4..8]}-#{str[9..11]}-#{str[12..12]}" if str =~ /\A\d{13}\Z/
193
+ nil
207
194
  end
208
195
 
209
196
  private
210
197
 
211
198
  # Complement parameters.
212
199
  def complement
213
- @params["htmlext"] = "html" if @params["htmlext"].nil?
214
- defaults = ReVIEW::Configure.new.merge({
215
- "language" => "ja",
216
- "date" => Time.now.strftime("%Y-%m-%d"),
217
- "modified" => Time.now.strftime("%Y-%02m-%02dT%02H:%02M:%02SZ"),
218
- "isbn" => nil,
219
- "toclevel" => 2,
220
- "stylesheet" => [],
221
- "epubversion" => 3,
222
- "htmlversion" => 5,
223
- "secnolevel" => 2,
224
- "pre_secnolevel" => 0,
225
- "post_secnolevel" => 1,
226
- "part_secnolevel" => 1,
227
- "titlepage" => nil,
228
- "titlefile" => nil,
229
- "originaltitlefile" => nil,
230
- "profile" => nil,
231
- "colophon" => nil,
232
- "colophon_order" => %w[aut csl trl dsr ill edt pbl prt pht],
233
- "direction" => "ltr",
234
- "epubmaker" => {
235
- "flattoc" => nil,
236
- "flattocindent" => true,
237
- "ncx_indent" => [],
238
- "zip_stage1" => "zip -0Xq",
239
- "zip_stage2" => "zip -Xr9Dq",
240
- "zip_addpath" => nil,
241
- "hook_beforeprocess" => nil,
242
- "hook_afterfrontmatter" => nil,
243
- "hook_afterbody" => nil,
244
- "hook_afterbackmatter" => nil,
245
- "hook_aftercopyimage" => nil,
246
- "hook_prepack" => nil,
247
- "rename_for_legacy" => nil,
248
- "verify_target_images" => nil,
249
- "force_include_images" => [],
250
- "cover_linear" => nil,
251
- },
252
- "externallink" => true,
253
- "imagedir" => "images",
254
- "fontdir" => "fonts",
255
- "image_ext" => %w(png gif jpg jpeg svg ttf woff otf),
256
- "font_ext" => %w(ttf woff otf),
257
- })
258
-
259
- @params = defaults.deep_merge(@params)
260
- @params["title"] = @params["booktitle"] unless @params["title"]
200
+ @config['htmlext'] = 'html' if @config['htmlext'].nil?
201
+ defaults = ReVIEW::Configure.new.merge(
202
+ 'language' => 'ja',
203
+ 'date' => Time.now.strftime('%Y-%m-%d'),
204
+ 'modified' => Time.now.strftime('%Y-%02m-%02dT%02H:%02M:%02SZ'),
205
+ 'isbn' => nil,
206
+ 'toclevel' => 2,
207
+ 'stylesheet' => [],
208
+ 'epubversion' => 3,
209
+ 'htmlversion' => 5,
210
+ 'secnolevel' => 2,
211
+ 'pre_secnolevel' => 0,
212
+ 'post_secnolevel' => 1,
213
+ 'part_secnolevel' => 1,
214
+ 'titlepage' => true,
215
+ 'titlefile' => nil,
216
+ 'originaltitlefile' => nil,
217
+ 'profile' => nil,
218
+ 'colophon' => nil,
219
+ 'colophon_order' => %w[aut csl trl dsr ill edt pbl prt pht],
220
+ 'direction' => 'ltr',
221
+ 'epubmaker' => {
222
+ 'flattoc' => nil,
223
+ 'flattocindent' => true,
224
+ 'ncx_indent' => [],
225
+ 'zip_stage1' => 'zip -0Xq',
226
+ 'zip_stage2' => 'zip -Xr9Dq',
227
+ 'zip_addpath' => nil,
228
+ 'hook_beforeprocess' => nil,
229
+ 'hook_afterfrontmatter' => nil,
230
+ 'hook_afterbody' => nil,
231
+ 'hook_afterbackmatter' => nil,
232
+ 'hook_aftercopyimage' => nil,
233
+ 'hook_prepack' => nil,
234
+ 'rename_for_legacy' => nil,
235
+ 'verify_target_images' => nil,
236
+ 'force_include_images' => [],
237
+ 'cover_linear' => nil
238
+ },
239
+ 'externallink' => true,
240
+ 'imagedir' => 'images',
241
+ 'fontdir' => 'fonts',
242
+ 'image_ext' => %w[png gif jpg jpeg svg ttf woff otf],
243
+ 'image_maxpixels' => 4_000_000,
244
+ 'font_ext' => %w[ttf woff otf]
245
+ )
246
+
247
+ @config = defaults.deep_merge(@config)
248
+ @config['title'] = @config['booktitle'] unless @config['title']
261
249
 
262
250
  deprecated_parameters = {
263
- "ncxindent" => "epubmaker:ncxindent",
264
- "flattoc" => "epubmaker:flattoc",
265
- "flattocindent" => "epubmaker:flattocindent",
266
- "hook_beforeprocess" => "epubmaker:hook_beforeprocess",
267
- "hook_afterfrontmatter" => "epubmaker:hook_afterfrontmatter",
268
- "hook_afterbody" => "epubmaker:hook_afterbody",
269
- "hook_afterbackmatter" => "epubmaker:hook_afterbackmatter",
270
- "hook_aftercopyimage" => "epubmaker:hook_aftercopyimage",
271
- "hook_prepack" => "epubmaker:hook_prepack",
272
- "rename_for_legacy" => "epubmaker:rename_for_legacy",
273
- "zip_stage1" => "epubmaker:zip_stage1",
274
- "zip_stage2" => "epubmaker:zip_stage2",
275
- "zip_addpath" => "epubmaker:zip_addpath",
276
- "verify_target_images" => "epubmaker:verify_target_images",
277
- "force_include_images" => "epubmaker:force_include_images",
278
- "cover_linear" => "epubmaker:cover_linear",
251
+ 'ncxindent' => 'epubmaker:ncxindent',
252
+ 'flattoc' => 'epubmaker:flattoc',
253
+ 'flattocindent' => 'epubmaker:flattocindent',
254
+ 'hook_beforeprocess' => 'epubmaker:hook_beforeprocess',
255
+ 'hook_afterfrontmatter' => 'epubmaker:hook_afterfrontmatter',
256
+ 'hook_afterbody' => 'epubmaker:hook_afterbody',
257
+ 'hook_afterbackmatter' => 'epubmaker:hook_afterbackmatter',
258
+ 'hook_aftercopyimage' => 'epubmaker:hook_aftercopyimage',
259
+ 'hook_prepack' => 'epubmaker:hook_prepack',
260
+ 'rename_for_legacy' => 'epubmaker:rename_for_legacy',
261
+ 'zip_stage1' => 'epubmaker:zip_stage1',
262
+ 'zip_stage2' => 'epubmaker:zip_stage2',
263
+ 'zip_addpath' => 'epubmaker:zip_addpath',
264
+ 'verify_target_images' => 'epubmaker:verify_target_images',
265
+ 'force_include_images' => 'epubmaker:force_include_images',
266
+ 'cover_linear' => 'epubmaker:cover_linear'
279
267
  }
280
268
 
281
269
  deprecated_parameters.each_pair do |k, v|
282
- unless @params[k].nil?
283
- sa = v.split(":", 2)
284
- warn "Parameter #{k} is deprecated. Use:\n#{sa[0]}:\n #{sa[1]}: ...\n\n"
285
- @params[sa[0]][sa[1]] = @params[k]
286
- @params.delete(k)
287
- end
270
+ next if @config[k].nil?
271
+ sa = v.split(':', 2)
272
+ warn "Parameter #{k} is deprecated. Use:\n#{sa[0]}:\n #{sa[1]}: ...\n\n"
273
+ @config[sa[0]][sa[1]] = @config[k]
274
+ @config.delete(k)
288
275
  end
289
276
 
290
- @params["htmlversion"] = 5 if @params["epubversion"] >= 3
277
+ @config['htmlversion'] = 5 if @config['epubversion'] >= 3
291
278
 
292
- @params.maker = "epubmaker"
293
- @params["cover"] = "#{@params["bookname"]}.#{@params["htmlext"]}" unless @params["cover"]
279
+ @config.maker = 'epubmaker'
280
+ @config['cover'] = "#{@config['bookname']}.#{@config['htmlext']}" unless @config['cover']
294
281
 
295
282
  %w[bookname title].each do |k|
296
- raise "Key #{k} must have a value. Abort." unless @params[k]
283
+ raise "Key #{k} must have a value. Abort." unless @config[k]
297
284
  end
298
285
  # array
299
286
  %w[subject aut
@@ -302,8 +289,8 @@ module EPUBMaker
302
289
  adp ann arr art asn aut aqt aft aui ant bkp clb cmm dsr edt
303
290
  ill lyr mdc mus nrt oth pht pbl prt red rev spn ths trc trl
304
291
  stylesheet rights].each do |item|
305
- next unless @params[item]
306
- @params[item] = [@params[item]] if @params[item].kind_of?(String)
292
+ next unless @config[item]
293
+ @config[item] = [@config[item]] if @config[item].is_a?(String)
307
294
  end
308
295
  # optional
309
296
  # type, format, identifier, source, relation, coverpage, aut
@@ -311,36 +298,36 @@ module EPUBMaker
311
298
 
312
299
  def support_legacy_maker
313
300
  # legacy review-epubmaker support
314
- if @params["flag_legacy_coverfile"].nil? && !@params["coverfile"].nil? && File.exist?(@params["coverfile"])
315
- @params["cover"] = "#{@params["bookname"]}-cover.#{@params["htmlext"]}"
316
- @epub.legacy_cover_and_title_file(@params["coverfile"], @params["cover"])
317
- @params["flag_legacy_coverfile"] = true
318
- warn "Parameter 'coverfile' is obsolete. Please use 'cover' and make complete html file with header and footer."
301
+ if @config['flag_legacy_coverfile'].nil? && !@config['coverfile'].nil? && File.exist?(@config['coverfile'])
302
+ @config['cover'] = "#{@config['bookname']}-cover.#{@config['htmlext']}"
303
+ @epub.legacy_cover_and_title_file(@config['coverfile'], @config['cover'])
304
+ @config['flag_legacy_coverfile'] = true
305
+ warn %Q(Parameter 'coverfile' is obsolete. Please use 'cover' and make complete html file with header and footer.)
319
306
  end
320
307
 
321
- if @params["flag_legacy_titlepagefile"].nil? && !@params["titlepagefile"].nil? && File.exist?(@params["titlepagefile"])
322
- @params["titlefile"] = "#{@params["bookname"]}-title.#{@params["htmlext"]}"
323
- @params["titlepage"] = true
324
- @epub.legacy_cover_and_title_file(@params["titlepagefile"], @params["titlefile"])
325
- @params["flag_legacy_titlepagefile"] = true
326
- warn "Parameter 'titlepagefile' is obsolete. Please use 'titlefile' and make complete html file with header and footer."
308
+ if @config['flag_legacy_titlepagefile'].nil? && !@config['titlepagefile'].nil? && File.exist?(@config['titlepagefile'])
309
+ @config['titlefile'] = "#{@config['bookname']}-title.#{@config['htmlext']}"
310
+ @config['titlepage'] = true
311
+ @epub.legacy_cover_and_title_file(@config['titlepagefile'], @config['titlefile'])
312
+ @config['flag_legacy_titlepagefile'] = true
313
+ warn %Q(Parameter 'titlepagefile' is obsolete. Please use 'titlefile' and make complete html file with header and footer.)
327
314
  end
328
315
 
329
- if @params["flag_legacy_backcoverfile"].nil? && !@params["backcoverfile"].nil? && File.exist?(@params["backcoverfile"])
330
- @params["backcover"] = "#{@params["bookname"]}-backcover.#{@params["htmlext"]}"
331
- @epub.legacy_cover_and_title_file(@params["backcoverfile"], @params["backcover"])
332
- @params["flag_legacy_backcoverfile"] = true
333
- warn "Parameter 'backcoverfile' is obsolete. Please use 'backcover' and make complete html file with header and footer."
316
+ if @config['flag_legacy_backcoverfile'].nil? && !@config['backcoverfile'].nil? && File.exist?(@config['backcoverfile'])
317
+ @config['backcover'] = "#{@config['bookname']}-backcover.#{@config['htmlext']}"
318
+ @epub.legacy_cover_and_title_file(@config['backcoverfile'], @config['backcover'])
319
+ @config['flag_legacy_backcoverfile'] = true
320
+ warn %Q(Parameter 'backcoverfile' is obsolete. Please use 'backcover' and make complete html file with header and footer.)
334
321
  end
335
322
 
336
- if @params["flag_legacy_pubhistory"].nil? && !@params["pubhistory"].nil?
337
- @params["history"] = [[]]
338
- @params["pubhistory"].split("\n").each do |date|
339
- @params["history"][0].push(date.sub(/(\d+)年(\d+)月(\d+)日/, '\1-\2-\3'))
340
- end
341
- @params["flag_legacy_pubhistory"] = true
342
- warn "Parameter 'pubhistory' is obsolete. Please use 'history' array."
323
+ if @config['flag_legacy_pubhistory'].nil? && @config['pubhistory']
324
+ @config['history'] = [[]]
325
+ @config['pubhistory'].split("\n").each { |date| @config['history'][0].push(date.sub(/(\d+)年(\d+)月(\d+)日/, '\1-\2-\3')) }
326
+ @config['flag_legacy_pubhistory'] = true
327
+ warn %Q(Parameter 'pubhistory' is obsolete. Please use 'history' array.)
343
328
  end
329
+
330
+ true
344
331
  end
345
332
  end
346
333
  end
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  # Copyright (c) 2010-2017 Kenshi Muto and Masayoshi Takahashi
4
2
  #
5
3
  # This program is free software.
@@ -13,21 +11,19 @@ begin
13
11
  require 'zip'
14
12
  rescue LoadError
15
13
  ## I cannot find rubyzip library, so I use external zip command.
16
- warn "rubyzip not found, so use external zip command"
14
+ warn 'rubyzip not found, so use external zip command'
17
15
  end
18
16
 
19
17
  module EPUBMaker
20
-
21
18
  ##
22
19
  # Export into zip file for EPUB producer.
23
20
  #
24
21
  class ZipExporter
25
-
26
22
  attr_reader :tmpdir
27
23
 
28
- def initialize(tmpdir, params)
24
+ def initialize(tmpdir, config)
29
25
  @tmpdir = tmpdir
30
- @params = params
26
+ @config = config
31
27
  end
32
28
 
33
29
  def export_zip(epubfile)
@@ -39,43 +35,42 @@ module EPUBMaker
39
35
  end
40
36
 
41
37
  def export_zip_extcmd(epubfile)
42
- stage1 = @params["epubmaker"]["zip_stage1"].to_s.split
43
- path1 = stage1[0] || "zip"
44
- opt1 = stage1[1] || "-0Xq"
45
- stage2 = @params["epubmaker"]["zip_stage2"].to_s.split
46
- path2 = stage2[0] || "zip"
47
- opt2 = stage2[1] || "-Xr9Dq"
38
+ stage1 = @config['epubmaker']['zip_stage1'].to_s.split
39
+ path1 = stage1[0] || 'zip'
40
+ opt1 = stage1[1] || '-0Xq'
41
+ stage2 = @config['epubmaker']['zip_stage2'].to_s.split
42
+ path2 = stage2[0] || 'zip'
43
+ opt2 = stage2[1] || '-Xr9Dq'
48
44
 
49
- Dir.chdir(tmpdir) do |d|
50
- system(path1, opt1, epubfile, "mimetype")
51
- addpath = @params["epubmaker"]["zip_addpath"]
45
+ Dir.chdir(tmpdir) do
46
+ system(path1, opt1, epubfile, 'mimetype')
47
+ addpath = @config['epubmaker']['zip_addpath']
52
48
  if addpath
53
- system(path2, opt2, epubfile, "META-INF", "OEBPS", addpath)
49
+ system(path2, opt2, epubfile, 'META-INF', 'OEBPS', addpath)
54
50
  else
55
- system(path2, opt2, epubfile, "META-INF", "OEBPS")
51
+ system(path2, opt2, epubfile, 'META-INF', 'OEBPS')
56
52
  end
57
53
  end
58
54
  end
59
55
 
60
56
  def export_zip_rubyzip(epubfile)
61
- Dir.chdir(tmpdir) do |d|
57
+ Dir.chdir(tmpdir) do
62
58
  Zip::OutputStream.open(epubfile) do |epub|
63
59
  root_pathname = Pathname.new(tmpdir)
64
- # relpath = Pathname.new(File.join(tmpdir,'mimetype')).relative_path_from(root_pathname)
65
60
  epub.put_next_entry('mimetype', nil, nil, Zip::Entry::STORED)
66
- epub << "application/epub+zip"
61
+ epub << 'application/epub+zip'
67
62
 
68
- export_zip_rubyzip_addpath(epub, File.join(tmpdir,'META-INF'), root_pathname)
69
- export_zip_rubyzip_addpath(epub, File.join(tmpdir,'OEBPS'), root_pathname)
70
- if @params["zip_addpath"].present?
71
- export_zip_rubyzip_addpath(epub, File.join(tmpdir, @params["zip_addpath"]), root_pathname)
63
+ export_zip_rubyzip_addpath(epub, File.join(tmpdir, 'META-INF'), root_pathname)
64
+ export_zip_rubyzip_addpath(epub, File.join(tmpdir, 'OEBPS'), root_pathname)
65
+ if @config['zip_addpath'].present?
66
+ export_zip_rubyzip_addpath(epub, File.join(tmpdir, @config['zip_addpath']), root_pathname)
72
67
  end
73
68
  end
74
69
  end
75
70
  end
76
71
 
77
72
  def export_zip_rubyzip_addpath(epub, dirname, rootdir)
78
- Dir[File.join(dirname,'**','**')].each do |path|
73
+ Dir[File.join(dirname, '**', '**')].each do |path|
79
74
  next if File.directory?(path)
80
75
  relpath = Pathname.new(path).relative_path_from(rootdir)
81
76
  epub.put_next_entry(relpath)