review 3.2.0 → 4.0.0

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.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +26 -4
  3. data/.travis.yml +1 -1
  4. data/NEWS.ja.md +97 -1
  5. data/NEWS.md +97 -1
  6. data/bin/review-catalog-converter +1 -1
  7. data/bin/review-check +5 -5
  8. data/bin/review-checkdep +1 -1
  9. data/bin/review-compile +5 -5
  10. data/bin/review-idgxmlmaker +16 -0
  11. data/bin/review-index +7 -7
  12. data/bin/review-preproc +9 -9
  13. data/bin/review-validate +2 -2
  14. data/bin/review-vol +5 -5
  15. data/doc/config.yml.sample +14 -6
  16. data/doc/config.yml.sample-simple +1 -1
  17. data/doc/format.ja.md +15 -5
  18. data/doc/format.md +30 -18
  19. data/doc/pdfmaker.ja.md +1 -1
  20. data/doc/pdfmaker.md +1 -1
  21. data/lib/review/book.rb +1 -1
  22. data/lib/review/book/base.rb +23 -63
  23. data/lib/review/book/chapter.rb +18 -3
  24. data/lib/review/book/compilable.rb +5 -0
  25. data/lib/review/book/index.rb +26 -65
  26. data/lib/review/book/index/item.rb +40 -0
  27. data/lib/review/book/part.rb +22 -2
  28. data/lib/review/builder.rb +60 -40
  29. data/lib/review/catalog.rb +12 -15
  30. data/lib/review/compiler.rb +68 -36
  31. data/lib/review/configure.rb +10 -7
  32. data/lib/review/epubmaker.rb +5 -2
  33. data/lib/review/htmlbuilder.rb +24 -71
  34. data/lib/review/htmlutils.rb +2 -3
  35. data/lib/review/i18n.rb +2 -2
  36. data/lib/review/idgxmlbuilder.rb +101 -55
  37. data/lib/review/idgxmlmaker.rb +184 -0
  38. data/lib/review/init-web/finish.html +10 -0
  39. data/lib/review/init-web/index.html +190 -0
  40. data/lib/review/init-web/review-layout-design.js +691 -0
  41. data/lib/review/init.rb +110 -26
  42. data/lib/review/latexbuilder.rb +76 -54
  43. data/lib/review/lineinput.rb +1 -1
  44. data/lib/review/logger.rb +4 -8
  45. data/lib/review/makerhelper.rb +6 -4
  46. data/lib/review/markdownbuilder.rb +25 -38
  47. data/lib/review/md2inaobuilder.rb +3 -5
  48. data/lib/review/pdfmaker.rb +15 -15
  49. data/lib/review/plaintextbuilder.rb +67 -76
  50. data/lib/review/preprocessor.rb +13 -13
  51. data/lib/review/rstbuilder.rb +31 -31
  52. data/lib/review/textmaker.rb +13 -3
  53. data/lib/review/textutils.rb +77 -2
  54. data/lib/review/tocparser.rb +17 -17
  55. data/lib/review/tocprinter.rb +8 -8
  56. data/lib/review/topbuilder.rb +76 -57
  57. data/lib/review/update.rb +16 -16
  58. data/lib/review/version.rb +1 -1
  59. data/lib/review/webmaker.rb +2 -2
  60. data/lib/review/yamlloader.rb +3 -0
  61. data/review.gemspec +4 -3
  62. data/samples/sample-book/README.md +7 -2
  63. data/samples/sample-book/src/.gitignore +153 -0
  64. data/samples/sample-book/src/config-jlreq.yml +6 -0
  65. data/samples/sample-book/src/lib/tasks/review.rake +20 -9
  66. data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +14 -8
  67. data/samples/syntax-book/ch03.re +3 -6
  68. data/samples/syntax-book/config-jlreq.yml +5 -0
  69. data/samples/syntax-book/lib/tasks/review.rake +7 -7
  70. data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +14 -8
  71. data/templates/latex/config.erb +6 -0
  72. data/templates/latex/layout.tex.erb +1 -0
  73. data/templates/latex/review-jlreq/review-base.sty +93 -31
  74. data/templates/latex/review-jlreq/review-jlreq.cls +6 -0
  75. data/templates/latex/review-jlreq/review-style.sty +3 -0
  76. data/templates/latex/review-jsbook/README.md +39 -0
  77. data/templates/latex/review-jsbook/review-base.sty +65 -10
  78. data/templates/latex/review-jsbook/review-jsbook.cls +4 -0
  79. data/templates/latex/review-jsbook/review-style.sty +4 -1
  80. data/test/assets/test_template.tex +11 -3
  81. data/test/assets/test_template_backmatter.tex +11 -3
  82. data/test/test_book.rb +65 -19
  83. data/test/test_catalog.rb +18 -42
  84. data/test/test_catalog_converter_cmd.rb +1 -1
  85. data/test/test_epubmaker_cmd.rb +2 -2
  86. data/test/test_helper.rb +1 -1
  87. data/test/test_htmlbuilder.rb +144 -55
  88. data/test/test_i18n.rb +25 -25
  89. data/test/test_idgxmlbuilder.rb +60 -18
  90. data/test/test_image_finder.rb +6 -6
  91. data/test/test_latexbuilder.rb +128 -24
  92. data/test/test_latexbuilder_v2.rb +23 -23
  93. data/test/test_logger.rb +14 -1
  94. data/test/test_makerhelper.rb +3 -3
  95. data/test/test_markdownbuilder.rb +45 -4
  96. data/test/test_md2inaobuilder.rb +12 -2
  97. data/test/test_pdfmaker.rb +1 -1
  98. data/test/test_pdfmaker_cmd.rb +1 -1
  99. data/test/test_plaintextbuilder.rb +31 -6
  100. data/test/test_rstbuilder.rb +33 -4
  101. data/test/test_textutils.rb +109 -2
  102. data/test/test_topbuilder.rb +35 -7
  103. data/test/test_update.rb +17 -8
  104. data/test/test_yamlloader.rb +13 -0
  105. metadata +26 -2
