review 5.3.0 → 5.4.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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-tex.yml +1 -1
  3. data/.github/workflows/ruby.yml +1 -1
  4. data/.rubocop.yml +1 -322
  5. data/NEWS.ja.md +48 -0
  6. data/NEWS.md +48 -0
  7. data/README.md +9 -8
  8. data/bin/review +1 -1
  9. data/bin/review-catalog-converter +15 -15
  10. data/bin/review-check +7 -7
  11. data/bin/review-compile +6 -8
  12. data/bin/review-index +1 -1
  13. data/bin/review-preproc +1 -1
  14. data/bin/review-validate +2 -2
  15. data/doc/config.yml.sample +7 -1
  16. data/doc/config.yml.sample-simple +1 -1
  17. data/lib/review/book/base.rb +3 -3
  18. data/lib/review/book/book_unit.rb +1 -1
  19. data/lib/review/book/chapter.rb +1 -1
  20. data/lib/review/book/index.rb +3 -3
  21. data/lib/review/book/part.rb +12 -13
  22. data/lib/review/book/volume.rb +1 -1
  23. data/lib/review/builder.rb +10 -12
  24. data/lib/review/catalog.rb +5 -5
  25. data/lib/review/compiler.rb +13 -13
  26. data/lib/review/configure.rb +5 -2
  27. data/lib/review/epub2html.rb +12 -12
  28. data/lib/review/epubmaker/content.rb +1 -1
  29. data/lib/review/epubmaker/epubcommon.rb +44 -42
  30. data/lib/review/epubmaker/epubv2.rb +2 -1
  31. data/lib/review/epubmaker/epubv3.rb +5 -4
  32. data/lib/review/epubmaker/producer.rb +3 -3
  33. data/lib/review/epubmaker/reviewheaderlistener.rb +1 -1
  34. data/lib/review/epubmaker.rb +32 -31
  35. data/lib/review/extentions/string.rb +1 -1
  36. data/lib/review/htmlbuilder.rb +16 -15
  37. data/lib/review/htmlutils.rb +17 -17
  38. data/lib/review/i18n.rb +3 -3
  39. data/lib/review/idgxmlbuilder.rb +22 -21
  40. data/lib/review/idgxmlmaker.rb +15 -13
  41. data/lib/review/index_builder.rb +4 -20
  42. data/lib/review/init.rb +4 -4
  43. data/lib/review/latexbuilder.rb +30 -32
  44. data/lib/review/lineinput.rb +3 -3
  45. data/lib/review/location.rb +1 -1
  46. data/lib/review/logger.rb +21 -21
  47. data/lib/review/makerhelper.rb +3 -3
  48. data/lib/review/markdownbuilder.rb +6 -6
  49. data/lib/review/pdfmaker.rb +23 -19
  50. data/lib/review/plaintextbuilder.rb +5 -5
  51. data/lib/review/preprocessor/repository.rb +1 -1
  52. data/lib/review/preprocessor.rb +5 -5
  53. data/lib/review/textmaker.rb +20 -18
  54. data/lib/review/textutils.rb +3 -5
  55. data/lib/review/topbuilder.rb +71 -12
  56. data/lib/review/update.rb +16 -8
  57. data/lib/review/version.rb +1 -1
  58. data/lib/review/webmaker.rb +32 -32
  59. data/lib/review/webtocprinter.rb +10 -10
  60. data/lib/review/yamlloader.rb +35 -2
  61. data/review.gemspec +1 -0
  62. data/samples/sample-book/src/config.yml +0 -1
  63. data/templates/html/_titlepage.html.erb +9 -17
  64. data/templates/opf/opf_manifest_epubv2.opf.erb +1 -1
  65. data/templates/opf/opf_manifest_epubv3.opf.erb +1 -1
  66. data/test/book_test_helper.rb +10 -10
  67. data/test/test_epub3maker.rb +3 -3
  68. data/test/test_epubmaker.rb +14 -29
  69. data/test/test_epubmaker_cmd.rb +2 -2
  70. data/test/test_htmlbuilder.rb +4 -5
  71. data/test/test_idgxmlbuilder.rb +10 -10
  72. data/test/test_idgxmlmaker_cmd.rb +1 -1
  73. data/test/test_img_math.rb +11 -2
  74. data/test/test_latexbuilder.rb +2 -3
  75. data/test/test_pdfmaker_cmd.rb +10 -10
  76. data/test/test_textmaker_cmd.rb +1 -1
  77. data/test/test_topbuilder.rb +151 -11
  78. data/test/test_yamlloader.rb +28 -42
  79. metadata +8 -7
