review 5.6.0 → 5.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rubocop.yml +31 -0
  3. data/.github/workflows/ruby-tex.yml +5 -1
  4. data/.github/workflows/ruby-win.yml +1 -1
  5. data/.github/workflows/ruby.yml +2 -2
  6. data/.rubocop.yml +13 -2
  7. data/NEWS.ja.md +39 -0
  8. data/NEWS.md +38 -0
  9. data/README.md +1 -1
  10. data/doc/config.yml.sample +11 -0
  11. data/doc/format.ja.md +50 -2
  12. data/doc/format.md +50 -2
  13. data/lib/review/book/base.rb +2 -2
  14. data/lib/review/book/image_finder.rb +29 -14
  15. data/lib/review/book/index.rb +1 -8
  16. data/lib/review/builder.rb +18 -9
  17. data/lib/review/configure.rb +7 -0
  18. data/lib/review/epubmaker/epubcommon.rb +13 -7
  19. data/lib/review/epubmaker/epubv2.rb +0 -5
  20. data/lib/review/epubmaker/epubv3.rb +9 -1
  21. data/lib/review/epubmaker/producer.rb +2 -3
  22. data/lib/review/epubmaker.rb +14 -5
  23. data/lib/review/htmlbuilder.rb +3 -3
  24. data/lib/review/idgxmlbuilder.rb +4 -3
  25. data/lib/review/idgxmlmaker.rb +13 -2
  26. data/lib/review/img_graph.rb +79 -0
  27. data/lib/review/img_math.rb +9 -2
  28. data/lib/review/init.rb +3 -3
  29. data/lib/review/latexbuilder.rb +1 -1
  30. data/lib/review/lineinput.rb +2 -2
  31. data/lib/review/makerhelper.rb +2 -2
  32. data/lib/review/pdfmaker.rb +14 -6
  33. data/lib/review/plaintextbuilder.rb +13 -1
  34. data/lib/review/textmaker.rb +14 -3
  35. data/lib/review/update.rb +3 -7
  36. data/lib/review/version.rb +1 -1
  37. data/lib/review/yamlloader.rb +0 -3
  38. data/review.gemspec +3 -3
  39. data/samples/syntax-book/Gemfile +1 -1
  40. data/samples/syntax-book/ch02.re +6 -0
  41. data/templates/latex/review-jlreq/review-jlreq.cls +14 -0
  42. data/templates/latex/review-jsbook/review-jsbook.cls +14 -0
  43. data/templates/opf/epubv2.opf.erb +2 -0
  44. data/templates/opf/epubv3.opf.erb +2 -0
  45. data/templates/opf/opf_manifest_epubv2.opf.erb +2 -0
  46. data/templates/opf/opf_manifest_epubv3.opf.erb +2 -0
  47. data/templates/opf/opf_tocx_epubv3.opf.erb +2 -0
  48. metadata +22 -136
  49. data/test/assets/black.eps +0 -280
  50. data/test/assets/fit.png +0 -0
  51. data/test/assets/header_listener.html +0 -35
  52. data/test/assets/img_math/img1.png +0 -0
  53. data/test/assets/img_math/img2.png +0 -0
  54. data/test/assets/img_math/img3.png +0 -0
  55. data/test/assets/large.gif +0 -0
  56. data/test/assets/large.jpg +0 -0
  57. data/test/assets/large.png +0 -0
  58. data/test/assets/large.svg +0 -65
  59. data/test/assets/syntax_book_index_detail.txt +0 -60
  60. data/test/assets/test.xml.erb +0 -3
  61. data/test/assets/test_template.tex +0 -189
  62. data/test/assets/test_template_backmatter.tex +0 -200
  63. data/test/book_test_helper.rb +0 -44
  64. data/test/run_test.rb +0 -12
  65. data/test/test_book.rb +0 -588
  66. data/test/test_book_chapter.rb +0 -329
  67. data/test/test_book_part.rb +0 -53
  68. data/test/test_builder.rb +0 -128
  69. data/test/test_catalog.rb +0 -174
  70. data/test/test_catalog_converter_cmd.rb +0 -73
  71. data/test/test_compiler.rb +0 -52
  72. data/test/test_configure.rb +0 -91
  73. data/test/test_converter.rb +0 -21
  74. data/test/test_epub3maker.rb +0 -733
  75. data/test/test_epubmaker.rb +0 -931
  76. data/test/test_epubmaker_cmd.rb +0 -56
  77. data/test/test_extentions_hash.rb +0 -66
  78. data/test/test_helper.rb +0 -62
  79. data/test/test_htmlbuilder.rb +0 -3315
  80. data/test/test_htmltoc.rb +0 -29
  81. data/test/test_htmlutils.rb +0 -43
  82. data/test/test_i18n.rb +0 -300
  83. data/test/test_idgxmlbuilder.rb +0 -1529
  84. data/test/test_idgxmlmaker_cmd.rb +0 -50
  85. data/test/test_image_finder.rb +0 -81
  86. data/test/test_img_math.rb +0 -120
  87. data/test/test_index.rb +0 -287
  88. data/test/test_indexbuilder.rb +0 -52
  89. data/test/test_latexbuilder.rb +0 -2972
  90. data/test/test_latexbuilder_v2.rb +0 -1654
  91. data/test/test_lineinput.rb +0 -104
  92. data/test/test_location.rb +0 -30
  93. data/test/test_logger.rb +0 -33
  94. data/test/test_makerhelper.rb +0 -44
  95. data/test/test_markdownbuilder.rb +0 -371
  96. data/test/test_md2inaobuilder.rb +0 -90
  97. data/test/test_pdfmaker.rb +0 -354
  98. data/test/test_pdfmaker_cmd.rb +0 -130
  99. data/test/test_plaintextbuilder.rb +0 -1214
  100. data/test/test_preprocessor.rb +0 -196
  101. data/test/test_review_ext.rb +0 -30
  102. data/test/test_reviewheaderlistener.rb +0 -49
  103. data/test/test_rstbuilder.rb +0 -619
  104. data/test/test_sec_counter.rb +0 -156
  105. data/test/test_template.rb +0 -33
  106. data/test/test_textmaker_cmd.rb +0 -58
  107. data/test/test_textutils.rb +0 -187
  108. data/test/test_tocprinter.rb +0 -46
  109. data/test/test_topbuilder.rb +0 -1301
  110. data/test/test_update.rb +0 -473
  111. data/test/test_webtocprinter.rb +0 -195
  112. data/test/test_yamlloader.rb +0 -186
  113. data/test/test_zip_exporter.rb +0 -106