@@ -177,11 +177,19 @@ EOS
177
177
  def test_paragraph
178
178
  actual = compile_block("foo\nbar\n")
179
179
  assert_equal %Q(foobar\n), actual
180
+
181
+ @book.config['join_lines_by_lang'] = true
182
+ actual = compile_block("foo\nbar\n")
183
+ assert_equal %Q(foo bar\n), actual
180
184
  end
181
185
 
182
186
  def test_tabbed_paragraph
183
187
  actual = compile_block("\tfoo\nbar\n")
184
188
  assert_equal %Q(\tfoobar\n), actual
189
+
190
+ @book.config['join_lines_by_lang'] = true
191
+ actual = compile_block("\tfoo\nbar\n")
192
+ assert_equal %Q(\tfoo bar\n), actual
185
193
  end
186
194
 
187
195
  def test_flushright
@@ -192,6 +200,17 @@ foobar
192
200
  buz
193
201
  ◆→終了:右寄せ←◆
194
202
 
203
+ EOS
204
+ assert_equal expected, actual
205
+
206
+ @book.config['join_lines_by_lang'] = true
207
+ actual = compile_block("//flushright{\nfoo\nbar\n\nbuz\n//}\n")
208
+ expected = <<-EOS
209
+ ◆→開始:右寄せ←◆
210
+ foo bar
211
+ buz
212
+ ◆→終了:右寄せ←◆
213
+
195
214
  EOS
196
215
  assert_equal expected, actual
197
216
  end
@@ -207,6 +226,15 @@ EOS
207
226
  ◆→DTP連絡:次の1行インデントなし←◆
208
227
  foobar
209
228
  foo2bar2
229
+ EOS
230
+ assert_equal expected, actual
231
+
232
+ @book.config['join_lines_by_lang'] = true
233
+ actual = compile_block("//noindent\nfoo\nbar\n\nfoo2\nbar2\n")
234
+ expected = <<-EOS
235
+ ◆→DTP連絡:次の1行インデントなし←◆
236
+ foo bar
237
+ foo2 bar2
210
238
  EOS
211
239
  assert_equal expected, actual
212
240
  end
@@ -226,7 +254,7 @@ EOS
226
254
 
227
255
  def test_list
228
256
  def @chapter.list(_id)
229
- Book::ListIndex::Item.new('test', 1)
257
+ Book::Index::Item.new('test', 1)
230
258
  end
231
259
  actual = compile_block("//list[samplelist][this is @<b>{test}<&>_]{\nfoo\nbar\n//}\n")
232
260
  expected = <<-EOS
@@ -243,7 +271,7 @@ EOS
243
271
 
244
272
  def test_listnum
245
273
  def @chapter.list(_id)
246
- Book::ListIndex::Item.new('test', 1)
274
+ Book::Index::Item.new('test', 1)
247
275
  end
248
276
  actual = compile_block("//listnum[test][this is @<b>{test}<&>_]{\nfoo\nbar\n//}\n")
249
277
  expected = <<-EOS
@@ -373,7 +401,7 @@ EOS
373
401
 
374
402
  def test_bib
375
403
  def @chapter.bibpaper(_id)
