review 5.0.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (173) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-tex.yml +35 -0
  3. data/.github/workflows/ruby-win.yml +8 -4
  4. data/.github/workflows/ruby.yml +6 -2
  5. data/.rubocop.yml +24 -9
  6. data/NEWS.ja.md +215 -0
  7. data/NEWS.md +215 -1
  8. data/README.md +7 -6
  9. data/Rakefile +7 -2
  10. data/bin/review +2 -4
  11. data/bin/review-catalog-converter +3 -3
  12. data/bin/review-check +6 -8
  13. data/bin/review-checkdep +1 -4
  14. data/bin/review-compile +10 -20
  15. data/bin/review-epub2html +1 -4
  16. data/bin/review-epubmaker +3 -4
  17. data/bin/review-idgxmlmaker +1 -3
  18. data/bin/review-index +11 -5
  19. data/bin/review-init +1 -4
  20. data/bin/review-pdfmaker +1 -3
  21. data/bin/review-preproc +30 -38
  22. data/bin/review-textmaker +1 -3
  23. data/bin/review-update +1 -4
  24. data/bin/review-validate +3 -3
  25. data/bin/review-vol +1 -4
  26. data/bin/review-webmaker +1 -3
  27. data/doc/config.yml.sample +23 -5
  28. data/doc/config.yml.sample-simple +1 -1
  29. data/doc/format.ja.md +49 -12
  30. data/doc/format.md +52 -12
  31. data/doc/quickstart.ja.md +11 -1
  32. data/doc/quickstart.md +11 -2
  33. data/doc/writing_vertical.ja.md +6 -0
  34. data/lib/review/book/base.rb +4 -0
  35. data/lib/review/book/book_unit.rb +15 -2
  36. data/lib/review/book/chapter.rb +3 -0
  37. data/lib/review/book/index.rb +5 -1
  38. data/lib/review/book/volume.rb +1 -0
  39. data/lib/review/builder.rb +90 -54
  40. data/lib/review/call_hook.rb +20 -0
  41. data/lib/review/catalog.rb +2 -0
  42. data/lib/review/compiler.rb +88 -52
  43. data/lib/review/configure.rb +64 -7
  44. data/lib/review/epubmaker/content.rb +113 -0
  45. data/lib/review/epubmaker/epubcommon.rb +372 -0
  46. data/lib/review/epubmaker/epubv2.rb +178 -0
  47. data/lib/review/epubmaker/epubv3.rb +231 -0
  48. data/lib/review/epubmaker/producer.rb +167 -0
  49. data/lib/review/epubmaker/reviewheaderlistener.rb +12 -2
  50. data/lib/review/epubmaker/zip_exporter.rb +84 -0
  51. data/lib/review/epubmaker.rb +114 -129
  52. data/lib/review/exception.rb +13 -0
  53. data/lib/review/htmlbuilder.rb +109 -67
  54. data/lib/review/htmlutils.rb +1 -1
  55. data/lib/review/i18n.rb +1 -0
  56. data/lib/review/i18n.yml +6 -0
  57. data/lib/review/idgxmlbuilder.rb +72 -48
  58. data/lib/review/idgxmlmaker.rb +15 -14
  59. data/lib/review/img_math.rb +239 -0
  60. data/lib/review/index_builder.rb +90 -32
  61. data/lib/review/init.rb +4 -4
  62. data/lib/review/latexbox.rb +58 -0
  63. data/lib/review/latexbuilder.rb +79 -58
  64. data/lib/review/latexutils.rb +9 -1
  65. data/lib/review/lineinput.rb +112 -2
  66. data/lib/review/loggable.rb +27 -0
  67. data/lib/review/logger.rb +89 -2
  68. data/lib/review/makerhelper.rb +7 -206
  69. data/lib/review/markdownbuilder.rb +44 -4
  70. data/lib/review/pdfmaker.rb +70 -51
  71. data/lib/review/plaintextbuilder.rb +20 -11
  72. data/lib/review/preprocessor/directive.rb +35 -0
  73. data/lib/review/preprocessor/line.rb +34 -0
  74. data/lib/review/preprocessor/repository.rb +177 -0
  75. data/lib/review/preprocessor.rb +105 -301
  76. data/lib/review/rstbuilder.rb +13 -4
  77. data/lib/review/sec_counter.rb +1 -0
  78. data/lib/review/template.rb +11 -1
  79. data/lib/review/textmaker.rb +23 -20
  80. data/lib/review/textutils.rb +10 -17
  81. data/lib/review/tocprinter.rb +93 -71
  82. data/lib/review/topbuilder.rb +44 -19
  83. data/lib/review/update.rb +5 -6
  84. data/lib/review/version.rb +1 -1
  85. data/lib/review/volumeprinter.rb +11 -12
  86. data/lib/review/webmaker.rb +31 -27
  87. data/lib/review/webtocprinter.rb +10 -9
  88. data/lib/review/yamlloader.rb +2 -1
  89. data/lib/review.rb +1 -1
  90. data/review.gemspec +5 -3
  91. data/samples/sample-book/src/config-epub2.yml +1 -1
  92. data/samples/sample-book/src/config.yml +1 -1
  93. data/samples/sample-book/src/lib/tasks/review.rake +19 -1
  94. data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +2 -1
  95. data/samples/syntax-book/ch01.re +1 -1
  96. data/samples/syntax-book/ch02.re +30 -6
  97. data/samples/syntax-book/ch03.re +1 -1
  98. data/samples/syntax-book/images/img3-2.png +0 -0
  99. data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +2 -1
  100. data/templates/html/_colophon.html.erb +23 -0
  101. data/templates/html/_colophon_history.html.erb +9 -0
  102. data/templates/html/_cover.html.erb +10 -0
  103. data/templates/html/_part_body.html.erb +6 -0
  104. data/templates/html/_titlepage.html.erb +20 -0
  105. data/templates/html/layout-html5.html.erb +6 -0
  106. data/templates/html/layout-xhtml1.html.erb +6 -0
  107. data/templates/latex/config.erb +11 -0
  108. data/templates/latex/review-jlreq/review-base.sty +7 -9
  109. data/templates/latex/review-jlreq/review-jlreq.cls +48 -6
  110. data/templates/latex/review-jlreq/review-style.sty +6 -1
  111. data/templates/latex/review-jlreq/review-tcbox.sty +348 -0
  112. data/templates/latex/review-jlreq/reviewmacro.sty +5 -0
  113. data/templates/latex/review-jsbook/review-base.sty +13 -9
  114. data/templates/latex/review-jsbook/review-jsbook.cls +41 -6
  115. data/templates/latex/review-jsbook/review-style.sty +6 -1
  116. data/templates/latex/review-jsbook/review-tcbox.sty +348 -0
  117. data/templates/latex/review-jsbook/reviewmacro.sty +5 -0
  118. data/templates/opf/epubv2.opf.erb +7 -7
  119. data/templates/opf/epubv3.opf.erb +7 -7
  120. data/templates/opf/opf_manifest_epubv2.opf.erb +10 -0
  121. data/templates/opf/opf_manifest_epubv3.opf.erb +10 -0
  122. data/templates/opf/opf_metainfo_epubv2.opf.erb +17 -0
  123. data/templates/opf/opf_metainfo_epubv3.opf.erb +49 -0
  124. data/templates/opf/opf_tocx_epubv2.opf.erb +9 -0
  125. data/templates/opf/opf_tocx_epubv3.opf.erb +17 -0
  126. data/templates/web/html/layout-html5.html.erb +6 -5
  127. data/templates/web/html/layout-xhtml1.html.erb +6 -0
  128. data/test/assets/header_listener.html +35 -0
  129. data/test/assets/img_math/img1.png +0 -0
  130. data/test/assets/img_math/img2.png +0 -0
  131. data/test/assets/img_math/img3.png +0 -0
  132. data/test/assets/syntax_book_index_detail.txt +60 -0
  133. data/test/assets/test_template.tex +7 -1
  134. data/test/assets/test_template_backmatter.tex +7 -1
  135. data/test/run_test.rb +1 -1
  136. data/test/test_book_chapter.rb +27 -4
  137. data/test/test_builder.rb +10 -8
  138. data/test/test_catalog_converter_cmd.rb +1 -1
  139. data/test/test_epub3maker.rb +168 -124
  140. data/test/test_epubmaker.rb +248 -131
  141. data/test/test_epubmaker_cmd.rb +15 -4
  142. data/test/test_helper.rb +5 -4
  143. data/test/test_htmlbuilder.rb +170 -31
  144. data/test/test_idgxmlbuilder.rb +44 -23
  145. data/test/test_idgxmlmaker_cmd.rb +7 -3
  146. data/test/test_img_math.rb +111 -0
  147. data/test/test_index.rb +30 -4
  148. data/test/test_indexbuilder.rb +5 -5
  149. data/test/test_latexbuilder.rb +151 -26
  150. data/test/test_latexbuilder_v2.rb +18 -10
  151. data/test/test_lineinput.rb +20 -93
  152. data/test/test_markdownbuilder.rb +42 -0
  153. data/test/test_pdfmaker.rb +90 -0
  154. data/test/test_pdfmaker_cmd.rb +2 -2
  155. data/test/test_plaintextbuilder.rb +56 -40
  156. data/test/test_preprocessor.rb +188 -1
  157. data/test/test_reviewheaderlistener.rb +49 -0
  158. data/test/test_rstbuilder.rb +13 -0
  159. data/test/test_template.rb +12 -2
  160. data/test/test_textmaker_cmd.rb +5 -1
  161. data/test/test_tocprinter.rb +46 -0
  162. data/test/test_topbuilder.rb +50 -19
  163. data/test/test_update.rb +34 -34
  164. data/test/test_zip_exporter.rb +5 -6
  165. metadata +95 -17
  166. data/lib/epubmaker/content.rb +0 -111
  167. data/lib/epubmaker/epubcommon.rb +0 -449
  168. data/lib/epubmaker/epubv2.rb +0 -142
  169. data/lib/epubmaker/epubv3.rb +0 -235
  170. data/lib/epubmaker/producer.rb +0 -375
  171. data/lib/epubmaker/zip_exporter.rb +0 -81
  172. data/lib/epubmaker.rb +0 -23
  173. data/lib/lineinput.rb +0 -155
