review 4.2.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-win.yml +11 -5
  3. data/.rubocop.yml +113 -24
  4. data/NEWS.ja.md +94 -0
  5. data/NEWS.md +94 -0
  6. data/bin/review-catalog-converter +1 -1
  7. data/bin/review-check +2 -4
  8. data/bin/review-checkdep +1 -1
  9. data/bin/review-compile +8 -14
  10. data/bin/review-validate +1 -1
  11. data/doc/config.yml.sample +4 -1
  12. data/doc/config.yml.sample-simple +1 -1
  13. data/doc/format.ja.md +83 -4
  14. data/doc/format.md +84 -7
  15. data/doc/makeindex.ja.md +2 -2
  16. data/doc/quickstart.ja.md +3 -3
  17. data/doc/quickstart.md +2 -2
  18. data/lib/epubmaker/content.rb +3 -2
  19. data/lib/epubmaker/epubcommon.rb +33 -25
  20. data/lib/epubmaker/epubv2.rb +5 -6
  21. data/lib/epubmaker/epubv3.rb +20 -18
  22. data/lib/review/book.rb +2 -2
  23. data/lib/review/book/base.rb +61 -25
  24. data/lib/review/book/bib.rb +21 -0
  25. data/lib/review/book/book_unit.rb +155 -0
  26. data/lib/review/book/chapter.rb +30 -26
  27. data/lib/review/book/index.rb +23 -185
  28. data/lib/review/book/index/item.rb +7 -1
  29. data/lib/review/book/part.rb +21 -9
  30. data/lib/review/book/volume.rb +1 -1
  31. data/lib/review/builder.rb +68 -13
  32. data/lib/review/catalog.rb +2 -2
  33. data/lib/review/compiler.rb +159 -73
  34. data/lib/review/configure.rb +22 -1
  35. data/lib/review/converter.rb +1 -1
  36. data/lib/review/epub2html.rb +6 -1
  37. data/lib/review/epubmaker.rb +12 -23
  38. data/lib/review/htmlbuilder.rb +36 -7
  39. data/lib/review/htmlutils.rb +7 -10
  40. data/lib/review/i18n.rb +1 -1
  41. data/lib/review/idgxmlbuilder.rb +51 -6
  42. data/lib/review/idgxmlmaker.rb +9 -14
  43. data/lib/review/index_builder.rb +653 -0
  44. data/lib/review/init.rb +5 -13
  45. data/lib/review/latexbuilder.rb +65 -4
  46. data/lib/review/logger.rb +2 -2
  47. data/lib/review/makerhelper.rb +11 -0
  48. data/lib/review/markdownbuilder.rb +19 -1
  49. data/lib/review/pdfmaker.rb +17 -36
  50. data/lib/review/plaintextbuilder.rb +48 -2
  51. data/lib/review/preprocessor.rb +5 -5
  52. data/lib/review/rstbuilder.rb +25 -6
  53. data/lib/review/sec_counter.rb +13 -0
  54. data/lib/review/textmaker.rb +4 -12
  55. data/lib/review/tocprinter.rb +2 -3
  56. data/lib/review/topbuilder.rb +26 -0
  57. data/lib/review/update.rb +7 -7
  58. data/lib/review/version.rb +1 -1
  59. data/lib/review/volumeprinter.rb +2 -3
  60. data/lib/review/webmaker.rb +9 -20
  61. data/review.gemspec +2 -2
  62. data/samples/sample-book/src/config.yml +1 -1
  63. data/samples/syntax-book/Gemfile +1 -1
  64. data/samples/syntax-book/config.yml +1 -1
  65. data/templates/latex/config.erb +27 -23
  66. data/templates/latex/review-jlreq/README.md +3 -1
  67. data/templates/latex/review-jlreq/review-base.sty +31 -15
  68. data/templates/latex/review-jlreq/review-jlreq.cls +8 -24
  69. data/templates/latex/review-jsbook/README.md +7 -5
  70. data/templates/latex/review-jsbook/review-base.sty +34 -16
  71. data/templates/latex/review-jsbook/review-jsbook.cls +4 -2
  72. data/templates/web/html/layout-html5.html.erb +1 -1
  73. data/test/assets/test_template.tex +3 -3
  74. data/test/assets/test_template_backmatter.tex +3 -3
  75. data/test/book_test_helper.rb +11 -5
  76. data/test/test_book.rb +54 -63
  77. data/test/test_book_chapter.rb +93 -52
  78. data/test/test_builder.rb +24 -15
  79. data/test/test_converter.rb +1 -0
  80. data/test/test_epub3maker.rb +2 -2
  81. data/test/test_epubmaker.rb +8 -0
  82. data/test/test_helper.rb +4 -1
  83. data/test/test_htmlbuilder.rb +627 -56
  84. data/test/test_htmlutils.rb +0 -12
  85. data/test/test_i18n.rb +33 -33
  86. data/test/test_idgxmlbuilder.rb +358 -11
  87. data/test/test_idgxmlmaker_cmd.rb +1 -1
  88. data/test/test_index.rb +62 -52
  89. data/test/test_indexbuilder.rb +52 -0
  90. data/test/test_latexbuilder.rb +547 -10
  91. data/test/test_latexbuilder_v2.rb +43 -5
  92. data/test/test_logger.rb +7 -7
  93. data/test/test_makerhelper.rb +0 -12
  94. data/test/test_markdownbuilder.rb +3 -0
  95. data/test/test_pdfmaker.rb +13 -12
  96. data/test/test_pdfmaker_cmd.rb +1 -1
  97. data/test/test_plaintextbuilder.rb +422 -7
  98. data/test/test_review_ext.rb +2 -1
  99. data/test/test_rstbuilder.rb +25 -1
  100. data/test/test_sec_counter.rb +156 -0
  101. data/test/test_textmaker_cmd.rb +1 -1
  102. data/test/test_topbuilder.rb +187 -10
  103. data/test/test_update.rb +10 -10
  104. data/test/test_webtocprinter.rb +12 -12
  105. data/vendor/gentombow/LICENSE +1 -1
  106. data/vendor/gentombow/Makefile +0 -1
  107. data/vendor/gentombow/bounddvi-en.pdf +0 -0
  108. data/vendor/gentombow/bounddvi-en.tex +1 -0
  109. data/vendor/gentombow/bounddvi.pdf +0 -0
  110. data/vendor/gentombow/bounddvi.sty +30 -7
  111. data/vendor/gentombow/bounddvi.tex +1 -0
  112. data/vendor/gentombow/create_archive.sh +1 -0
  113. data/vendor/gentombow/gentombow-ja.pdf +0 -0
  114. data/vendor/gentombow/gentombow-ja.tex +9 -0
  115. data/vendor/gentombow/gentombow.pdf +0 -0
  116. data/vendor/gentombow/gentombow.sty +32 -10
  117. data/vendor/gentombow/gentombow.tex +8 -0
  118. data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
  119. data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
  120. data/vendor/jsclasses/Makefile +3 -2
  121. data/vendor/jsclasses/create_archive.sh +5 -5
  122. data/vendor/jsclasses/jis/Makefile +3 -2
  123. data/vendor/jsclasses/jis/jsarticle.cls +22 -18
  124. data/vendor/jsclasses/jis/jsbook.cls +22 -18
  125. data/vendor/jsclasses/jis/jsclasses.dtx +94 -13
  126. data/vendor/jsclasses/jis/jsclasses.ins +15 -5
  127. data/vendor/jsclasses/jis/jslogo.ins +9 -0
  128. data/vendor/jsclasses/jis/jslogo.sty +1 -13
  129. data/vendor/jsclasses/jis/jspf.cls +22 -18
  130. data/vendor/jsclasses/jis/jsreport.cls +22 -18
  131. data/vendor/jsclasses/jis/jsverb.ins +9 -0
  132. data/vendor/jsclasses/jis/jsverb.sty +1 -13
  133. data/vendor/jsclasses/jis/kiyou.cls +22 -18
  134. data/vendor/jsclasses/jis/minijs.sty +65 -22
  135. data/vendor/jsclasses/jis/okumacro.ins +9 -0
  136. data/vendor/jsclasses/jis/okumacro.sty +1 -13
  137. data/vendor/jsclasses/jis/okuverb.ins +9 -0
  138. data/vendor/jsclasses/jis/okuverb.sty +1 -13
  139. data/vendor/jsclasses/jis/winjis.sty +23 -19
  140. data/vendor/jsclasses/jsarticle.cls +22 -18
  141. data/vendor/jsclasses/jsbook.cls +22 -18
  142. data/vendor/jsclasses/jsclasses.dtx +94 -13
  143. data/vendor/jsclasses/jsclasses.ins +15 -5
  144. data/vendor/jsclasses/jsclasses.pdf +0 -0
  145. data/vendor/jsclasses/jslogo.ins +9 -0
  146. data/vendor/jsclasses/jslogo.pdf +0 -0
  147. data/vendor/jsclasses/jslogo.sty +1 -13
  148. data/vendor/jsclasses/jspf.cls +22 -18
  149. data/vendor/jsclasses/jsreport.cls +22 -18
  150. data/vendor/jsclasses/jsverb.ins +9 -0
  151. data/vendor/jsclasses/jsverb.pdf +0 -0
  152. data/vendor/jsclasses/jsverb.sty +1 -13
  153. data/vendor/jsclasses/kiyou.cls +22 -18
  154. data/vendor/jsclasses/minijs.sty +68 -22
  155. data/vendor/jsclasses/okumacro.ins +9 -0
  156. data/vendor/jsclasses/okumacro.pdf +0 -0
  157. data/vendor/jsclasses/okumacro.sty +1 -13
  158. data/vendor/jsclasses/okuverb.ins +9 -0
  159. data/vendor/jsclasses/okuverb.pdf +0 -0
  160. data/vendor/jsclasses/okuverb.sty +1 -13
  161. data/vendor/jsclasses/tests/relfont.tex +10 -0
  162. data/vendor/jsclasses/winjis.sty +23 -19
  163. metadata +14 -6
  164. data/.rubocop_todo.yml +0 -7
  165. data/lib/review/book/compilable.rb +0 -174