@@ -321,12 +321,12 @@ EOT
321
321
  <item id="ch02-html" href="ch02.html" media-type="application/xhtml+xml"/>
322
322
  <item id="ch03-html" href="ch03.html" media-type="application/xhtml+xml" properties="mathml"/>
323
323
  <item id="ch04-html" href="ch04.html" media-type="application/xhtml+xml"/>
324
- <item id="sample-png" href="sample.png" media-type="image/png"/>
325
- <item id="sample-jpg" href="sample.jpg" media-type="image/jpeg"/>
324
+ <item id="sample-GIF" href="sample.GIF" media-type="image/gif"/>
326
325
  <item id="sample-JPEG" href="sample.JPEG" media-type="image/jpeg"/>
327
326
  <item id="sample-SvG" href="sample.SvG" media-type="image/svg+xml"/>
328
- <item id="sample-GIF" href="sample.GIF" media-type="image/gif"/>
329
327
  <item id="sample-css" href="sample.css" media-type="text/css"/>
328
+ <item id="sample-jpg" href="sample.jpg" media-type="image/jpeg"/>
329
+ <item id="sample-png" href="sample.png" media-type="image/png"/>
330
330
  </manifest>
331
331
  <spine page-progression-direction="ltr">
332
332
  <itemref idref="sample" linear="no"/>
@@ -6,6 +6,7 @@ class EPUBMakerTest < Test::Unit::TestCase
6
6
  config = ReVIEW::Configure.values