data/test/test_update.rb CHANGED
@@ -20,7 +20,7 @@ class UpdateTest < Test::Unit::TestCase
20
20
  def test_broken_yml
21
21
  File.write(File.join(@tmpdir, 'test.yml'), "invalid: [,]\n")
22
22
  io = StringIO.new
23
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
23
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
24
24
  @u.parse_ymls(@tmpdir)
25
25
  assert_match(/test\.yml is broken\. Ignored\./, io.string)
26
26
  end
@@ -62,7 +62,7 @@ EOT
62
62
  File.write(File.join(@tmpdir, fname), '')
63
63
 
64
64
  io = StringIO.new
65
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
65
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
66
66
  assert_raise(ApplicationError) { @u.check_old_catalogs(@tmpdir) }
67
67
  assert_match(/review-catalog-converter/, io.string)
68
68
 
@@ -75,7 +75,7 @@ EOT
75
75
  File.write(File.join(@tmpdir, 'layouts/layout.tex.erb'), '')
76
76
 
77
77
  io = StringIO.new
78
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
78
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
79
79
  assert_raise(ApplicationError) { @u.check_own_files(@tmpdir) }
80
80
  assert_match(%r{There is custom layouts/layout\.tex\.erb file}, io.string)
81
81
  end
@@ -84,7 +84,7 @@ EOT
84
84
  File.write(File.join(@tmpdir, 'review-ext.rb'), '')