@@ -11,7 +11,8 @@ class ReviewExtTest < Test::Unit::TestCase
11
11
  module ReVIEW
12
12
  class HTMLBuilder
13
13
  attr_reader :builder_init_test
14
- def builder_init
14
+ def initialize(strict = false)
15
+ super
15
16
  @builder_init_test = "test"
16
17
  end
17
18
  end
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
  require 'review/compiler'
3
3
  require 'review/book'
4
- require 'review/topbuilder'
4
+ require 'review/rstbuilder'
5
5
  require 'review/i18n'
6
6
 
7
7
  class RSTBuidlerTest < Test::Unit::TestCase
@@ -327,13 +327,16 @@ EOS
327
327
  .. note::
328
328
 
329
329
  A
330
+
330
331
  B
331
332
 
333
+
332
334
  .. note::
333
335
 
334
336
  caption
335
337
  A
336
338
 
339
+
337
340
  EOS
338
341
  assert_equal expected, actual
339
342
 
@@ -342,13 +345,16 @@ EOS
342
345
  .. memo::
343
346
 
344
347
  A
348
+
345
349
  B
346
350
 
351
+
347
352
  .. memo::
348
353
 
349
354
  caption
350
355
  A
351
356
 
357
+
352
358
  EOS
353
359
  assert_equal expected, actual
