review 5.0.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby-tex.yml +31 -0
  3. data/.github/workflows/ruby-win.yml +3 -3
  4. data/.github/workflows/ruby.yml +1 -1
  5. data/.rubocop.yml +15 -7
  6. data/NEWS.ja.md +108 -0
  7. data/NEWS.md +108 -0
  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 +2 -5
  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 +2 -4
  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 +21 -5
  28. data/doc/config.yml.sample-simple +1 -1
  29. data/doc/format.ja.md +21 -10
  30. data/doc/format.md +21 -10
  31. data/doc/quickstart.ja.md +11 -1
  32. data/doc/quickstart.md +11 -2
  33. data/lib/review.rb +1 -1
  34. data/lib/review/book/base.rb +4 -0
  35. data/lib/review/book/book_unit.rb +3 -0
  36. data/lib/review/book/chapter.rb +3 -0
  37. data/lib/review/book/index.rb +1 -0
  38. data/lib/review/book/volume.rb +1 -0
  39. data/lib/review/builder.rb +8 -1
  40. data/lib/review/call_hook.rb +20 -0
  41. data/lib/review/catalog.rb +1 -0
  42. data/lib/review/compiler.rb +27 -10
  43. data/lib/review/configure.rb +64 -7
  44. data/lib/review/epubmaker.rb +93 -96
  45. data/lib/review/epubmaker/content.rb +113 -0
  46. data/lib/review/epubmaker/epubcommon.rb +372 -0
  47. data/lib/review/epubmaker/epubv2.rb +178 -0
  48. data/lib/review/epubmaker/epubv3.rb +231 -0
  49. data/lib/review/epubmaker/producer.rb +168 -0
  50. data/lib/review/epubmaker/reviewheaderlistener.rb +12 -2
  51. data/lib/review/epubmaker/zip_exporter.rb +84 -0
  52. data/lib/review/exception.rb +6 -0
  53. data/lib/review/htmlbuilder.rb +36 -49
  54. data/lib/review/htmlutils.rb +1 -1
  55. data/lib/review/i18n.rb +1 -0
  56. data/lib/review/idgxmlbuilder.rb +33 -30
  57. data/lib/review/idgxmlmaker.rb +3 -1
  58. data/lib/review/img_math.rb +245 -0
  59. data/lib/review/index_builder.rb +1 -0
  60. data/lib/review/init.rb +4 -4
  61. data/lib/review/latexbox.rb +58 -0
  62. data/lib/review/latexbuilder.rb +30 -19
  63. data/lib/review/latexutils.rb +9 -1
  64. data/lib/review/lineinput.rb +112 -2
  65. data/lib/review/logger.rb +41 -2
  66. data/lib/review/makerhelper.rb +2 -205
  67. data/lib/review/markdownbuilder.rb +32 -1
  68. data/lib/review/pdfmaker.rb +31 -29
  69. data/lib/review/plaintextbuilder.rb +9 -1
  70. data/lib/review/preprocessor.rb +12 -6
  71. data/lib/review/rstbuilder.rb +1 -1
  72. data/lib/review/sec_counter.rb +1 -0
  73. data/lib/review/template.rb +6 -0
  74. data/lib/review/textmaker.rb +11 -7
  75. data/lib/review/textutils.rb +2 -10
  76. data/lib/review/tocprinter.rb +85 -68
  77. data/lib/review/topbuilder.rb +18 -11
  78. data/lib/review/update.rb +5 -6
  79. data/lib/review/version.rb +1 -1
  80. data/lib/review/volumeprinter.rb +4 -5
  81. data/lib/review/webmaker.rb +18 -13
  82. data/lib/review/webtocprinter.rb +10 -9
  83. data/lib/review/yamlloader.rb +2 -1
  84. data/review.gemspec +5 -3
  85. data/samples/sample-book/src/config-epub2.yml +1 -1
  86. data/samples/sample-book/src/config.yml +1 -1
  87. data/samples/sample-book/src/lib/tasks/review.rake +17 -1
  88. data/samples/syntax-book/ch01.re +1 -1
  89. data/samples/syntax-book/ch02.re +21 -6
  90. data/samples/syntax-book/ch03.re +1 -1
  91. data/samples/syntax-book/images/img3-2.png +0 -0
  92. data/templates/html/_colophon.html.erb +23 -0
  93. data/templates/html/_colophon_history.html.erb +9 -0
  94. data/templates/html/_cover.html.erb +10 -0
  95. data/templates/html/_part_body.html.erb +6 -0
  96. data/templates/html/_titlepage.html.erb +20 -0
  97. data/templates/html/layout-html5.html.erb +6 -0
  98. data/templates/html/layout-xhtml1.html.erb +6 -0
  99. data/templates/latex/config.erb +8 -0
  100. data/templates/latex/review-jlreq/review-base.sty +4 -5
  101. data/templates/latex/review-jlreq/review-jlreq.cls +10 -2
  102. data/templates/latex/review-jlreq/review-style.sty +6 -1
  103. data/templates/latex/review-jlreq/review-tcbox.sty +348 -0
  104. data/templates/latex/review-jlreq/reviewmacro.sty +5 -0
  105. data/templates/latex/review-jsbook/review-base.sty +5 -7
  106. data/templates/latex/review-jsbook/review-jsbook.cls +10 -2
  107. data/templates/latex/review-jsbook/review-style.sty +6 -1
  108. data/templates/latex/review-jsbook/review-tcbox.sty +348 -0
  109. data/templates/latex/review-jsbook/reviewmacro.sty +5 -0
  110. data/templates/opf/epubv2.opf.erb +7 -7
  111. data/templates/opf/epubv3.opf.erb +7 -7
  112. data/templates/opf/opf_manifest_epubv2.opf.erb +10 -0
  113. data/templates/opf/opf_manifest_epubv3.opf.erb +10 -0
  114. data/templates/opf/opf_metainfo_epubv2.opf.erb +17 -0
  115. data/templates/opf/opf_metainfo_epubv3.opf.erb +49 -0
  116. data/templates/opf/opf_tocx_epubv2.opf.erb +9 -0
  117. data/templates/opf/opf_tocx_epubv3.opf.erb +17 -0
  118. data/templates/web/html/layout-html5.html.erb +6 -5
  119. data/templates/web/html/layout-xhtml1.html.erb +6 -0
  120. data/test/assets/header_listener.html +35 -0
  121. data/test/assets/img_math/img1.png +0 -0
  122. data/test/assets/img_math/img2.png +0 -0
  123. data/test/assets/img_math/img3.png +0 -0
  124. data/test/assets/syntax_book_index_detail.txt +58 -0
  125. data/test/assets/test_template.tex +4 -1
  126. data/test/assets/test_template_backmatter.tex +4 -1
  127. data/test/run_test.rb +1 -1
  128. data/test/test_book_chapter.rb +2 -2
  129. data/test/test_catalog_converter_cmd.rb +1 -1
  130. data/test/test_epub3maker.rb +168 -124
  131. data/test/test_epubmaker.rb +243 -131
  132. data/test/test_epubmaker_cmd.rb +2 -2
  133. data/test/test_helper.rb +5 -4
  134. data/test/test_htmlbuilder.rb +64 -6
  135. data/test/test_idgxmlbuilder.rb +13 -0
  136. data/test/test_idgxmlmaker_cmd.rb +7 -3
  137. data/test/test_img_math.rb +111 -0
  138. data/test/test_indexbuilder.rb +5 -5
  139. data/test/test_latexbuilder.rb +107 -4
  140. data/test/test_lineinput.rb +20 -93
  141. data/test/test_markdownbuilder.rb +29 -0
  142. data/test/test_pdfmaker.rb +71 -0
  143. data/test/test_pdfmaker_cmd.rb +2 -2
  144. data/test/test_plaintextbuilder.rb +10 -18
  145. data/test/test_reviewheaderlistener.rb +49 -0
  146. data/test/test_template.rb +12 -2
  147. data/test/test_textmaker_cmd.rb +5 -1
  148. data/test/test_tocprinter.rb +46 -0
  149. data/test/test_topbuilder.rb +6 -1
  150. data/test/test_update.rb +34 -34
  151. data/test/test_zip_exporter.rb +5 -6
  152. metadata +91 -17
  153. data/lib/epubmaker.rb +0 -23
  154. data/lib/epubmaker/content.rb +0 -111
  155. data/lib/epubmaker/epubcommon.rb +0 -449
  156. data/lib/epubmaker/epubv2.rb +0 -142
  157. data/lib/epubmaker/epubv3.rb +0 -235
  158. data/lib/epubmaker/producer.rb +0 -375
  159. data/lib/epubmaker/zip_exporter.rb +0 -81
  160. data/lib/lineinput.rb +0 -155