376
- Book::BibpaperIndex::Item.new('samplebib', 1, 'sample bib')
404
+ Book::Index::Item.new('samplebib', 1, 'sample bib')
377
405
  end
378
406
 
379
407
  assert_equal '[1]', compile_inline('@<bib>{samplebib}')
@@ -413,7 +441,7 @@ EOS
413
441
 
414
442
  def test_inline_table
415
443
  def @chapter.table(_id)
416
- Book::TableIndex::Item.new('sampletable', 1)
444
+ Book::Index::Item.new('sampletable', 1)
417
445
  end
418
446
  actual = compile_block("@<table>{sampletest}\n")
419
447
  assert_equal "表1.1\n", actual
@@ -562,7 +590,7 @@ EOS
562
590
 
563
591
  def test_image
564
592
  def @chapter.image(_id)
565
- item = Book::ImageIndex::Item.new('sampleimg', 1)
593
+ item = Book::Index::Item.new('sampleimg', 1)
566
594
  item.instance_eval { @path = './images/chap1-sampleimg.png' }
567
595
  item
568
596
  end
@@ -581,7 +609,7 @@ EOS
581
609
 
582
610
  def test_image_with_metric
583
611
  def @chapter.image(_id)
584
- item = Book::ImageIndex::Item.new('sampleimg', 1)
612
+ item = Book::Index::Item.new('sampleimg', 1)
585
613
  item.instance_eval { @path = './images/chap1-sampleimg.png' }
586
614
  item
587
615
  end
@@ -624,7 +652,7 @@ EOB
624
652
  @builder.instance_eval{ @logger = ReVIEW::Logger.new(io) }
625
653
  actual = compile_block('@<w>{F} @<w>{B} @<wb>{B} @<w>{N}')
626
654
  assert_equal %Q(foo bar"\\<>_@<b>{BAZ} ★bar"\\<>_@<b>{BAZ}☆ [missing word: N]\n), actual
627
- assert_match(/WARN -- : :1: word not bound: N/, io.string)
655
+ assert_match(/WARN --: :1: word not bound: N/, io.string)
628
656
  end
629
657
  end
630
658
 
@@ -14,7 +14,7 @@ class UpdateTest < Test::Unit::TestCase
14
14
  end
15
15
 
16
16
  def teardown
17
- FileUtils.rm_rf @tmpdir
17
+ FileUtils.rm_rf(@tmpdir)
18
18
  end
19
19
 
20
20
  def test_broken_yml
@@ -96,19 +96,28 @@ EOT
96
96
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
97
97
  @u.parse_ymls(@tmpdir)
98
98
  @u.update_version
99
- assert_match(/Update 'review_version' to '3.0'/, io.string)
100
- assert_equal 'review_version: 3.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
99
+ assert_match(/Update 'review_version' to '4.0'/, io.string)
100
+ assert_equal 'review_version: 4.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
101
+
102
+ File.write(File.join(@tmpdir, 'config.yml'), "review_version: 3.0\n")
103
+
104
+ io = StringIO.new
105
+ @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
106
+ @u.parse_ymls(@tmpdir)
107
+ @u.update_version
108
+ assert_match(/Update 'review_version' to '4.0'/, io.string)
109
+ assert_equal 'review_version: 4.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
101
110
  end
102
111
 
103
112
  def test_update_version_current
104
- File.write(File.join(@tmpdir, 'config.yml'), "review_version: 3.0\n")
113
+ File.write(File.join(@tmpdir, 'config.yml'), "review_version: 4.0\n")
105
114
 
106
115
  io = StringIO.new
107
116
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
108
117
  @u.parse_ymls(@tmpdir)
109
118
  @u.update_version
110
119
  assert_equal '', io.string
111
- assert_equal 'review_version: 3.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
120
+ assert_equal 'review_version: 4.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
112
121
  end
113
122
 
114
123
  def test_update_version_newer
@@ -118,7 +127,7 @@ EOT
118
127
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
119
128
  @u.parse_ymls(@tmpdir)
120
129
  @u.update_version
121
- assert_match(/Update 'review_version' to '3.0'/, io.string)
130
+ assert_match(/Update 'review_version' to '4.0'/, io.string)
122
131
  assert_equal 'review_version: 99.0', File.read(File.join(@tmpdir, 'config.yml')).match(/review_version:.*$/).to_s
123
132
  end
124
133
 
@@ -143,7 +152,7 @@ EOT
143
152
 
144
153
  def test_update_rakefile_different
145
154
  File.write(File.join(@tmpdir, 'Rakefile'), '')