85
85
 
86
86
  io = StringIO.new
87
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
87
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
88
88
  @u.check_own_files(@tmpdir)
89
89
  assert_match(/There is review-ext\.rb file/, io.string)
90
90
  end
@@ -93,7 +93,7 @@ EOT
93
93
  File.write(File.join(@tmpdir, 'config.yml'), "review_version: 2.0\n")
94
94
 
95
95
  io = StringIO.new
96
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
96
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
97
97
  @u.parse_ymls(@tmpdir)
98
98
  @u.update_version
99
99
  assert_match(/Update 'review_version' to '5.0'/, io.string)
@@ -102,7 +102,7 @@ EOT
102
102
  File.write(File.join(@tmpdir, 'config.yml'), "review_version: 3.0\n")
103
103
 
104
104
  io = StringIO.new
105
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
105
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
106
106
  @u.parse_ymls(@tmpdir)
107
107
  @u.update_version
108
108
  assert_match(/Update 'review_version' to '5.0'/, io.string)
@@ -113,7 +113,7 @@ EOT
113
113
  File.write(File.join(@tmpdir, 'config.yml'), "review_version: 5.0\n")
114
114
 
115
115
  io = StringIO.new
116
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
116
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
117
117
  @u.parse_ymls(@tmpdir)
118
118
  @u.update_version
119
119
  assert_equal '', io.string
@@ -124,7 +124,7 @@ EOT
124
124
  File.write(File.join(@tmpdir, 'config.yml'), "review_version: 99.0\n")
125
125
 
126
126
  io = StringIO.new
127
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
127
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
128
128
  @u.parse_ymls(@tmpdir)
129
129
  @u.update_version
130
130
  assert_match(/Update 'review_version' to '5.0'/, io.string)
@@ -133,7 +133,7 @@ EOT
133
133
 
134
134
  def test_update_rakefile
135
135
  io = StringIO.new
136
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
136
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
137
137
  @u.update_rakefile(@tmpdir)
138
138
  assert_equal '', io.string
139
139
  assert_equal true, File.exist?(File.join(@tmpdir, 'Rakefile'))
@@ -142,7 +142,7 @@ EOT
142
142
 
143
143
  def test_update_rakefile_same
144
144
  io = StringIO.new
145
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
145
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
146
146
  @u.update_rakefile(@tmpdir)
147
147
  @u.update_rakefile(@tmpdir)
148
148
  assert_equal '', io.string
@@ -155,7 +155,7 @@ EOT
155
155
  FileUtils.mkdir_p(File.join(@tmpdir, 'lib/tasks'))
156
156
  File.write(File.join(@tmpdir, 'lib/tasks/review.rake'), '')
157
157
  io = StringIO.new
158
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
158
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
159
159
  @u.update_rakefile(@tmpdir)