354
360
 
@@ -357,13 +363,16 @@ EOS
357
363
  .. info::
358
364
 
359
365
  A
366
+
360
367
  B
361
368
 
369
+
362
370
  .. info::
363
371
 
364
372
  caption
365
373
  A
366
374
 
375
+
367
376
  EOS
368
377
  assert_equal expected, actual
369
378
 
@@ -372,13 +381,16 @@ EOS
372
381
  .. important::
373
382
 
374
383
  A
384
+
375
385
  B
376
386
 
387
+
377
388
  .. important::
378
389
 
379
390
  caption
380
391
  A
381
392
 
393
+
382
394
  EOS
383
395
  assert_equal expected, actual
384
396
 
@@ -387,13 +399,16 @@ EOS
387
399
  .. caution::
388
400
 
389
401
  A
402
+
390
403
  B
391
404
 
405
+
392
406
  .. caution::
393
407
 
394
408
  caption
395
409
  A
396
410
 
411
+
397
412
  EOS
398
413
  assert_equal expected, actual
399
414
 
@@ -402,13 +417,16 @@ EOS
402
417
  .. notice::
403
418
 
404
419
  A
420
+
405
421
  B
406
422
 
423
+
407
424
  .. notice::
408
425
 
409
426
  caption
410
427
  A
411
428
 
429
+
412
430
  EOS
413
431
  assert_equal expected, actual
414
432
 
@@ -417,13 +435,16 @@ EOS
417
435
  .. warning::
418
436
 
419
437
  A