@@ -1,56 +0,0 @@
1
- require 'test_helper'
2
- require 'tmpdir'
3
- require 'fileutils'
4
- require 'yaml'
5
- require 'rbconfig'
6
- require 'zip'
7
-
8
- REVIEW_EPUBMAKER = File.expand_path('../bin/review-epubmaker', __dir__)
9
-
10
- class EPUBMakerCmdTest < Test::Unit::TestCase
11
- def setup
12
- @tmpdir1 = Dir.mktmpdir
13
-
14
- @old_rubylib = ENV['RUBYLIB']
15
- ENV['RUBYLIB'] = File.expand_path('lib', __dir__)
16
- end
17
-
18
- def teardown
19
- FileUtils.rm_rf(@tmpdir1)
20
- ENV['RUBYLIB'] = @old_rubylib
21
- end
22
-
23
- def common_buildepub(bookdir, configfile, targetepubfile)
24
- unless /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
25
- config = prepare_samplebook(@tmpdir1, bookdir, nil, configfile)
26
- builddir = File.join(@tmpdir1, config['bookname'] + '-epub')
27
- assert !File.exist?(builddir)
28
-
29
- ruby_cmd = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']) + RbConfig::CONFIG['EXEEXT']
30
- Dir.chdir(@tmpdir1) do
31
- system("#{ruby_cmd} -S #{REVIEW_EPUBMAKER} #{configfile} 1>/dev/null 2>/dev/null")
32
- end
33
- assert File.exist?(File.join(@tmpdir1, targetepubfile))
34
- end
35
- end
36
-
37
- def check_filesize(epubfile)
38
- unless /mswin|mingw|cygwin/.match?(RUBY_PLATFORM)
39
- Zip::File.open(epubfile) do |zio|
40
- zio.each do |entry|
41
- assert_not_equal(0, entry.size, "#{entry.name} is 0 byte.")
42
- end
43
- end
44
- end
45
- end
46
-
47
- def test_epubmaker_cmd_samplebook
48
- common_buildepub('sample-book/src', 'config.yml', 'book.epub')
49
- check_filesize(File.join(@tmpdir1, 'book.epub'))
50
- end
51
-
52
- def test_epubmaker_cmd_syntaxbook
53
- common_buildepub('syntax-book', 'config.yml', 'syntax-book.epub')
54
- check_filesize(File.join(@tmpdir1, 'syntax-book.epub'))
55
- end
56
- end
@@ -1,66 +0,0 @@
1
- require 'test_helper'
2
- require 'review/extentions/hash'
3
-
4
- class TestExtentionsHash < Test::Unit::TestCase
5
- def test_deep_merge_simple
6
- assert_equal({ a: 1, b: 3, c: 4 },
7
- { a: 1, b: 2 }.deep_merge(b: 3, c: 4))
8
- end
9
-
10
- def test_deep_empty_r
11
- assert_equal({ b: 3, c: 4 },
12
- {}.deep_merge(b: 3, c: 4))
13
- end
14
-
15
- def test_deep_empty_l
16
- assert_equal({ a: 1, b: 2 },
17
- { a: 1, b: 2 }.deep_merge({}))
18
- end
19
-
20
- def test_deep_merge_nested
21
- assert_equal({ a: { aa: 1, ab: 2 },
22
- b: { ba: 5, bb: 4, bc: 6 },
23
- c: { ca: 1 } },
24
- { a: { aa: 1, ab: 2 },
25
- b: { ba: 3, bb: 4 } }.deep_merge(b: { ba: 5, bc: 6 },
26
- c: { ca: 1 }))
27
- end
28
-
29
- def test_deep_merge_with_array
30
- assert_equal({ a: 'string', b: ['BA'],
31
- c: { ca: [cab: 'CAB'], cb: 3 } },
32
- { a: 1, b: ['shouldoverriden'],
33
- c: { ca: [caa: 'shouldoverriden'], cb: 3 } }.
34
- deep_merge(a: 'string', b: ['BA'],
35
- c: { ca: [cab: 'CAB'] }))
36
- end
37
-
38
- def test_deep_merge_b_simple
39
- a = { a: 1, b: 2 }
40
- a.deep_merge!(b: 3, c: 4)
41
- assert_equal({ a: 1, b: 3, c: 4 }, a)
42
- end
43
-
44
- def test_deep_b_empty_r
45
- a = {}
46
- a.deep_merge!(b: 3, c: 4)
47
- assert_equal({ b: 3, c: 4 }, a)
48
- end
49
-
50
- def test_deep_b_empty_l
51
- a = { a: 1, b: 2 }
52
- a.deep_merge!({})
53
- assert_equal({ a: 1, b: 2 }, a)
54
- end
55
-
56
- def test_deep_merge_b_nested
57
- a = { a: { aa: 1, ab: 2 },
58
- b: { ba: 3, bb: 4 } }
59
- a.deep_merge!(b: { ba: 5, bc: 6 },
60
- c: { ca: 1 })
61
- assert_equal({ a: { aa: 1, ab: 2 },
62
- b: { ba: 5, bb: 4, bc: 6 },
63
- c: { ca: 1 } },
64
- a)
65
- end
66
- end
data/test/test_helper.rb DELETED
@@ -1,62 +0,0 @@
1
- $LOAD_PATH.unshift(File.realpath('../lib', __dir__))
2
-
3
- require 'test/unit'
4
- require 'fileutils'
5
- require 'review/yamlloader'
6
- require 'review/extentions'
7
-
8
- def touch_file(path)
9
- FileUtils.touch(path)
10
- end
11
-
12
- def assets_dir
13
- File.join(__dir__, 'assets')
14
- end
15
-
16
- def prepare_samplebook(srcdir, bookdir, latextemplatedir, configfile)
17
- samplebook_dir = File.expand_path("../samples/#{bookdir}/", __dir__)
18
- files = Dir.glob(File.join(samplebook_dir, '*'))
19
- # ignore temporary built files
20
- files.delete_if { |file| file =~ /.*-(pdf|epub|text)/ || file == 'webroot' }
21
- FileUtils.cp_r(files, srcdir)
22
- if latextemplatedir
23
- # copy from review-jsbook or review-jlreq
24
- template_dir = File.expand_path("../templates/latex/#{latextemplatedir}/", __dir__)
25
- FileUtils.cp(Dir.glob(File.join(template_dir, '*')), File.join(srcdir, 'sty'))
26
- end
27
- loader = ReVIEW::YAMLLoader.new
28
- loader.load_file(File.open(File.join(srcdir, configfile)))
29
- end
30
-
31
- def compile_inline(text)
32
- @builder.compile_inline(text)
33
- end
34
-
35
- def compile_block(text)
36
- method_name = "compile_block_#{@builder.target_name}"
37
- method_name = 'compile_block_default' unless self.respond_to?(method_name, true)
38
- self.__send__(method_name, text)
39
- end
40
-
41
- def compile_block_default(text)
42
- @chapter.content = text
43
- @chapter.execute_indexer(force: true)
44
- @compiler.compile(@chapter)
45
- end
46
-
47
- def compile_block_html(text)
48
- @chapter.content = text
49
- @chapter.execute_indexer(force: true)
50
- matched = @compiler.compile(@chapter).match(Regexp.new(%Q(<body>\n(.+)</body>), Regexp::MULTILINE))
51
- if matched && matched.size > 1
52
- matched[1]
53
- else
54
- ''
55
- end
56
- end
57
-
58
- def compile_block_idgxml(text)
59
- @chapter.content = text
60
- @chapter.execute_indexer(force: true)
61
- @compiler.compile(@chapter).gsub(Regexp.new(%Q(.*<doc xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">), Regexp::MULTILINE), '').gsub("</doc>\n", '')
62
- end