160
160
  assert_match(/Rakefile will be overridden with/, io.string)
161
161
  assert_match(%r{lib/tasks/review\.rake will be overridden}, io.string)
@@ -166,7 +166,7 @@ EOT
166
166
  def test_update_epub_version_older
167
167
  File.write(File.join(@tmpdir, 'config.yml'), "epubversion: 2\nhtmlversion: 4\n")
168
168
  io = StringIO.new
169
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
169
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
170
170
  @u.parse_ymls(@tmpdir)
171
171
  @u.update_epub_version
172
172
  assert_match(/Update 'epubversion'/, io.string)
@@ -181,7 +181,7 @@ EOT
181
181
  def test_update_epub_version_current
182
182
  File.write(File.join(@tmpdir, 'config.yml'), "epubversion: 3\nhtmlversion: 5\n")
183
183
  io = StringIO.new
184
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
184
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
185
185
  @u.parse_ymls(@tmpdir)
186
186
  @u.update_epub_version
187
187
  assert_equal '', io.string
@@ -195,7 +195,7 @@ EOT
195
195
  def test_update_epub_version_newer
196
196
  File.write(File.join(@tmpdir, 'config.yml'), "epubversion: 99\nhtmlversion: 99\n")
197
197
  io = StringIO.new
198
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
198
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
199
199
  @u.parse_ymls(@tmpdir)
200
200
  @u.update_epub_version
201
201
  assert_equal '', io.string
@@ -209,7 +209,7 @@ EOT
209
209
  def test_update_locale_older
210
210
  File.write(File.join(@tmpdir, 'locale.yml'), %Q(locale: en\nchapter_quote: "'%s'"\n))
211
211
  io = StringIO.new
212
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
212
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
213
213
  @u.parse_ymls(@tmpdir)
214
214
  @u.update_locale
215
215
  assert_match(/'chapter_quote' now takes 2 values/, io.string)
@@ -223,7 +223,7 @@ EOT
223
223
  def test_update_locale_current
224
224
  File.write(File.join(@tmpdir, 'locale.yml'), %Q(locale: en\nchapter_quote: "'%s...%s'"\n))
225
225
  io = StringIO.new
226
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
226
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
227
227
  @u.parse_ymls(@tmpdir)
228
228
  @u.update_locale
229
229
  assert_equal '', io.string
@@ -237,7 +237,7 @@ EOT
237
237
  def test_update_tex_parameters_jsbook_to_review_jsbook
238
238
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["jsbook", "a5j,11pt,landscape,oneside,twoside,vartwoside,onecolumn,twocolumn,titlepage,notitlepage,openright,openany,leqno,fleqn,disablejfam,draft,final,mingoth,winjis,jis,papersize,english,report,jslogo,nojslogo,uplatex,nomag,usemag,nomag*,tombow,tombo,mentuke,autodetect-engine"]\n))
239
239
  io = StringIO.new
240
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
240
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
241
241
  @u.parse_ymls(@tmpdir)
242
242
  @u.update_tex_parameters
243
243
  assert_match(/By default it is migrated to/, io.string)
@@ -251,7 +251,7 @@ EOT
251
251
  def test_update_tex_parameters_jsbook_to_review_jsbook_invalid
252
252
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["jsbook", "a5paper,invalid"]\n))
253
253
  io = StringIO.new
254
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
254
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
255
255
  @u.parse_ymls(@tmpdir)
256
256
  @u.update_tex_parameters
257
257
  assert_match(/couldn't be converted fully/, io.string)
@@ -265,7 +265,7 @@ EOT
265
265
  def test_update_tex_parameters_review_jsbook
266
266
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["review-jsbook", ""]\n))
267
267
  io = StringIO.new
268
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
268
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
269
269
  @u.parse_ymls(@tmpdir)
270
270
  @u.update_tex_parameters
271
271
  assert_equal '', io.string
@@ -278,7 +278,7 @@ EOT
278
278
  def test_update_tex_parameters_review_jsbook_obsoletekey
279
279
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["review-jsbook", "Q=13.5, H=20, W=40, L=34, head=20mm, gutter=20mm"]\n))
280
280
  io = StringIO.new
281
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
281
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
282
282
  @u.parse_ymls(@tmpdir)
283
283
  @u.update_tex_parameters
284
284
  cont = <<EOT
@@ -290,7 +290,7 @@ EOT
290
290
  def test_update_tex_parameters_review_jlreq
291
291
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["review-jlreq", ""]\n))
292
292
  io = StringIO.new
293
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
293
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
294
294
  @u.parse_ymls(@tmpdir)
295
295
  @u.update_tex_parameters
296
296
  assert_equal '', io.string
@@ -303,7 +303,7 @@ EOT
303
303
  def test_update_tex_parameters_review_jsbook_review_jlreq
304
304
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["review-jsbook", ""]\n))
305
305
  io = StringIO.new