438
+
420
439
  B
421
440
 
441
+
422
442
  .. warning::
423
443
 
424
444
  caption
425
445
  A
426
446
 
447
+
427
448
  EOS
428
449
  assert_equal expected, actual
429
450
 
@@ -432,13 +453,16 @@ EOS
432
453
  .. tip::
433
454
 
434
455
  A
456
+
435
457
  B
436
458
 
459
+
437
460
  .. tip::
438
461
 
439
462
  caption
440
463
  A
441
464
 
465
+
442
466
  EOS
443
467
  assert_equal expected, actual
444
468
  end
@@ -0,0 +1,156 @@
1
+ require 'test_helper'
2
+ require 'book_test_helper'
3
+ require 'review/sec_counter'
4
+
5
+ class SecCounterTest < Test::Unit::TestCase
6
+ include ReVIEW
7
+
8
+ def setup
9
+ @book = Book::Base.new
10
+ @io = StringIO.new("= sample\n\n")
11
+ @chapter = Book::Chapter.new(@book, 1, 'foo', '-', @io)
12
+ @part = Book::Part.new(@book, 1, [], 'name')
13
+ I18n.setup
14
+ end
15
+
16
+ def test_initialize
17
+ @sec_counter = SecCounter.new(5, @chapter)
18
+ assert_equal('1', @sec_counter.anchor(0))
19
+ assert_equal('1', @sec_counter.anchor(1))
20
+ assert_equal('1-0', @sec_counter.anchor(2))
21
+ assert_equal('1-0-0', @sec_counter.anchor(3))
22
+ end
23
+
24
+ def test_anchor1
25
+ @sec_counter = SecCounter.new(5, @chapter)
26
+ @sec_counter.inc(3)
27
+ assert_equal('1', @sec_counter.anchor(0))
28
+ assert_equal('1', @sec_counter.anchor(1))
29
+ assert_equal('1-0', @sec_counter.anchor(2))
30
+ assert_equal('1-0-1', @sec_counter.anchor(3))
31
+ end
32
+
33
+ def test_anchor2
34
+ @sec_counter = SecCounter.new(5, @chapter)
35
+ @sec_counter.inc(2)
36
+ @sec_counter.inc(3)
37
+ @sec_counter.inc(3)
38
+ @sec_counter.inc(4)
39
+ assert_equal('1', @sec_counter.anchor(0))
40
+ assert_equal('1', @sec_counter.anchor(1))
41
+ assert_equal('1-1', @sec_counter.anchor(2))
42
+ assert_equal('1-1-2', @sec_counter.anchor(3))
43
+ assert_equal('1-1-2-1', @sec_counter.anchor(4))
44
+ end
45
+
46
+ def test_anchor3
47
+ @sec_counter = SecCounter.new(5, @chapter)
48
+ @sec_counter.inc(2)
49
+ @sec_counter.inc(3)
50
+ @sec_counter.inc(3)
51
+ @sec_counter.inc(4)
52
+ @sec_counter.inc(3)
53
+ assert_equal('1', @sec_counter.anchor(0))
54
+ assert_equal('1', @sec_counter.anchor(1))
55
+ assert_equal('1-1', @sec_counter.anchor(2))
56
+ assert_equal('1-1-3', @sec_counter.anchor(3))
57
+ assert_equal('1-1-3-0', @sec_counter.anchor(4))
58
+ end
59
+
60
+ def test_anchor4
61
+ @sec_counter = SecCounter.new(5, @chapter)
62
+ @sec_counter.inc(2)
63
+ @sec_counter.inc(2)
64
+ @sec_counter.inc(2)
65
+ @sec_counter.inc(3)
66
+ @sec_counter.inc(3)
67
+ assert_equal('1', @sec_counter.anchor(0))
68
+ assert_equal('1', @sec_counter.anchor(1))
69
+ assert_equal('1-3', @sec_counter.anchor(2))
70
+ assert_equal('1-3-2', @sec_counter.anchor(3))
71
+ assert_equal('1-3-2-0', @sec_counter.anchor(4))
72
+ end
73
+
74
+ def test_anchor_part1
75
+ @sec_counter = SecCounter.new(5, @part)
76
+ @sec_counter.inc(3)
77
+ assert_equal('1', @sec_counter.anchor(0))
78
+ assert_equal('1', @sec_counter.anchor(1))
79
+ assert_equal('1-0', @sec_counter.anchor(2))
80
+ assert_equal('1-0-1', @sec_counter.anchor(3))
81
+ end
82
+
83
+ def test_anchor_part3
84
+ @sec_counter = SecCounter.new(5, @part)
85
+ @sec_counter.inc(2)
86
+ @sec_counter.inc(3)
87
+ @sec_counter.inc(3)
88
+ @sec_counter.inc(4)
89
+ @sec_counter.inc(3)
90
+ assert_equal('1', @sec_counter.anchor(0))
91
+ assert_equal('1', @sec_counter.anchor(1))
92
+ assert_equal('1-1', @sec_counter.anchor(2))
93
+ assert_equal('1-1-3', @sec_counter.anchor(3))
94
+ assert_equal('1-1-3-0', @sec_counter.anchor(4))
95
+ end
96
+
97
+ def test_prefix1
98
+ @sec_counter = SecCounter.new(5, @chapter)
99
+ @sec_counter.inc(2)
100
+ assert_equal('1.1 ', @sec_counter.prefix(2, 3))
101
+ assert_equal('1.1.0 ', @sec_counter.prefix(3, 3))
102
+ assert_equal('1.1.0 ', @sec_counter.prefix(3, 5))
103
+ end
104
+
105
+ def test_prefix2
106
+ @sec_counter = SecCounter.new(5, @chapter)
107
+ @sec_counter.inc(2)
108
+ @sec_counter.inc(3)
109
+ @sec_counter.inc(3)
110
+ @sec_counter.inc(4)
111
+ assert_equal('1.1 ', @sec_counter.prefix(2, 5))
112
+ assert_equal('1.1 ', @sec_counter.prefix(2, 5))
113
+ assert_equal(nil, @sec_counter.prefix(2, 1))
114
+ assert_equal('1.1.2 ', @sec_counter.prefix(3, 5))
115
+ assert_equal('1.1.2 ', @sec_counter.prefix(3, 3))
116
+ assert_equal(nil, @sec_counter.prefix(3, 2))
117
+ end
118
+
119
+ def test_prefix3
120
+ @sec_counter = SecCounter.new(5, @chapter)
121
+ @sec_counter.inc(2)
122
+ @sec_counter.inc(3)
123
+ @sec_counter.inc(3)
124
+ @sec_counter.inc(4)
125
+ @sec_counter.inc(3)
126
+ assert_equal('1.1 ', @sec_counter.prefix(2, 5))
127
+ assert_equal('1.1 ', @sec_counter.prefix(2, 5))
128
+ assert_equal(nil, @sec_counter.prefix(2, 1))
129
+ assert_equal('1.1.3 ', @sec_counter.prefix(3, 5))
130
+ assert_equal('1.1.3 ', @sec_counter.prefix(3, 3))
131
+ assert_equal(nil, @sec_counter.prefix(3, 2))
132
+ assert_equal('1.1.3.0 ', @sec_counter.prefix(4, 5))
133
+ end
134
+
135
+ def test_prefix_part1
136
+ @sec_counter = SecCounter.new(5, @part)
137
+ @sec_counter.inc(2)
138
+ assert_equal('I.1 ', @sec_counter.prefix(2, 3))
139
+ assert_equal('I.1.0 ', @sec_counter.prefix(3, 3))
140
+ assert_equal('I.1.0 ', @sec_counter.prefix(3, 5))
141
+ end
142
+
143
+ def test_prefix_part2
144
+ @sec_counter = SecCounter.new(5, @part)
145
+ @sec_counter.inc(2)
146
+ @sec_counter.inc(3)
147
+ @sec_counter.inc(3)
148
+ @sec_counter.inc(4)
149
+ assert_equal('I.1 ', @sec_counter.prefix(2, 5))
150
+ assert_equal('I.1 ', @sec_counter.prefix(2, 5))
151
+ assert_equal(nil, @sec_counter.prefix(2, 1))
152
+ assert_equal('I.1.2 ', @sec_counter.prefix(3, 5))
153
+ assert_equal('I.1.2 ', @sec_counter.prefix(3, 3))
154
+ assert_equal(nil, @sec_counter.prefix(3, 2))
155
+ end
156
+ end
@@ -29,7 +29,7 @@ class TEXTMakerCmdTest < Test::Unit::TestCase
29
29
  ruby_cmd = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']) + RbConfig::CONFIG['EXEEXT']