146
- FileUtils.mkdir_p File.join(@tmpdir, 'lib/tasks')
155
+ FileUtils.mkdir_p(File.join(@tmpdir, 'lib/tasks'))
147
156
  File.write(File.join(@tmpdir, 'lib/tasks/review.rake'), '')
148
157
  io = StringIO.new
149
158
  @u.instance_eval{ @logger = ReVIEW::Logger.new(io) }
@@ -389,7 +398,7 @@ EOT
389
398
  assert_match(/has options/, io.string)
390
399
  cont = <<EOT
391
400
  texcommand: "/Program Files/up-latex"
392
- texoptions: "-interaction=nonstopmode -file-line-error --shell-escape -v"
401
+ texoptions: "-interaction=nonstopmode -file-line-error -halt-on-error --shell-escape -v"
393
402
  EOT
394
403
  assert_equal cont, File.read(File.join(@tmpdir, 'config.yml'))
395
404
  end
@@ -184,4 +184,17 @@ EOB
184
184
  yaml)
185
185
  end
186
186
  end
187
+
188
+ def test_empty_file
189
+ Dir.mktmpdir do |dir|
190
+ yaml_file = File.join(dir, 'test.yml')
191
+ File.open(yaml_file, 'w') do |f|
192
+ f.write <<EOB
193
+ #
194
+ EOB
195
+ end
196
+ e = assert_raise(RuntimeError) { @loader.load_file(yaml_file) }
197
+ assert_match('test.yml is malformed.', e.message)
198
+ end
199
+ end
187
200
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: review
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kmuto
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-06-29 00:00:00.000000000 Z
12
+ date: 2019-10-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: image_size
@@ -137,6 +137,20 @@ dependencies:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: unicode-eaw
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'
140
154
  description: Re:VIEW is a digital publishing system for books and ebooks. It supports
141
155
  InDesign, EPUB and LaTeX.
142
156
  email: kmuto@debian.org
@@ -148,6 +162,7 @@ executables:
148
162
  - review-compile
149
163
  - review-epub2html
150
164
  - review-epubmaker
165
+ - review-idgxmlmaker
151
166
  - review-index
152
167
  - review-init
153
168
  - review-pdfmaker
@@ -179,6 +194,7 @@ files:
179
194
  - bin/review-compile
180
195
  - bin/review-epub2html
181
196
  - bin/review-epubmaker
197
+ - bin/review-idgxmlmaker
182
198
  - bin/review-index
183
199
  - bin/review-init
184
200
  - bin/review-pdfmaker
@@ -240,6 +256,7 @@ files:
240
256
  - lib/review/book/compilable.rb
241
257
  - lib/review/book/image_finder.rb
242
258
  - lib/review/book/index.rb
259
+ - lib/review/book/index/item.rb
243
260
  - lib/review/book/page_metric.rb
244
261
  - lib/review/book/part.rb
245
262
  - lib/review/book/volume.rb
@@ -263,6 +280,10 @@ files:
263
280
  - lib/review/i18n.rb
264
281
  - lib/review/i18n.yml
265
282
  - lib/review/idgxmlbuilder.rb
283
+ - lib/review/idgxmlmaker.rb
284
+ - lib/review/init-web/finish.html
285
+ - lib/review/init-web/index.html
286
+ - lib/review/init-web/review-layout-design.js
266
287
  - lib/review/init.rb
267
288
  - lib/review/latexbuilder.rb
268
289
  - lib/review/latexindex.rb
@@ -293,12 +314,14 @@ files:
293
314
  - review.gemspec
294
315
  - samples/LICENSE
295
316
  - samples/sample-book/README.md
317
+ - samples/sample-book/src/.gitignore
296
318
  - samples/sample-book/src/Rakefile
297
319
  - samples/sample-book/src/_cover.html
298
320
  - samples/sample-book/src/catalog.yml
299
321
  - samples/sample-book/src/ch01.re
300
322
  - samples/sample-book/src/ch02.re
301
323
  - samples/sample-book/src/config-epub2.yml
324
+ - samples/sample-book/src/config-jlreq.yml
302
325
  - samples/sample-book/src/config.yml
303
326
  - samples/sample-book/src/images/ch01-imgsample.jpg
304
327
  - samples/sample-book/src/images/cover-a5.ai
@@ -319,6 +342,7 @@ files:
319
342
  - samples/syntax-book/ch01.re
320
343
  - samples/syntax-book/ch02.re
321
344
  - samples/syntax-book/ch03.re
345
+ - samples/syntax-book/config-jlreq.yml
322
346
  - samples/syntax-book/config.yml
323
347
  - samples/syntax-book/images/ball.png
324
348
  - samples/syntax-book/images/cover-b5.ai