306
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
306
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
307
307
  @u.parse_ymls(@tmpdir)
308
308
  @u.specified_template = 'review-jlreq'
309
309
  @u.update_tex_parameters
@@ -317,7 +317,7 @@ EOT
317
317
  def test_update_tex_parameters_unknownclass
318
318
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["unknown", ""]\n))
319
319
  io = StringIO.new
320
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
320
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
321
321
  @u.parse_ymls(@tmpdir)
322
322
  @u.update_tex_parameters
323
323
  assert_match(/unknown class/, io.string)
@@ -330,7 +330,7 @@ EOT
330
330
  def test_update_tex_parameters_jsbook_unknownclass
331
331
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["jsbook", ""]\n))
332
332
  io = StringIO.new
333
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
333
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
334
334
  @u.parse_ymls(@tmpdir)
335
335
  @u.specified_template = 'unknown'
336
336
  @u.update_tex_parameters
@@ -344,7 +344,7 @@ EOT
344
344
  def test_update_tex_parameters_jsbook_to_review_jlreq
345
345
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texdocumentclass: ["jsbook", "a5j,11pt,landscape,oneside,twoside,onecolumn,twocolumn,titlepage,notitlepage,openright,openany,leqno,fleqn,draft,final,report,uplatex,nomag,usemag,nomag*,tombow,tombo,mentuke,autodetect-engine"]\n))
346
346
  io = StringIO.new
347
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
347
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
348
348
  @u.parse_ymls(@tmpdir)
349
349
  @u.specified_template = 'review-jlreq'
350
350
  @u.update_tex_parameters
@@ -358,7 +358,7 @@ EOT
358
358
 
359
359
  def test_update_stys_new
360
360
  io = StringIO.new
361
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
361
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
362
362
  @u.update_tex_stys('review-jsbook', @tmpdir)
363
363
  assert_equal '', io.string
364
364
  assert_equal true, File.exist?(File.join(@tmpdir, 'sty/review-base.sty'))
@@ -368,7 +368,7 @@ EOT
368
368
 
369
369
  def test_update_stys_new_custom
370
370
  io = StringIO.new
371
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
371
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
372
372
  @u.update_tex_stys('review-jsbook', @tmpdir)
373
373
  assert_equal '', io.string
374
374
  File.write(File.join(@tmpdir, 'sty/review-custom.sty'), "% MY CUSTOM\n")
@@ -379,7 +379,7 @@ EOT
379
379
 
380
380
  def test_update_stys_modified
381
381
  io = StringIO.new
382
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
382
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
383
383
  @u.update_tex_stys('review-jsbook', @tmpdir)
384
384
  cont = File.read(File.join(@tmpdir, 'sty/review-base.sty'))
385
385
 
@@ -392,7 +392,7 @@ EOT
392
392
  def test_update_tex_command
393
393
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texcommand: "/Program Files/up-latex --shell-escape -v"\n))
394
394
  io = StringIO.new
395
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
395
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
396
396
  @u.parse_ymls(@tmpdir)
397
397
  @u.update_tex_command
398
398
  assert_match(/has options/, io.string)
@@ -406,7 +406,7 @@ EOT
406
406
  def test_update_tex_command_noopt
407
407
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texcommand: "/Program Files/up-latex"\n))
408
408
  io = StringIO.new
409
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
409
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
410
410
  @u.parse_ymls(@tmpdir)
411
411
  @u.update_tex_command
412
412
  assert_equal '', io.string
@@ -419,7 +419,7 @@ EOT
419
419
  def test_update_tex_command_withopt
420
420
  File.write(File.join(@tmpdir, 'config.yml'), %Q(texcommand: "/Program Files/up-latex --shell-escape -v"\ntexoptions: "-myopt"\n))
421
421
  io = StringIO.new
422
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
422
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
423
423
  @u.parse_ymls(@tmpdir)
424
424
  @u.update_tex_command
425
425
  assert_match(/has options/, io.string)
@@ -433,7 +433,7 @@ EOT
433
433
  def test_update_dvi_command
434
434
  File.write(File.join(@tmpdir, 'config.yml'), %Q(dvicommand: "/Program Files/dvi-pdfmx -q --quiet"\n))
435
435
  io = StringIO.new
436
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
436
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
437
437
  @u.parse_ymls(@tmpdir)
438
438
  @u.update_dvi_command
439
439
  assert_match(/has options/, io.string)
@@ -447,7 +447,7 @@ EOT
447
447
  def test_update_dvi_command_noopt
448
448
  File.write(File.join(@tmpdir, 'config.yml'), %Q(dvicommand: "/Program Files/dvi-pdfmx"\n))
449
449
  io = StringIO.new
450
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
450
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
451
451
  @u.parse_ymls(@tmpdir)
452
452
  @u.update_dvi_command
453
453
  assert_equal '', io.string