30
30
  Dir.chdir(@tmpdir1) do
31
31
  _o, e, s = Open3.capture3("#{ruby_cmd} -S #{REVIEW_TEXTMAKER} #{option} #{configfile}")
32
- STDERR.puts e unless e.empty?
32
+ assert_equal '', e
33
33
  assert s.success?
34
34
  end
35
35
  assert File.exist?(File.join(@tmpdir1, targetfile))
@@ -175,11 +175,11 @@ EOS
175
175
  end
176
176
 
177
177
  def test_dt_inline
178
- fn = Book::FootnoteIndex.parse(['//footnote[bar][bar]'])
179
- @chapter.instance_eval { @footnote_index = fn }
180
- actual = compile_block(" : foo@<fn>{bar}[]<>&@<m>$\\alpha[]$\n")
178
+ actual = compile_block("//footnote[bar][bar]\n\n : foo@<fn>{bar}[]<>&@<m>$\\alpha[]$\n")
181
179
 
182
180
  expected = <<-EOS
181
+ 【注1】bar
182
+
183
183
  ★foo【注1】[]<>&◆→TeX式ここから←◆\\alpha[]◆→TeX式ここまで←◆☆
184
184
 
185
185
 
@@ -533,10 +533,10 @@ EOS
533
533
  end