7
7
  config.merge!(
8
8
  'bookname' => 'sample',
9
+ 'booktitle' => 'Sample Book',
9
10
  'title' => 'Sample Book',
10
11
  'epubversion' => 2,
11
12
  'urnid' => 'http://example.jp/',
@@ -318,12 +319,12 @@ EOT
318
319
  <item id="ch02-html" href="ch02.html" media-type="application/xhtml+xml"/>
319
320
  <item id="ch03-html" href="ch03.html" media-type="application/xhtml+xml"/>
320
321
  <item id="ch04-html" href="ch04.html" media-type="application/xhtml+xml"/>
321
- <item id="sample-png" href="sample.png" media-type="image/png"/>
322
- <item id="sample-jpg" href="sample.jpg" media-type="image/jpeg"/>
322
+ <item id="sample-GIF" href="sample.GIF" media-type="image/gif"/>
323
323
  <item id="sample-JPEG" href="sample.JPEG" media-type="image/jpeg"/>
324
324
  <item id="sample-SvG" href="sample.SvG" media-type="image/svg+xml"/>
325
- <item id="sample-GIF" href="sample.GIF" media-type="image/gif"/>
326
325
  <item id="sample-css" href="sample.css" media-type="text/css"/>
326
+ <item id="sample-jpg" href="sample.jpg" media-type="image/jpeg"/>
327
+ <item id="sample-png" href="sample.png" media-type="image/png"/>
327
328
  </manifest>
328
329
  <spine toc="ncx">
329
330
  <itemref idref="sample" linear="no"/>
@@ -806,19 +807,11 @@ EOT
806
807
  <title>Sample Book</title>
807
808
  </head>
808
809
  <body>
809
- <h1 class="tp-title">Sample Book</h1>
810
- <p>
811
- <br />
812
- <br />
813
- </p>
814
- <h2 class="tp-author">Mr.Smith</h2>
815
- <p>
816
- <br />
817
- <br />
818
- <br />
819
- <br />
820
- </p>
821
- <h3 class="tp-publisher">BLUEPRINT</h3>
810
+ <div class="titlepage">
811
+ <h1 class="tp-title">Sample Book</h1>
812
+ <h2 class="tp-author">Mr.Smith</h2>
813
+ <h3 class="tp-publisher">BLUEPRINT</h3>
814
+ </div>
822
815
  </body>
823
816
  </html>
824
817
  EOT
@@ -842,19 +835,11 @@ EOT
842
835
  <title>Sample Book</title>
843
836
  </head>
844
837
  <body>
845
- <h1 class="tp-title">Sample Book</h1>
846
- <p>
847
- <br />
848
- <br />
849
- </p>
850
- <h2 class="tp-author">Mr.Smith</h2>
851
- <p>
852
- <br />
853
- <br />
854
- <br />
855
- <br />
856
- </p>
857
- <h3 class="tp-publisher">BLUEPRINT</h3>
838
+ <div class="titlepage">
839
+ <h1 class="tp-title">Sample Book</h1>
840
+ <h2 class="tp-author">Mr.Smith</h2>
841
+ <h3 class="tp-publisher">BLUEPRINT</h3>
842
+ </div>
858
843
  </body>
859
844
  </html>
860
845
  EOT
@@ -21,7 +21,7 @@ class EPUBMakerCmdTest < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def common_buildepub(bookdir, configfile, targetepubfile)
24
- if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
24
+ unless /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
25
25
  config = prepare_samplebook(@tmpdir1, bookdir, nil, configfile)
26
26
  builddir = File.join(@tmpdir1, config['bookname'] + '-epub')
27
27
  assert !File.exist?(builddir)
@@ -35,7 +35,7 @@ class EPUBMakerCmdTest < Test::Unit::TestCase
35
35
  end
36
36
 
37
37
  def check_filesize(epubfile)
38
- if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
38
+ unless /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
39
39
  Zip::File.open(epubfile) do |zio|
40
40
  zio.each do |entry|
41
41
  assert_not_equal(0, entry.size, "#{entry.name} is 0 byte.")
@@ -1708,7 +1708,7 @@ EOS
1708
1708
  end
1709
1709
 
1710
1710
  def test_texequation
1711
- return true if /mswin|mingw|cygwin/ =~ RUBY_PLATFORM
1711
+ return true if /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
1712
1712
  return true unless system('latex -version 1>/dev/null 2>/dev/null')
1713
1713
 
1714
1714
  mktmpbookdir('catalog.yml' => "CHAPS:\n - ch01.re\n",
@@ -1741,7 +1741,7 @@ EOS
1741
1741
 
1742
1742
  def test_texequation_fail
1743
1743
  # Re:VIEW 3 never fail on defer mode. This test is only for Re:VIEW 2.
1744
- return true if /mswin|mingw|cygwin/ =~ RUBY_PLATFORM
1744
+ return true if /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
1745
1745
  return true unless system('latex -version 1>/dev/null 2>/dev/null')
1746
1746
 
1747
1747
  mktmpbookdir('catalog.yml' => "CHAPS:\n - ch01.re\n",
@@ -2887,12 +2887,11 @@ EOS
2887
2887
 
2888
2888
  def test_inline_w
2889
2889
  Dir.mktmpdir do |dir|
2890
- File.open(File.join(dir, 'words.csv'), 'w') do |f|
2891
- f.write <<EOB
2890
+ File.write(File.join(dir, 'words.csv'), <<EOB
2892
2891
  "F","foo"
2893
2892
  "B","bar""\\<>_@<b>{BAZ}"
2894
2893
  EOB
2895
- end
2894
+ )
2896
2895
  @book.config['words_file'] = File.join(dir, 'words.csv')
2897
2896
  actual = compile_block('@<w>{F} @<w>{B} @<wb>{B} @<w>{N}')
2898
2897
  assert_equal %Q(<p>foo bar&quot;\\&lt;&gt;_@&lt;b&gt;{BAZ} <b>bar&quot;\\&lt;&gt;_@&lt;b&gt;{BAZ}</b> [missing word: N]</p>\n), actual
@@ -348,15 +348,15 @@ EOS
348
348
  //}
349
349
  EOS
350
350
 
351
- if type == 'notice' # exception pattern
352
- expected = <<-EOS.chomp
351
+ expected = if type == 'notice' # exception pattern
352
+ <<-EOS.chomp
353
353
  <#{type}-t><title aid:pstyle='#{type}-title'>#{type}1</title></#{type}-t><#{type}-t><title aid:pstyle='#{type}-title'>#{type}2</title></#{type}-t>
354
354
  EOS
355
- else
356
- expected = <<-EOS.chomp
355
+ else
356
+ <<-EOS.chomp
357
357
  <#{type}><title aid:pstyle='#{type}-title'>#{type}1</title></#{type}><#{type}><title aid:pstyle='#{type}-title'>#{type}2</title></#{type}>
358
358
  EOS
359
- end
359
+ end
360
360
  assert_equal expected, compile_block(src)
361
361
 
362
362
  src = <<-EOS
@@ -412,17 +412,17 @@ LIST
412
412
  //}
413
413
  EOS
414
414
 
415
- if type == 'notice' # exception pattern
416
- expected = <<-EOS.chomp
415
+ expected = if type == 'notice' # exception pattern
416
+ <<-EOS.chomp
417
417
  <#{type}><ul><li aid:pstyle="ul-item">A</li></ul><ol><li aid:pstyle="ol-item" olnum="1" num="1">B</li></ol></#{type}><#{type}-t><title aid:pstyle='#{type}-title'>OMITEND1</title><list type='emlist'><pre>LIST
418
418
  </pre></list></#{type}-t><#{type}-t><title aid:pstyle='#{type}-title'>OMITEND2</title></#{type}-t>
419
419
  EOS
420
- else
421
- expected = <<-EOS.chomp
420
+ else
421
+ <<-EOS.chomp
422
422
  <#{type}><ul><li aid:pstyle="ul-item">A</li></ul><ol><li aid:pstyle="ol-item" olnum="1" num="1">B</li></ol></#{type}><#{type}><title aid:pstyle='#{type}-title'>OMITEND1</title><list type='emlist'><pre>LIST
423
423
  </pre></list></#{type}><#{type}><title aid:pstyle='#{type}-title'>OMITEND2</title></#{type}>
424
424
  EOS
425
- end
425
+ end
426
426
  assert_equal expected, compile_block(src)
427
427
  end
428
428
  end
@@ -21,7 +21,7 @@ class IDGXMLMakerCmdTest < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def common_buildidgxml(bookdir, configfile, targetfile, option)
24
- if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
24
+ unless /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
25
25
  config = prepare_samplebook(@tmpdir1, bookdir, nil, configfile)
26
26
  builddir = File.join(@tmpdir1, config['bookname'] + '-idgxml')
27
27
  assert !File.exist?(builddir)
@@ -30,7 +30,7 @@ class ImgMathTest < Test::Unit::TestCase
30
30
  end
31
31
 
32
32
  def test_defer_math_image
33
- unless support_latex_in_tests?
33
+ unless support_latex_in_tests? && support_pdftocairo_in_tests?
34
34
  $stderr.puts 'skip test_defer_math_image'
35
35
  return true
36
36
  end
@@ -104,7 +104,16 @@ class ImgMathTest < Test::Unit::TestCase
104
104
  begin
105
105
  `uplatex -v`
106
106
  true
107
- rescue
107
+ rescue StandardError
108
+ false
109
+ end
110
+ end
111
+
112
+ def support_pdftocairo_in_tests?
113
+ begin
114
+ `pdftocairo -v`
115
+ true
116
+ rescue StandardError
108
117
  false
109
118
  end
110
119
  end
@@ -2422,12 +2422,11 @@ EOS
2422
2422
 
2423
2423
  def test_inline_w
2424
2424
  Dir.mktmpdir do |dir|
2425
- File.open(File.join(dir, 'words.csv'), 'w') do |f|
2426
- f.write <<EOB
2425
+ File.write(File.join(dir, 'words.csv'), <<EOB
2427
2426
  "F","foo"
2428
2427
  "B","bar""\\<>_@<b>{BAZ}"
2429
2428
  EOB
2430
- end
2429
+ )
2431
2430
  @book.config['words_file'] = File.join(dir, 'words.csv')
2432
2431
 
2433
2432
  io = StringIO.new
@@ -21,7 +21,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def common_buildpdf(bookdir, templatedir, configfile, targetpdffile, option = nil)
24
- if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
24
+ unless /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
25
25
  config = prepare_samplebook(@tmpdir1, bookdir, templatedir, configfile)
26
26
  builddir = File.join(@tmpdir1, config['bookname'] + '-pdf')
27
27
  assert !File.exist?(builddir)
@@ -41,7 +41,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
41
41
  def test_pdfmaker_cmd_sample_jsbook_print
42
42
  begin
43
43
  `uplatex -v`
44
- rescue
44
+ rescue StandardError
45
45
  $stderr.puts 'skip test_pdfmaker_cmd_sample_jsbook_print'
46
46
  return true
47
47
  end
@@ -51,7 +51,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
51
51
  def test_pdfmaker_cmd_sample_jsbook_ebook
52
52
  begin
53
53
  `uplatex -v`
54
- rescue
54
+ rescue StandardError
55
55
  $stderr.puts 'skip test_pdfmaker_cmd_sample_jsbook_ebook'
56
56
  return true
57
57
  end
@@ -61,7 +61,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
61
61
  def test_pdfmaker_cmd_sample_jlreq_print
62
62
  begin
63
63
  `uplatex -v`
64
- rescue
64
+ rescue StandardError
65
65
  $stderr.puts 'skip test_pdfmaker_cmd_sample_jlreq_print'
66
66
  return true
67
67
  end
@@ -71,7 +71,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
71
71
  def test_pdfmaker_cmd_sample_jlreq_ebook
72
72
  begin
73
73
  `uplatex -v`
74
- rescue
74
+ rescue StandardError
75
75
  $stderr.puts 'skip test_pdfmaker_cmd_sample_jlreq_ebook'
76
76
  return true
77
77
  end
@@ -81,7 +81,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
81
81
  def test_pdfmaker_cmd_syntax_jsbook_print
82
82
  begin
83
83
  `uplatex -v`
84
- rescue
84
+ rescue StandardError
85
85
  $stderr.puts 'skip test_pdfmaker_cmd_syntax_jsbook_print'
86
86
  return true
87
87
  end
@@ -91,7 +91,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
91
91
  def test_pdfmaker_cmd_syntax_jsbook_print_buildonly
92
92
  begin
93
93
  `uplatex -v`
94
- rescue
94
+ rescue StandardError
95
95
  $stderr.puts 'skip test_pdfmaker_cmd_syntax_jsbook_print_buildonly'
96
96
  return true
97
97
  end
@@ -101,7 +101,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
101
101
  def test_pdfmaker_cmd_syntax_jsbook_ebook
102
102
  begin
103
103
  `uplatex -v`
104
- rescue
104
+ rescue StandardError
105
105
  $stderr.puts 'skip test_pdfmaker_cmd_syntax_jsbook_ebook'
106
106
  return true
107
107
  end
@@ -111,7 +111,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
111
111
  def test_pdfmaker_cmd_syntax_jlreq_ebook
112
112
  begin
113
113
  `uplatex -v`
114
- rescue
114
+ rescue StandardError
115
115
  $stderr.puts 'skip test_pdfmaker_cmd_syntax_jlreq_ebook'
116
116
  return true
117
117
  end
@@ -121,7 +121,7 @@ class PDFMakerCmdTest < Test::Unit::TestCase
121
121
  def test_pdfmaker_cmd_syntax_jlreq_ebook_lualatex
122
122
  begin
123
123
  `lualatex -v`
124
- rescue
124
+ rescue StandardError
125
125
  $stderr.puts 'skip test_pdfmaker_cmd_syntax_jlreq_ebook_lualatex'
126
126
  return true
127
127
  end
@@ -21,7 +21,7 @@ class TEXTMakerCmdTest < Test::Unit::TestCase
21
21
  end
22
22
 
23
23
  def common_buildtext(bookdir, configfile, targetfile, option)
24
- if /mswin|mingw|cygwin/ !~ RUBY_PLATFORM
24
+ unless /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
25
25
  config = prepare_samplebook(@tmpdir1, bookdir, nil, configfile)
26
26
  builddir = File.join(@tmpdir1, config['bookname'] + '-text')
27
27
  assert !File.exist?(builddir)
@@ -151,7 +151,8 @@ class TOPBuidlerTest < Test::Unit::TestCase
151
151
  actual = compile_block("//table{\n★1☆\t▲2☆\n------------\n★3☆\t▲4☆<>&\n//}\n")
152
152
  expected = <<-EOS
153
153
  ◆→開始:表←◆
154
- ★★1☆☆\t★▲2☆☆
154
+ 1☆\t2
155
+ ------------
155
156
  ★3☆\t▲4☆<>&
156
157
  ◆→終了:表←◆
157
158
 
@@ -506,7 +507,8 @@ EOS
506
507
  actual = compile_block("//table{\naaa\tbbb\n------------\nccc\tddd<>&\n//}\n")
507
508
  expected = <<-EOS
508
509
  ◆→開始:表←◆
509
- aaa☆\t★bbb☆
510
+ aaa\tbbb
511
+ ------------
510
512
  ccc\tddd<>&
511
513
  ◆→終了:表←◆
512
514
 
@@ -518,7 +520,8 @@ EOS
518
520
  ◆→開始:表←◆
519
521
  表1.1 FOO
520
522
 
521
- aaa☆\t★bbb☆
523
+ aaa\tbbb
524
+ ------------
522
525
  ccc\tddd<>&
523
526
  ◆→終了:表←◆
524
527
 
@@ -529,12 +532,36 @@ EOS
529
532
  actual = compile_block("//table[foo][FOO]{\naaa\tbbb\n------------\nccc\tddd<>&\n//}\n")
530
533
  expected = <<-EOS
531
534
  ◆→開始:表←◆
532
- aaa☆\t★bbb☆
535
+ aaa\tbbb
536
+ ------------
533
537
  ccc\tddd<>&
534
538
 
535
539
  表1.1 FOO
536
540
  ◆→終了:表←◆
537
541
 
542
+ EOS
543
+ assert_equal expected, actual
544
+ end
545
+
546
+ def test_table_th_bold
547
+ @config['textmaker']['th_bold'] = true
548
+ actual = compile_block("//table{\naaa\tbbb\n------------\nccc\tddd<>&\n//}\n")
549
+ expected = <<-EOS
550
+ ◆→開始:表←◆
551
+ ★aaa☆\t★bbb☆
552
+ ccc\tddd<>&
553
+ ◆→終了:表←◆
554
+
555
+ EOS
556
+ assert_equal expected, actual
557
+
558
+ actual = compile_block("//table{\naaa\tbbb\nccc\tddd<>&\n//}\n")
559
+ expected = <<-EOS
560
+ ◆→開始:表←◆
561
+ ★aaa☆\tbbb
562
+ ★ccc☆\tddd<>&
563
+ ◆→終了:表←◆
564
+
538
565
  EOS
539
566
  assert_equal expected, actual
540
567
  end
@@ -561,6 +588,28 @@ EOS
561
588
  ◆→開始:表←◆
562
589
  foo
563
590
 
591
+ aaa\tbbb
592
+ ------------
593
+ ccc\tddd<>&
594
+ ◆→終了:表←◆
595
+
596
+ ◆→開始:表←◆
597
+ aaa\tbbb
598
+ ------------
599
+ ccc\tddd<>&
600
+ ◆→終了:表←◆
601
+
602
+ EOS
603
+ assert_equal expected, actual
604
+ end
605
+
606
+ def test_emtable_thbold
607
+ @config['textmaker']['th_bold'] = true
608
+ actual = compile_block("//emtable[foo]{\naaa\tbbb\n------------\nccc\tddd<>&\n//}\n//emtable{\naaa\tbbb\n------------\nccc\tddd<>&\n//}\n")
609
+ expected = <<-EOS
610
+ ◆→開始:表←◆
611
+ foo
612
+
564
613
  ★aaa☆\t★bbb☆
565
614
  ccc\tddd<>&
566
615
  ◆→終了:表←◆
@@ -570,6 +619,37 @@ ccc\tddd<>&
570
619
  ccc\tddd<>&
571
620
  ◆→終了:表←◆
572
621
 
622
+ EOS
623
+ assert_equal expected, actual
624
+ end
625
+
626
+ def test_imgtable
627
+ def @chapter.image(_id)
628
+ item = Book::Index::Item.new('sampleimg', 1)
629
+ item.instance_eval { @path = './images/chap1-sampleimg.png' }
630
+ item
631
+ end
632
+
633
+ actual = compile_block("//imgtable[sampleimg][sample photo]{\nfoo\n//}\n")
634
+ expected = <<-EOS
635
+ ◆→開始:表←◆
636
+ 表1.1 sample photo
637
+
638
+ ◆→./images/chap1-sampleimg.png←◆
639
+ ◆→終了:表←◆
640
+
641
+ EOS
642
+ assert_equal expected, actual
643
+
644
+ @config['caption_position']['table'] = 'bottom'
645
+ actual = compile_block("//imgtable[sampleimg][sample photo]{\nfoo\n//}\n")
646
+ expected = <<-EOS
647
+ ◆→開始:表←◆
648
+ ◆→./images/chap1-sampleimg.png←◆
649
+
650
+ 表1.1 sample photo
651
+ ◆→終了:表←◆
652
+
573
653
  EOS
574
654
  assert_equal expected, actual
575
655
  end
@@ -578,7 +658,8 @@ EOS
578
658
  src = "//table{\n1\t2\t\t3 4| 5\n------------\na b\tc d |e\n//}\n"
579
659
  expected = <<-EOS
580
660
  ◆→開始:表←◆
581
- 1 2 3 4| 5
661
+ 1 2 3 4| 5
662
+ ------------
582
663
  a b c d |e
583
664
  ◆→終了:表←◆
584
665
 
@@ -590,7 +671,8 @@ EOS
590
671
  actual = compile_block(src)
591
672
  expected = <<-EOS
592
673
  ◆→開始:表←◆
593
- 1 2☆ ★☆ ★3 4| 5
674
+ 1 2 3 4| 5
675
+ ------------
594
676
  a b c d |e
595
677
  ◆→終了:表←◆
596
678
 
@@ -601,7 +683,8 @@ EOS
601
683
  actual = compile_block(src)
602
684
  expected = <<-EOS
603
685
  ◆→開始:表←◆
604
- 1 2 3 4|☆ 5
686
+ 1 2 3 4| 5
687
+ ------------
605
688
  a b c d |e
606
689
  ◆→終了:表←◆
607
690
 
@@ -612,7 +695,8 @@ EOS
612
695
  actual = compile_block(src)
613
696
  expected = <<-EOS
614
697
  ◆→開始:表←◆
615
- 1 2 3 4 5
698
+ 1 2 3 4 5
699
+ ------------
616
700
  a b c d e
617
701
  ◆→終了:表←◆
618
702
 
@@ -965,6 +1049,63 @@ EOS
965
1049
  図1.1 sample photo
966
1050
  ◆→終了:図←◆
967
1051
 
1052
+ EOS
1053
+ assert_equal expected, actual
1054
+ end
1055
+
1056
+ def test_image_dummy
1057
+ actual = compile_block("//image[dummy][sample photo]{\nDUMMY\n//}\n")
1058
+ expected = <<-EOS
1059
+ ◆→開始:図←◆
1060
+ DUMMY
1061
+
1062
+ 図1.1 sample photo
1063
+ ◆→終了:図←◆
1064
+
1065
+ EOS
1066
+ assert_equal expected, actual
1067
+ end
1068
+
1069
+ def test_indepimage
1070
+ def @chapter.image(_id)
1071
+ item = Book::Index::Item.new('sampleimg', 1)
1072
+ item.instance_eval { @path = './images/chap1-sampleimg.png' }
1073
+ item
1074
+ end
1075
+
1076
+ actual = compile_block("//indepimage[sampleimg][sample photo]{\nfoo\n//}\n")
1077
+ expected = <<-EOS
1078
+ ◆→開始:図←◆
1079
+ ◆→./images/chap1-sampleimg.png←◆
1080
+
1081
+ 図 sample photo
1082
+ ◆→終了:図←◆
1083
+
1084
+ EOS
1085
+ assert_equal expected, actual
1086
+
1087
+ @config['caption_position']['image'] = 'top'
1088
+ actual = compile_block("//indepimage[sampleimg][sample photo]{\nfoo\n//}\n")
1089
+ expected = <<-EOS
1090
+ ◆→開始:図←◆
1091
+ 図 sample photo
1092
+
1093
+ ◆→./images/chap1-sampleimg.png←◆
1094
+ ◆→終了:図←◆
1095
+
1096
+ EOS
1097
+ assert_equal expected, actual
1098
+ end
1099
+
1100
+ def test_indepimage_dummy
1101
+ actual = compile_block("//indepimage[dummy][sample photo]{\nDUMMY\n//}\n")
1102
+ expected = <<-EOS
1103
+ ◆→開始:図←◆
1104
+ DUMMY
1105
+
1106
+ 図 sample photo
1107
+ ◆→終了:図←◆
1108
+
968
1109
  EOS
969
1110
  assert_equal expected, actual
970
1111
  end
@@ -983,12 +1124,11 @@ EOS
983
1124
 
984
1125
  def test_inline_w
985
1126
  Dir.mktmpdir do |dir|
986
- File.open(File.join(dir, 'words.csv'), 'w') do |f|
987
- f.write <<EOB
1127
+ File.write(File.join(dir, 'words.csv'), <<EOB
988
1128
  "F","foo"
989
1129
  "B","bar""\\<>_@<b>{BAZ}"
990
1130
  EOB
991
- end
1131
+ )
992
1132
  @book.config['words_file'] = File.join(dir, 'words.csv')
993
1133
 
994
1134
  io = StringIO.new