@@ -460,7 +460,7 @@ EOT
460
460
  def test_update_dvi_command_withopt
461
461
  File.write(File.join(@tmpdir, 'config.yml'), %Q(dvicommand: "/Program Files/dvi-pdfmx -q --quiet"\ndvioptions: "-myopt"\n))
462
462
  io = StringIO.new
463
- @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
463
+ @u.instance_eval { @logger = ReVIEW::Logger.new(io) }
464
464
  @u.parse_ymls(@tmpdir)
465
465
  @u.update_dvi_command
466
466
  assert_match(/has options/, io.string)
@@ -1,11 +1,9 @@
1
1
  require 'test_helper'
2
- require 'epubmaker'
3
- require 'epubmaker/zip_exporter'
2
+ require 'review/epubmaker'
3
+ require 'review/epubmaker/zip_exporter'
4
4
  require 'fileutils'
5
5
 
6
6
  class ZipExporterTest < Test::Unit::TestCase
7
- include EPUBMaker
8
-
9
7
  def setup
10
8
  @tmpdir = Dir.mktmpdir
11
9
  @epubdir = File.join(@tmpdir, 'epubdir')
@@ -67,7 +65,7 @@ class ZipExporterTest < Test::Unit::TestCase
67
65
 
68
66
  config = { 'epubmaker' => {} }
69
67
  epubfile = File.join(@tmpdir, 'test.epub')
70
- exporter = ZipExporter.new(@epubdir, config)
68
+ exporter = ReVIEW::EPUBMaker::ZipExporter.new(@epubdir, config)
71
69
  exporter.export_zip_extcmd(epubfile)
72
70
  assert_true(File.exist?(epubfile))
73
71
 
@@ -85,9 +83,10 @@ class ZipExporterTest < Test::Unit::TestCase
85
83
 
86
84
  def test_export_rubyzip
87
85
  return unless defined?(Zip) ## skip test
86
+
88
87
  config = { 'epubmaker' => {} }
89
88
  epubfile = File.join(@tmpdir, 'test.epub')
90
- exporter = ZipExporter.new(@epubdir, config)
89
+ exporter = ReVIEW::EPUBMaker::ZipExporter.new(@epubdir, config)
91
90
  exporter.export_zip_rubyzip(epubfile)
92
91
  assert_true(File.exist?(epubfile))
93
92
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: review
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kmuto
8
8
  - takahashim
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-29 00:00:00.000000000 Z
12
+ date: 2021-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: image_size
@@ -53,6 +53,34 @@ dependencies:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: tty-logger
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: mini_magick
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
56
84
  - !ruby/object:Gem::Dependency
57
85
  name: pygments.rb
58
86
  requirement: !ruby/object:Gem::Requirement
@@ -87,14 +115,14 @@ dependencies:
87
115
  requirements:
88
116
  - - "~>"
89
117
  - !ruby/object:Gem::Version
90
- version: 0.92.0
118
+ version: 1.12.0
91
119
  type: :development
92
120
  prerelease: false
93
121
  version_requirements: !ruby/object:Gem::Requirement
94
122
  requirements:
95
123
  - - "~>"
96
124
  - !ruby/object:Gem::Version
97
- version: 0.92.0
125
+ version: 1.12.0
98
126
  - !ruby/object:Gem::Dependency
99
127
  name: rubocop-performance
100
128
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +137,20 @@ dependencies:
109
137
  - - ">="
110
138
  - !ruby/object:Gem::Version
111
139
  version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rubocop-rake
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
112
154
  - !ruby/object:Gem::Dependency
113
155
  name: simplecov
114
156
  requirement: !ruby/object:Gem::Requirement
@@ -153,7 +195,7 @@ dependencies:
153
195
  version: '0'
154
196
  description: Re:VIEW is a digital publishing system for books and ebooks. It supports
155
197
  InDesign, EPUB and LaTeX.
156
- email: kmuto@debian.org
198
+ email: kmuto@kmuto.jp
157
199
  executables:
158
200
  - review
159
201
  - review-catalog-converter
@@ -175,6 +217,7 @@ executables:
175
217
  extensions: []
176
218
  extra_rdoc_files: []
177
219
  files:
220
+ - ".github/workflows/ruby-tex.yml"
178
221
  - ".github/workflows/ruby-win.yml"
179
222
  - ".github/workflows/ruby.yml"
180
223
  - ".gitignore"
@@ -242,14 +285,6 @@ files:
242
285
  - doc/sample.css
243
286
  - doc/writing_vertical.ja.md
244
287
  - doc/writing_vertical.md
245
- - lib/epubmaker.rb
246
- - lib/epubmaker/content.rb
247
- - lib/epubmaker/epubcommon.rb
248
- - lib/epubmaker/epubv2.rb
249
- - lib/epubmaker/epubv3.rb
250
- - lib/epubmaker/producer.rb
251
- - lib/epubmaker/zip_exporter.rb
252
- - lib/lineinput.rb
253
288
  - lib/review.rb