534
534
 
535
535
  def test_empty_table
536
- e = assert_raises(ReVIEW::ApplicationError) { compile_block "//table{\n//}\n" }
536
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block("//table{\n//}\n") }
537
537
  assert_equal ':2: error: no rows in the table', e.message
538
538
 
539
- e = assert_raises(ReVIEW::ApplicationError) { compile_block "//table{\n------------\n//}\n" }
539
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block("//table{\n------------\n//}\n") }
540
540
  assert_equal ':3: error: no rows in the table', e.message
541
541
  end
542
542
 
@@ -735,6 +735,183 @@ EOS
735
735
  assert_equal expected, actual
736
736
  end
737
737
 
738
+ def test_minicolumn_blocks
739
+ titles = {
740
+ 'note' => 'ノート',
741
+ 'memo' => 'メモ',
742
+ 'important' => '重要',
743
+ 'info' => '情報',
744
+ 'notice' => '注意',
745
+ 'caution' => '警告',
746
+ 'warning' => '危険',
747
+ 'tip' => 'TIP'
748
+ }
749
+
750
+ %w[note memo tip info warning important caution notice].each do |type|
751
+ @builder.doc_status.clear
752
+ src = <<-EOS
753
+ //#{type}[#{type}1]{
754
+
755
+ //}
756
+
757
+ //#{type}[#{type}2]{
758
+ //}
759
+ EOS
760
+
761
+ expected = <<-EOS
762
+ ◆→開始:#{titles[type]}←◆
763
+ ■#{type}1
764
+ ◆→終了:#{titles[type]}←◆
765
+
766
+ ◆→開始:#{titles[type]}←◆
767
+ ■#{type}2
768
+ ◆→終了:#{titles[type]}←◆
769
+
770
+ EOS
771
+ assert_equal expected, compile_block(src)
772
+
773
+ src = <<-EOS
774
+ //#{type}[#{type}2]{
775
+
776
+ //}
777
+
778
+ //#{type}[#{type}3]{
779
+
780
+ //}
781
+
782
+ //#{type}[#{type}4]{
783
+
784
+ //}
785
+
786
+ //#{type}[#{type}5]{
787
+
788
+ //}
789
+
790
+ //#{type}[#{type}6]{
791
+
792
+ //}
793
+ EOS
794
+
795
+ expected = <<-EOS
796
+ ◆→開始:#{titles[type]}←◆
797
+ ■#{type}2
798
+ ◆→終了:#{titles[type]}←◆
799
+
800
+ ◆→開始:#{titles[type]}←◆
801
+ ■#{type}3
802
+ ◆→終了:#{titles[type]}←◆
803
+
804
+ ◆→開始:#{titles[type]}←◆
805
+ ■#{type}4
806
+ ◆→終了:#{titles[type]}←◆
807
+
808
+ ◆→開始:#{titles[type]}←◆
809
+ ■#{type}5
810
+ ◆→終了:#{titles[type]}←◆
811
+
812
+ ◆→開始:#{titles[type]}←◆
813
+ ■#{type}6
814
+ ◆→終了:#{titles[type]}←◆
815
+
816
+ EOS
817
+ assert_equal expected, compile_block(src)
818
+
819
+ src = <<-EOS
820
+ //#{type}{
821
+
822
+ * A
823
+
824
+ 1. B
825
+
826
+ //}
827
+
828
+ //#{type}[OMITEND1]{
829
+
830
+ //emlist{
831
+ LIST
832
+ //}
833
+
834
+ //}
835
+ //#{type}[OMITEND2]{
836
+ //}
837
+ EOS
838
+
839
+ expected = <<-EOS
840
+ ◆→開始:#{titles[type]}←◆
841
+
842
+ ● A
843
+
844
+ 1 B
845
+
846
+ ◆→終了:#{titles[type]}←◆
847
+
848
+ ◆→開始:#{titles[type]}←◆
849
+ ■OMITEND1
850
+
851
+ ◆→開始:インラインリスト←◆
852
+ LIST
853
+ ◆→終了:インラインリスト←◆
854
+
855
+ ◆→終了:#{titles[type]}←◆
856
+
857
+ ◆→開始:#{titles[type]}←◆
858
+ ■OMITEND2
859
+ ◆→終了:#{titles[type]}←◆
860
+
861
+ EOS
862
+ assert_equal expected, compile_block(src)
863
+ end
864
+ end
865
+
866
+ def test_minicolumn_blocks_nest_error1
867
+ %w[note memo tip info warning important caution notice].each do |type|
868
+ @builder.doc_status.clear
869
+ src = <<-EOS
870
+ //#{type}{
871
+
872
+ //#{type}{
873
+ //}
874
+
875
+ //}
876
+ EOS
877
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block(src) }
878
+ assert_match(/minicolumn cannot be nested:/, e.message)
879
+ end
880
+ end
881
+
882
+ def test_minicolumn_blocks_nest_error2
883
+ %w[note memo tip info warning important caution notice].each do |type|
884
+ @builder.doc_status.clear
885
+ src = <<-EOS
886
+ //#{type}{
887
+
888
+ //#{type}{
889
+
890
+ //}
891
+
892
+ //}
893
+ EOS
894
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block(src) }
895
+ assert_match(/minicolumn cannot be nested:/, e.message)
896
+ end
897
+ end
898
+
899
+ def test_minicolumn_blocks_nest_error3
900
+ %w[memo tip info warning important caution notice].each do |type|
901
+ @builder.doc_status.clear
902
+ src = <<-EOS
903
+ //#{type}{
904
+
905
+ //note{
906
+ //}
907
+
908
+ //}
909
+ EOS
910
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block(src) }
911
+ assert_match(/minicolumn cannot be nested:/, e.message)
912
+ end
913
+ end
914
+
738
915
  def test_image