@@ -1,81 +0,0 @@
1
- # Copyright (c) 2010-2017 Kenshi Muto and Masayoshi Takahashi
2
- #
3
- # This program is free software.
4
- # You can distribute or modify this program under the terms of
5
- # the GNU LGPL, Lesser General Public License version 2.1.
6
- # For details of the GNU LGPL, see the file "COPYING".
7
- #
8
-
9
- require 'pathname'
10
- begin
11
- require 'zip'
12
- rescue LoadError
13
- ## I cannot find rubyzip library, so I use external zip command.
14
- warn 'rubyzip not found, so use external zip command'
15
- end
16
-
17
- module EPUBMaker
18
- ##
19
- # Export into zip file for EPUB producer.
20
- #
21
- class ZipExporter
22
- attr_reader :tmpdir
23
-
24
- def initialize(tmpdir, config)
25
- @tmpdir = tmpdir
26
- @config = config
27
- end
28
-
29
- def export_zip(epubfile)
30
- if defined?(Zip)
31
- export_zip_rubyzip(epubfile)
32
- else
33
- export_zip_extcmd(epubfile)
34
- end
35
- end
36
-
37
- def export_zip_extcmd(epubfile)
38
- stage1 = @config['epubmaker']['zip_stage1'].to_s.split
39
- path1 = stage1[0] || 'zip'
40
- opt1 = stage1[1] || '-0Xq'
41
- stage2 = @config['epubmaker']['zip_stage2'].to_s.split
42
- path2 = stage2[0] || 'zip'
43
- opt2 = stage2[1] || '-Xr9Dq'
44
-
45
- Dir.chdir(tmpdir) do
46
- system(path1, opt1, epubfile, 'mimetype')
47
- addpath = @config['epubmaker']['zip_addpath']
48
- if addpath
49
- system(path2, opt2, epubfile, 'META-INF', 'OEBPS', addpath)
50
- else
51
- system(path2, opt2, epubfile, 'META-INF', 'OEBPS')
52
- end
53
- end
54
- end
55
-
56
- def export_zip_rubyzip(epubfile)
57
- Dir.chdir(tmpdir) do
58
- Zip::OutputStream.open(epubfile) do |epub|
59
- root_pathname = Pathname.new(tmpdir)
60
- epub.put_next_entry('mimetype', nil, nil, Zip::Entry::STORED)
61
- epub << 'application/epub+zip'
62
-
63
- export_zip_rubyzip_addpath(epub, File.join(tmpdir, 'META-INF'), root_pathname)
64
- export_zip_rubyzip_addpath(epub, File.join(tmpdir, 'OEBPS'), root_pathname)
65
- if @config['zip_addpath'].present?
66
- export_zip_rubyzip_addpath(epub, File.join(tmpdir, @config['zip_addpath']), root_pathname)
67
- end
68
- end
69
- end
70
- end
71
-
72
- def export_zip_rubyzip_addpath(epub, dirname, rootdir)
73
- Dir[File.join(dirname, '**', '**')].each do |path|
74
- next if File.directory?(path)
75
- relpath = Pathname.new(path).relative_path_from(rootdir)
76
- epub.put_next_entry(relpath)
77
- epub << File.binread(path)
78
- end
79
- end
80
- end
81
- end
data/lib/lineinput.rb DELETED
@@ -1,155 +0,0 @@
1
- #
2
- # $Id: lineinput.rb 2226 2006-04-15 03:05:09Z aamine $
3
- #
4
- # Copyright (c) 2002-2005 Minero Aoki
5
- #
6
- # This program is free software.
7
- # You can distribute/modify this program under the terms of
8
- # the GNU LGPL, Lesser General Public License version 2.1.
9
- #
10
-
11
- class LineInput
12
-
13
- def initialize(f)
14
- @input = f
15
- @buf = []
16
- @lineno = 0
17
- @eof_p = false
18
- end
19
-
20
- def inspect
21
- "\#<#{self.class} file=#{@input.inspect} line=#{lineno()}>"
22
- end
23
-
24
- def eof?
25
- @eof_p
26
- end
27
-
28
- def lineno
29
- @lineno
30
- end
31
-
32
- def gets
33
- unless @buf.empty?
34
- @lineno += 1
35
- return @buf.pop
36
- end
37
- return nil if @eof_p # to avoid ARGF blocking.
38
- line = @input.gets
39
- @eof_p = true unless line
40
- @lineno += 1
41
- line
42
- end
43
-
44
- def ungets(line)
45
- return unless line
46
- @lineno -= 1
47
- @buf.push line
48
- line
49
- end
50
-
51
- def peek
52
- line = gets()
53
- ungets line if line
54
- line
55
- end
56
-
57
- def next?
58
- peek() ? true : false
59
- end
60
-
61
- def skip_blank_lines
62
- n = 0
63
- while line = gets()
64
- unless line.strip.empty?
65
- ungets line
66
- return n
67
- end
68
- n += 1
69
- end
70
- n
71
- end
72
-
73
- def gets_if(re)
74
- line = gets()
75
- if not line or not (re =~ line)
76
- ungets line
77
- return nil
78
- end
79
- line
80
- end
81
-
82
- def gets_unless(re)
83
- line = gets()
84
- if not line or re =~ line
85
- ungets line
86
- return nil
87
- end
88
- line
89
- end
90
-
91
- def each
92
- while line = gets()
93
- yield line
94
- end
95
- end
96
-
97
- def while_match(re)
98
- while line = gets()
99
- unless re =~ line
100
- ungets line
101
- return
102
- end
103
- yield line
104
- end
105
- nil
106
- end
107
-
108
- def getlines_while(re)
109
- buf = []
110
- while_match(re) do |line|
111
- buf.push line
112
- end
113
- buf
114
- end
115
-
116
- alias_method :span, :getlines_while # from Haskell
117
-
118
- def until_match(re)
119
- while line = gets()
120
- if re =~ line
121
- ungets line
122
- return
123
- end
124
- yield line
125
- end
126
- nil
127
- end
128
-
129
- def getlines_until(re)
130
- buf = []
131
- until_match(re) do |line|
132
- buf.push line
133
- end
134
- buf
135
- end
136
-
137
- alias_method :break, :getlines_until # from Haskell
138
-
139
- def until_terminator(re)
140
- while line = gets()
141
- return if re =~ line # discard terminal line
142
- yield line
143
- end
144
- nil
145
- end
146
-
147
- def getblock(term_re)
148
- buf = []
149
- until_terminator(term_re) do |line|
150
- buf.push line
151
- end
152
- buf
153
- end
154
-
155
- end