254
289
  - lib/review/book.rb
255
290
  - lib/review/book/base.rb
@@ -263,6 +298,7 @@ files:
263
298
  - lib/review/book/part.rb
264
299
  - lib/review/book/volume.rb
265
300
  - lib/review/builder.rb
301
+ - lib/review/call_hook.rb
266
302
  - lib/review/catalog.rb
267
303
  - lib/review/compiler.rb
268
304
  - lib/review/configure.rb
@@ -270,7 +306,13 @@ files:
270
306
  - lib/review/epub2html.rb
271
307
  - lib/review/epubbuilder.rb
272
308
  - lib/review/epubmaker.rb
309
+ - lib/review/epubmaker/content.rb
310
+ - lib/review/epubmaker/epubcommon.rb
311
+ - lib/review/epubmaker/epubv2.rb
312
+ - lib/review/epubmaker/epubv3.rb
313
+ - lib/review/epubmaker/producer.rb
273
314
  - lib/review/epubmaker/reviewheaderlistener.rb
315
+ - lib/review/epubmaker/zip_exporter.rb
274
316
  - lib/review/exception.rb
275
317
  - lib/review/extentions.rb
276
318
  - lib/review/extentions/hash.rb
@@ -283,16 +325,19 @@ files:
283
325
  - lib/review/i18n.yml
284
326
  - lib/review/idgxmlbuilder.rb
285
327
  - lib/review/idgxmlmaker.rb
328
+ - lib/review/img_math.rb
286
329
  - lib/review/index_builder.rb
287
330
  - lib/review/init-web/finish.html
288
331
  - lib/review/init-web/index.html
289
332
  - lib/review/init-web/review-layout-design.js
290
333
  - lib/review/init.rb
334
+ - lib/review/latexbox.rb
291
335
  - lib/review/latexbuilder.rb
292
336
  - lib/review/latexindex.rb
293
337
  - lib/review/latexutils.rb
294
338
  - lib/review/lineinput.rb
295
339
  - lib/review/location.rb
340
+ - lib/review/loggable.rb
296
341
  - lib/review/logger.rb
297
342
  - lib/review/makerhelper.rb
298
343
  - lib/review/markdownbuilder.rb
@@ -300,6 +345,9 @@ files:
300
345
  - lib/review/pdfmaker.rb
301
346
  - lib/review/plaintextbuilder.rb
302
347
  - lib/review/preprocessor.rb
348
+ - lib/review/preprocessor/directive.rb
349
+ - lib/review/preprocessor/line.rb
350
+ - lib/review/preprocessor/repository.rb
303
351
  - lib/review/rstbuilder.rb
304
352
  - lib/review/sec_counter.rb
305
353
  - lib/review/template.rb
@@ -356,6 +404,7 @@ files:
356
404
  - samples/syntax-book/images/cover.jpg
357
405
  - samples/syntax-book/images/fractal.png
358
406
  - samples/syntax-book/images/img3-1.png
407
+ - samples/syntax-book/images/img3-2.png
359
408
  - samples/syntax-book/images/inlineicon.jpg
360
409
  - samples/syntax-book/images/logic.png
361
410
  - samples/syntax-book/images/logic2.png
@@ -371,6 +420,11 @@ files:
371
420
  - samples/syntax-book/syntax.dic
372
421
  - templates/LICENSE
373
422
  - templates/README.md
423
+ - templates/html/_colophon.html.erb
424
+ - templates/html/_colophon_history.html.erb
425
+ - templates/html/_cover.html.erb
426
+ - templates/html/_part_body.html.erb
427
+ - templates/html/_titlepage.html.erb
374
428
  - templates/html/layout-html5.html.erb
375
429
  - templates/html/layout-xhtml1.html.erb
376
430
  - templates/latex-compat2/layout.tex.erb
@@ -381,6 +435,7 @@ files:
381
435
  - templates/latex/review-jlreq/review-custom.sty
382
436
  - templates/latex/review-jlreq/review-jlreq.cls
383
437
  - templates/latex/review-jlreq/review-style.sty
438
+ - templates/latex/review-jlreq/review-tcbox.sty
384
439
  - templates/latex/review-jlreq/reviewmacro.sty
385
440
  - templates/latex/review-jsbook/README.md
386
441
  - templates/latex/review-jsbook/jumoline.sty
@@ -389,19 +444,31 @@ files:
389
444
  - templates/latex/review-jsbook/review-custom.sty
390
445
  - templates/latex/review-jsbook/review-jsbook.cls
391
446
  - templates/latex/review-jsbook/review-style.sty
447
+ - templates/latex/review-jsbook/review-tcbox.sty
392
448
  - templates/latex/review-jsbook/reviewmacro.sty
393
449
  - templates/ncx/epubv2.ncx.erb