739
916
  def @chapter.image(_id)
740
917
  item = Book::Index::Item.new('sampleimg', 1)
@@ -816,18 +993,18 @@ EOB
816
993
  end
817
994
 
818
995
  def test_inline_unknown
819
- e = assert_raises(ReVIEW::ApplicationError) { compile_block "@<img>{n}\n" }
996
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block("@<img>{n}\n") }
820
997
  assert_equal ':1: error: unknown image: n', e.message
821
- e = assert_raises(ReVIEW::ApplicationError) { compile_block "@<fn>{n}\n" }
998
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block("@<fn>{n}\n") }
822
999
  assert_equal ':1: error: unknown footnote: n', e.message
823
- e = assert_raises(ReVIEW::ApplicationError) { compile_block "@<hd>{n}\n" }
1000
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block("@<hd>{n}\n") }
824
1001
  assert_equal ':1: error: unknown headline: n', e.message
825
1002
  %w[list table column].each do |name|
826
- e = assert_raises(ReVIEW::ApplicationError) { compile_block "@<#{name}>{n}\n" }
1003
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block("@<#{name}>{n}\n") }
827
1004
  assert_equal ":1: error: unknown #{name}: n", e.message
828
1005
  end
829
1006
  %w[chap chapref title].each do |name|
830
- e = assert_raises(ReVIEW::ApplicationError) { compile_block "@<#{name}>{n}\n" }
1007
+ e = assert_raises(ReVIEW::ApplicationError) { compile_block("@<#{name}>{n}\n") }
831
1008
  assert_equal ':1: error: key not found: "n"', e.message
832
1009
  end
833
1010
  end