394
450
  - templates/opf/epubv2.opf.erb
395
451
  - templates/opf/epubv3.opf.erb
452
+ - templates/opf/opf_manifest_epubv2.opf.erb
453
+ - templates/opf/opf_manifest_epubv3.opf.erb
454
+ - templates/opf/opf_metainfo_epubv2.opf.erb
455
+ - templates/opf/opf_metainfo_epubv3.opf.erb
456
+ - templates/opf/opf_tocx_epubv2.opf.erb
457
+ - templates/opf/opf_tocx_epubv3.opf.erb
396
458
  - templates/web/html/layout-html5.html.erb
397
459
  - templates/web/html/layout-xhtml1.html.erb
398
460
  - templates/xml/container.xml.erb
399
461
  - test/assets/black.eps
400
462
  - test/assets/fit.png
463
+ - test/assets/header_listener.html
464
+ - test/assets/img_math/img1.png
465
+ - test/assets/img_math/img2.png
466
+ - test/assets/img_math/img3.png
401
467
  - test/assets/large.gif
402
468
  - test/assets/large.jpg
403
469
  - test/assets/large.png
404
470
  - test/assets/large.svg
471
+ - test/assets/syntax_book_index_detail.txt
405
472
  - test/assets/test.xml.erb
406
473
  - test/assets/test_template.tex
407
474
  - test/assets/test_template_backmatter.tex
@@ -428,6 +495,7 @@ files:
428
495
  - test/test_idgxmlbuilder.rb
429
496
  - test/test_idgxmlmaker_cmd.rb
430
497
  - test/test_image_finder.rb
498
+ - test/test_img_math.rb
431
499
  - test/test_index.rb
432
500
  - test/test_indexbuilder.rb
433
501
  - test/test_latexbuilder.rb
@@ -443,11 +511,13 @@ files:
443
511
  - test/test_plaintextbuilder.rb
444
512
  - test/test_preprocessor.rb
445
513
  - test/test_review_ext.rb
514
+ - test/test_reviewheaderlistener.rb
446
515
  - test/test_rstbuilder.rb
447
516
  - test/test_sec_counter.rb
448
517
  - test/test_template.rb
449
518
  - test/test_textmaker_cmd.rb
450
519
  - test/test_textutils.rb
520
+ - test/test_tocprinter.rb
451
521
  - test/test_topbuilder.rb
452
522
  - test/test_update.rb
453
523
  - test/test_webtocprinter.rb
@@ -555,7 +625,7 @@ homepage: http://github.com/kmuto/review
555
625
  licenses:
556
626
  - LGPL
557
627
  metadata: {}
558
- post_install_message:
628
+ post_install_message:
559
629
  rdoc_options: []
560
630
  require_paths:
561
631
  - lib
@@ -570,17 +640,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
570
640
  - !ruby/object:Gem::Version
571
641
  version: '0'
572
642
  requirements: []
573
- rubygems_version: 3.1.2
574
- signing_key:
643
+ rubygems_version: 3.2.15
644
+ signing_key:
575
645
  specification_version: 4
576
646
  summary: 'Re:VIEW: a easy-to-use digital publishing system'
577
647
  test_files:
578
648
  - test/assets/black.eps
579
649
  - test/assets/fit.png
650
+ - test/assets/header_listener.html
651
+ - test/assets/img_math/img1.png
652
+ - test/assets/img_math/img2.png
653
+ - test/assets/img_math/img3.png
580
654
  - test/assets/large.gif
581
655
  - test/assets/large.jpg
582
656
  - test/assets/large.png
583
657
  - test/assets/large.svg
658
+ - test/assets/syntax_book_index_detail.txt
584
659
  - test/assets/test.xml.erb
585
660
  - test/assets/test_template.tex
586
661
  - test/assets/test_template_backmatter.tex
@@ -607,6 +682,7 @@ test_files:
607
682
  - test/test_idgxmlbuilder.rb
608
683
  - test/test_idgxmlmaker_cmd.rb
609
684
  - test/test_image_finder.rb
685
+ - test/test_img_math.rb
610
686
  - test/test_index.rb
611
687
  - test/test_indexbuilder.rb
612
688
  - test/test_latexbuilder.rb
@@ -622,11 +698,13 @@ test_files:
622
698
  - test/test_plaintextbuilder.rb
623
699
  - test/test_preprocessor.rb
624
700
  - test/test_review_ext.rb
701
+ - test/test_reviewheaderlistener.rb
625
702
  - test/test_rstbuilder.rb
626
703
  - test/test_sec_counter.rb
627
704
  - test/test_template.rb
628
705
  - test/test_textmaker_cmd.rb
629
706
  - test/test_textutils.rb
707
+ - test/test_tocprinter.rb
630
708
  - test/test_topbuilder.rb
631
709
  - test/test_update.rb
632
710
  - test/test_webtocprinter.rb