review 4.1.0 → 5.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-tex.yml +35 -0
- data/.github/workflows/ruby-win.yml +19 -9
- data/.github/workflows/ruby.yml +7 -3
- data/.rubocop.yml +138 -34
- data/NEWS.ja.md +285 -0
- data/NEWS.md +285 -1
- data/README.md +7 -6
- data/Rakefile +7 -2
- data/bin/review +2 -4
- data/bin/review-catalog-converter +4 -4
- data/bin/review-check +8 -12
- data/bin/review-checkdep +2 -5
- data/bin/review-compile +18 -34
- data/bin/review-epub2html +1 -4
- data/bin/review-epubmaker +3 -4
- data/bin/review-idgxmlmaker +1 -3
- data/bin/review-index +5 -86
- data/bin/review-init +1 -4
- data/bin/review-pdfmaker +1 -3
- data/bin/review-preproc +30 -38
- data/bin/review-textmaker +1 -3
- data/bin/review-update +1 -4
- data/bin/review-validate +4 -4
- data/bin/review-vol +5 -82
- data/bin/review-webmaker +1 -3
- data/doc/config.yml.sample +45 -11
- data/doc/config.yml.sample-simple +3 -3
- data/doc/format.ja.md +103 -13
- data/doc/format.md +104 -16
- data/doc/makeindex.ja.md +2 -2
- data/doc/pdfmaker.ja.md +42 -0
- data/doc/pdfmaker.md +41 -0
- data/doc/quickstart.ja.md +19 -6
- data/doc/quickstart.md +18 -6
- data/doc/writing_vertical.ja.md +6 -0
- data/lib/review.rb +1 -1
- data/lib/review/book.rb +2 -2
- data/lib/review/book/base.rb +67 -29
- data/lib/review/book/bib.rb +21 -0
- data/lib/review/book/book_unit.rb +158 -0
- data/lib/review/book/chapter.rb +33 -26
- data/lib/review/book/index.rb +24 -185
- data/lib/review/book/index/item.rb +7 -1
- data/lib/review/book/page_metric.rb +7 -7
- data/lib/review/book/part.rb +26 -11
- data/lib/review/book/volume.rb +5 -5
- data/lib/review/builder.rb +121 -52
- data/lib/review/call_hook.rb +20 -0
- data/lib/review/catalog.rb +3 -2
- data/lib/review/compiler.rb +230 -111
- data/lib/review/configure.rb +91 -7
- data/lib/review/converter.rb +1 -1
- data/lib/review/epub2html.rb +6 -1
- data/lib/review/epubmaker.rb +124 -152
- data/lib/review/epubmaker/content.rb +113 -0
- data/lib/review/epubmaker/epubcommon.rb +372 -0
- data/lib/review/epubmaker/epubv2.rb +178 -0
- data/lib/review/epubmaker/epubv3.rb +231 -0
- data/lib/review/epubmaker/producer.rb +167 -0
- data/lib/review/epubmaker/reviewheaderlistener.rb +12 -2
- data/lib/review/epubmaker/zip_exporter.rb +84 -0
- data/lib/review/exception.rb +13 -0
- data/lib/review/htmlbuilder.rb +176 -89
- data/lib/review/htmlutils.rb +8 -11
- data/lib/review/i18n.rb +2 -1
- data/lib/review/idgxmlbuilder.rb +165 -75
- data/lib/review/idgxmlmaker.rb +24 -28
- data/lib/review/img_math.rb +238 -0
- data/lib/review/index_builder.rb +645 -0
- data/lib/review/init.rb +9 -17
- data/lib/review/latexbox.rb +58 -0
- data/lib/review/latexbuilder.rb +193 -75
- data/lib/review/latexutils.rb +9 -1
- data/lib/review/lineinput.rb +112 -2
- data/lib/review/loggable.rb +27 -0
- data/lib/review/logger.rb +90 -3
- data/lib/review/makerhelper.rb +17 -188
- data/lib/review/markdownbuilder.rb +54 -4
- data/lib/review/pdfmaker.rb +76 -84
- data/lib/review/plaintextbuilder.rb +106 -22
- data/lib/review/preprocessor.rb +107 -303
- data/lib/review/preprocessor/directive.rb +35 -0
- data/lib/review/preprocessor/line.rb +34 -0
- data/lib/review/preprocessor/repository.rb +177 -0
- data/lib/review/rstbuilder.rb +27 -8
- data/lib/review/sec_counter.rb +14 -0
- data/lib/review/template.rb +11 -1
- data/lib/review/textmaker.rb +27 -32
- data/lib/review/textutils.rb +3 -12
- data/lib/review/tocprinter.rb +242 -97
- data/lib/review/topbuilder.rb +98 -31
- data/lib/review/update.rb +12 -13
- data/lib/review/version.rb +1 -1
- data/lib/review/volumeprinter.rb +97 -0
- data/lib/review/webmaker.rb +40 -47
- data/lib/review/webtocprinter.rb +39 -35
- data/lib/review/yamlloader.rb +2 -1
- data/review.gemspec +5 -3
- data/samples/sample-book/src/config-epub2.yml +1 -1
- data/samples/sample-book/src/config.yml +3 -3
- data/samples/sample-book/src/lib/tasks/review.rake +19 -1
- data/samples/sample-book/src/lib/tasks/z01_copy_sty.rake +2 -1
- data/samples/syntax-book/Gemfile +1 -1
- data/samples/syntax-book/ch01.re +1 -1
- data/samples/syntax-book/ch02.re +21 -6
- data/samples/syntax-book/ch03.re +1 -1
- data/samples/syntax-book/config.yml +1 -1
- data/samples/syntax-book/images/img3-2.png +0 -0
- data/samples/syntax-book/lib/tasks/z01_copy_sty.rake +2 -1
- data/templates/html/_colophon.html.erb +23 -0
- data/templates/html/_colophon_history.html.erb +9 -0
- data/templates/html/_cover.html.erb +10 -0
- data/templates/html/_part_body.html.erb +6 -0
- data/templates/html/_titlepage.html.erb +20 -0
- data/templates/html/layout-html5.html.erb +6 -0
- data/templates/html/layout-xhtml1.html.erb +6 -0
- data/templates/latex/config.erb +35 -23
- data/templates/latex/review-jlreq/README.md +3 -1
- data/templates/latex/review-jlreq/review-base.sty +36 -23
- data/templates/latex/review-jlreq/review-jlreq.cls +18 -25
- data/templates/latex/review-jlreq/review-style.sty +6 -1
- data/templates/latex/review-jlreq/review-tcbox.sty +348 -0
- data/templates/latex/review-jlreq/reviewmacro.sty +5 -0
- data/templates/latex/review-jsbook/README.md +7 -5
- data/templates/latex/review-jsbook/review-base.sty +40 -24
- data/templates/latex/review-jsbook/review-jsbook.cls +13 -3
- data/templates/latex/review-jsbook/review-style.sty +6 -1
- data/templates/latex/review-jsbook/review-tcbox.sty +348 -0
- data/templates/latex/review-jsbook/reviewmacro.sty +5 -0
- data/templates/opf/epubv2.opf.erb +7 -7
- data/templates/opf/epubv3.opf.erb +7 -7
- data/templates/opf/opf_manifest_epubv2.opf.erb +10 -0
- data/templates/opf/opf_manifest_epubv3.opf.erb +10 -0
- data/templates/opf/opf_metainfo_epubv2.opf.erb +17 -0
- data/templates/opf/opf_metainfo_epubv3.opf.erb +49 -0
- data/templates/opf/opf_tocx_epubv2.opf.erb +9 -0
- data/templates/opf/opf_tocx_epubv3.opf.erb +17 -0
- data/templates/web/html/layout-html5.html.erb +9 -8
- data/templates/web/html/layout-xhtml1.html.erb +6 -0
- data/test/assets/header_listener.html +35 -0
- data/test/assets/img_math/img1.png +0 -0
- data/test/assets/img_math/img2.png +0 -0
- data/test/assets/img_math/img3.png +0 -0
- data/test/assets/syntax_book_index_detail.txt +58 -0
- data/test/assets/test_template.tex +6 -3
- data/test/assets/test_template_backmatter.tex +6 -3
- data/test/book_test_helper.rb +11 -5
- data/test/run_test.rb +1 -1
- data/test/test_book.rb +54 -63
- data/test/test_book_chapter.rb +95 -54
- data/test/test_book_part.rb +3 -3
- data/test/test_builder.rb +29 -20
- data/test/test_catalog_converter_cmd.rb +1 -1
- data/test/test_converter.rb +1 -0
- data/test/test_epub3maker.rb +170 -126
- data/test/test_epubmaker.rb +254 -129
- data/test/test_epubmaker_cmd.rb +15 -4
- data/test/test_helper.rb +12 -5
- data/test/test_htmlbuilder.rb +926 -76
- data/test/test_htmlutils.rb +0 -12
- data/test/test_i18n.rb +33 -33
- data/test/test_idgxmlbuilder.rb +531 -20
- data/test/test_idgxmlmaker_cmd.rb +7 -3
- data/test/test_img_math.rb +111 -0
- data/test/test_index.rb +62 -52
- data/test/test_indexbuilder.rb +52 -0
- data/test/test_latexbuilder.rb +891 -20
- data/test/test_latexbuilder_v2.rb +56 -10
- data/test/test_lineinput.rb +20 -93
- data/test/test_logger.rb +7 -7
- data/test/test_makerhelper.rb +0 -12
- data/test/test_markdownbuilder.rb +32 -0
- data/test/test_pdfmaker.rb +100 -11
- data/test/test_pdfmaker_cmd.rb +3 -3
- data/test/test_plaintextbuilder.rb +546 -32
- data/test/test_preprocessor.rb +188 -1
- data/test/test_review_ext.rb +2 -1
- data/test/test_reviewheaderlistener.rb +49 -0
- data/test/test_rstbuilder.rb +25 -1
- data/test/test_sec_counter.rb +156 -0
- data/test/test_template.rb +12 -2
- data/test/test_textmaker_cmd.rb +5 -1
- data/test/test_tocprinter.rb +46 -0
- data/test/test_topbuilder.rb +324 -20
- data/test/test_update.rb +44 -44
- data/test/test_webtocprinter.rb +75 -43
- data/test/test_zip_exporter.rb +5 -6
- data/vendor/gentombow/LICENSE +1 -1
- data/vendor/gentombow/Makefile +0 -1
- data/vendor/gentombow/bounddvi-en.pdf +0 -0
- data/vendor/gentombow/bounddvi-en.tex +1 -0
- data/vendor/gentombow/bounddvi.pdf +0 -0
- data/vendor/gentombow/bounddvi.sty +30 -7
- data/vendor/gentombow/bounddvi.tex +1 -0
- data/vendor/gentombow/create_archive.sh +1 -0
- data/vendor/gentombow/gentombow-ja.pdf +0 -0
- data/vendor/gentombow/gentombow-ja.tex +9 -0
- data/vendor/gentombow/gentombow.pdf +0 -0
- data/vendor/gentombow/gentombow.sty +32 -10
- data/vendor/gentombow/gentombow.tex +8 -0
- data/vendor/gentombow/tests/gentombow-01-pdfx.tex +8 -0
- data/vendor/gentombow/tests/gentombow-02-pdfx.tex +8 -0
- data/vendor/jsclasses/Makefile +3 -2
- data/vendor/jsclasses/create_archive.sh +5 -5
- data/vendor/jsclasses/jis/Makefile +3 -2
- data/vendor/jsclasses/jis/jsarticle.cls +22 -18
- data/vendor/jsclasses/jis/jsbook.cls +22 -18
- data/vendor/jsclasses/jis/jsclasses.dtx +94 -13
- data/vendor/jsclasses/jis/jsclasses.ins +15 -5
- data/vendor/jsclasses/jis/jslogo.ins +9 -0
- data/vendor/jsclasses/jis/jslogo.sty +1 -13
- data/vendor/jsclasses/jis/jspf.cls +22 -18
- data/vendor/jsclasses/jis/jsreport.cls +22 -18
- data/vendor/jsclasses/jis/jsverb.ins +9 -0
- data/vendor/jsclasses/jis/jsverb.sty +1 -13
- data/vendor/jsclasses/jis/kiyou.cls +22 -18
- data/vendor/jsclasses/jis/minijs.sty +65 -22
- data/vendor/jsclasses/jis/okumacro.ins +9 -0
- data/vendor/jsclasses/jis/okumacro.sty +1 -13
- data/vendor/jsclasses/jis/okuverb.ins +9 -0
- data/vendor/jsclasses/jis/okuverb.sty +1 -13
- data/vendor/jsclasses/jis/winjis.sty +23 -19
- data/vendor/jsclasses/jsarticle.cls +22 -18
- data/vendor/jsclasses/jsbook.cls +22 -18
- data/vendor/jsclasses/jsclasses.dtx +94 -13
- data/vendor/jsclasses/jsclasses.ins +15 -5
- data/vendor/jsclasses/jsclasses.pdf +0 -0
- data/vendor/jsclasses/jslogo.ins +9 -0
- data/vendor/jsclasses/jslogo.pdf +0 -0
- data/vendor/jsclasses/jslogo.sty +1 -13
- data/vendor/jsclasses/jspf.cls +22 -18
- data/vendor/jsclasses/jsreport.cls +22 -18
- data/vendor/jsclasses/jsverb.ins +9 -0
- data/vendor/jsclasses/jsverb.pdf +0 -0
- data/vendor/jsclasses/jsverb.sty +1 -13
- data/vendor/jsclasses/kiyou.cls +22 -18
- data/vendor/jsclasses/minijs.sty +68 -22
- data/vendor/jsclasses/okumacro.ins +9 -0
- data/vendor/jsclasses/okumacro.pdf +0 -0
- data/vendor/jsclasses/okumacro.sty +1 -13
- data/vendor/jsclasses/okuverb.ins +9 -0
- data/vendor/jsclasses/okuverb.pdf +0 -0
- data/vendor/jsclasses/okuverb.sty +1 -13
- data/vendor/jsclasses/tests/relfont.tex +10 -0
- data/vendor/jsclasses/winjis.sty +23 -19
- metadata +106 -22
- data/.rubocop_todo.yml +0 -7
- data/lib/epubmaker.rb +0 -23
- data/lib/epubmaker/content.rb +0 -110
- data/lib/epubmaker/epubcommon.rb +0 -441
- data/lib/epubmaker/epubv2.rb +0 -143
- data/lib/epubmaker/epubv3.rb +0 -233
- data/lib/epubmaker/producer.rb +0 -375
- data/lib/epubmaker/zip_exporter.rb +0 -81
- data/lib/lineinput.rb +0 -155
- data/lib/review/book/compilable.rb +0 -178
- data/lib/review/tocparser.rb +0 -275
- data/test/test_tocparser.rb +0 -25
data/README.md
CHANGED
@@ -62,11 +62,12 @@ $ echo "export PATH=PATH_OF_REVIEW/bin:$PATH" >> ~/.profile
|
|
62
62
|
$ review-init hello
|
63
63
|
$ cd hello
|
64
64
|
$ (... add and edit *.re file, config.yml and catalog.yml ...)
|
65
|
-
$ rake epub
|
66
|
-
$ rake pdf
|
67
|
-
$ rake text
|
68
|
-
$ rake web
|
69
|
-
$ rake idgxml
|
65
|
+
$ rake epub ## generating EPUB
|
66
|
+
$ rake pdf ## generating PDF (Requirement TeXLive)
|
67
|
+
$ rake text ## generating texts
|
68
|
+
$ rake web ## generating Web pages
|
69
|
+
$ rake idgxml ## generating InDesign XML files
|
70
|
+
$ rake vivliostyle ## generating PDF using Vivliostyle-CLI (Requirement Vivliostyle-CLI)
|
70
71
|
```
|
71
72
|
|
72
73
|
For further information, see [doc/quickstart.md](https://github.com/kmuto/review/blob/master/doc/quickstart.md)
|
@@ -115,4 +116,4 @@ Exception:
|
|
115
116
|
|
116
117
|
## Copyright
|
117
118
|
|
118
|
-
Copyright (c) 2006-
|
119
|
+
Copyright (c) 2006-2021 Minero Aoki, Kenshi Muto, Masayoshi Takahashi, Masanori Kado.
|
data/Rakefile
CHANGED
@@ -21,8 +21,13 @@ task :rubocop do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
desc 'Run tests'
|
25
|
+
task :test, :target do |_, argv|
|
26
|
+
if argv[:target].nil?
|
27
|
+
ruby('test/run_test.rb')
|
28
|
+
else
|
29
|
+
ruby('test/run_test.rb', "--pattern=#{argv[:target]}")
|
30
|
+
end
|
26
31
|
end
|
27
32
|
|
28
33
|
begin
|
data/bin/review
CHANGED
@@ -13,9 +13,7 @@
|
|
13
13
|
# the GNU LGPL, Lesser General Public License version 2.1.
|
14
14
|
# For details of the GNU LGPL, see the file "COPYING".
|
15
15
|
|
16
|
-
|
17
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
18
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
16
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
19
17
|
|
20
18
|
require 'review'
|
21
19
|
|
@@ -52,7 +50,7 @@ if ARGV[0] == 'version'
|
|
52
50
|
end
|
53
51
|
|
54
52
|
command = "review-#{ARGV.shift}"
|
55
|
-
bindir =
|
53
|
+
bindir = File.realpath(__dir__)
|
56
54
|
command_path = File.join(bindir, command)
|
57
55
|
|
58
56
|
unless File.exist?(command_path)
|
@@ -9,10 +9,9 @@
|
|
9
9
|
#
|
10
10
|
# Convert old PREDEF/CHAPS/PART/POSTDEF files into catalog.yml.
|
11
11
|
|
12
|
-
|
12
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
13
|
+
|
13
14
|
require 'optparse'
|
14
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
15
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
16
15
|
require 'review/version'
|
17
16
|
require 'review/extentions'
|
18
17
|
require 'review/logger'
|
@@ -109,7 +108,7 @@ def parse_postdef(str, to_appendix = false)
|
|
109
108
|
end
|
110
109
|
|
111
110
|
def parse_parts(parts_str, chaps_str)
|
112
|
-
if parts_str.blank?
|
111
|
+
if parts_str.blank? || chaps_str.blank?
|
113
112
|
return "CHAPS:\n\n"
|
114
113
|
end
|
115
114
|
|
@@ -158,6 +157,7 @@ def replace_old_style_part(dir)
|
|
158
157
|
end
|
159
158
|
|
160
159
|
next unless allow_overwrite
|
160
|
+
|
161
161
|
File.write("#{dir}/#{part_name}", "= #{part}")
|
162
162
|
catalog.replace_part(part, part_name)
|
163
163
|
end
|
data/bin/review-check
CHANGED
@@ -9,10 +9,7 @@
|
|
9
9
|
# For details of the GNU LGPL, see the file "COPYING".
|
10
10
|
#
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
15
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
12
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
16
13
|
|
17
14
|
require 'review'
|
18
15
|
require 'optparse'
|
@@ -31,9 +28,7 @@ end
|
|
31
28
|
|
32
29
|
def main
|
33
30
|
@config = ReVIEW::Configure.values
|
34
|
-
@book = ReVIEW::Book::Base.
|
35
|
-
@book.config = @config
|
36
|
-
|
31
|
+
@book = ReVIEW::Book::Base.new(config: @config)
|
37
32
|
@logger = ReVIEW.logger
|
38
33
|
|
39
34
|
modes = nil
|
@@ -87,7 +82,8 @@ def check_text(files)
|
|
87
82
|
s = para.join
|
88
83
|
m = re.match(s)
|
89
84
|
next if m.nil? || m[0] == @review_utils_word_ok
|
90
|
-
next if neg
|
85
|
+
next if neg && neg =~ s
|
86
|
+
|
91
87
|
str, offset = find_line(para, re)
|
92
88
|
out = sprintf("%s:%d: %s\n", path, lineno + offset, str)
|
93
89
|
print out
|
@@ -109,6 +105,7 @@ def find_line(lines, re)
|
|
109
105
|
while i < lines.size - 1
|
110
106
|
str = lines[i] + lines[i + 1]
|
111
107
|
return str.gsub(re, '<<<\&>>>'), i if re =~ str
|
108
|
+
|
112
109
|
i += 1
|
113
110
|
end
|
114
111
|
|
@@ -120,6 +117,7 @@ def words_re(rc)
|
|
120
117
|
nega = []
|
121
118
|
File.foreach(rc) do |line|
|
122
119
|
next if line[0, 1] == '#'
|
120
|
+
|
123
121
|
if / !/ =~ line
|
124
122
|
line, n = *line.split('!', 2)
|
125
123
|
nega.push(n.strip)
|
@@ -136,7 +134,7 @@ def each_paragraph(f)
|
|
136
134
|
case line
|
137
135
|
when /\A\#@ok\((.*)\)/
|
138
136
|
@review_utils_word_ok = $1
|
139
|
-
when /\A
|
137
|
+
when /\A\#@/, /\A\s*\z/
|
140
138
|
# do nothing
|
141
139
|
next
|
142
140
|
when %r{\A//caption\{(.*?)//\}}
|
@@ -147,9 +145,6 @@ def each_paragraph(f)
|
|
147
145
|
end
|
148
146
|
when /\A=/
|
149
147
|
yield [line.slice(/\A=+(?:\[.*?\])?\s+(.*)/, 1).strip], f.lineno
|
150
|
-
when /\A\s*\z/
|
151
|
-
# skip
|
152
|
-
next
|
153
148
|
else
|
154
149
|
buf = [line.strip]
|
155
150
|
lineno = f.lineno
|
@@ -157,6 +152,7 @@ def each_paragraph(f)
|
|
157
152
|
break if line.strip.empty?
|
158
153
|
break if %r{\A(?:=|//[\w\}])} =~ line
|
159
154
|
next if /\A\#@/ =~ line
|
155
|
+
|
160
156
|
buf.push(line.strip)
|
161
157
|
end
|
162
158
|
yield buf, lineno
|
data/bin/review-checkdep
CHANGED
@@ -9,10 +9,7 @@
|
|
9
9
|
# For details of the GNU LGPL, see the file "COPYING".
|
10
10
|
#
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
15
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
12
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
16
13
|
|
17
14
|
PREDEF_FILE = 'PREDEF'.freeze
|
18
15
|
|
@@ -30,7 +27,7 @@ def main
|
|
30
27
|
when /\A\#@provide\((.*)\)/
|
31
28
|
provide($1)
|
32
29
|
else
|
33
|
-
line.scan(/@<kw>\{(.*?)[
|
30
|
+
line.scan(/@<kw>\{(.*?)[,}]/) { provide($1) }
|
34
31
|
end
|
35
32
|
end
|
36
33
|
end
|
data/bin/review-compile
CHANGED
@@ -9,16 +9,15 @@
|
|
9
9
|
# For details of the GNU LGPL, see the file "COPYING".
|
10
10
|
#
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
15
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
12
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
16
13
|
|
17
14
|
require 'review'
|
18
15
|
require 'fileutils'
|
19
16
|
require 'optparse'
|
20
17
|
require 'yaml'
|
21
18
|
|
19
|
+
include ReVIEW::Loggable
|
20
|
+
|
22
21
|
DEFAULT_CONFIG_FILENAME = 'config.yml'.freeze
|
23
22
|
|
24
23
|
def main
|
@@ -50,17 +49,17 @@ def _main
|
|
50
49
|
begin
|
51
50
|
loader = ReVIEW::YAMLLoader.new
|
52
51
|
if @config['yaml']
|
53
|
-
error "#{@config['yaml']} not found." unless File.exist?(@config['yaml'])
|
52
|
+
error! "#{@config['yaml']} not found." unless File.exist?(@config['yaml'])
|
54
53
|
begin
|
55
54
|
@config.deep_merge!(loader.load_file(@config['yaml']))
|
56
55
|
rescue => e
|
57
|
-
error "yaml error #{e.message}"
|
56
|
+
error! "yaml error #{e.message}"
|
58
57
|
end
|
59
58
|
elsif File.exist?(DEFAULT_CONFIG_FILENAME)
|
60
59
|
begin
|
61
60
|
@config.deep_merge!(loader.load_file(DEFAULT_CONFIG_FILENAME))
|
62
61
|
rescue => e
|
63
|
-
error "yaml error #{e.message}"
|
62
|
+
error! "yaml error #{e.message}"
|
64
63
|
end
|
65
64
|
end
|
66
65
|
|
@@ -76,41 +75,39 @@ def _main
|
|
76
75
|
|
77
76
|
case @mode
|
78
77
|
when :files
|
79
|
-
error('no input') if ARGV.empty?
|
78
|
+
error!('no input') if ARGV.empty?
|
80
79
|
|
81
80
|
@basedir = File.dirname(ARGV[0])
|
82
|
-
book = ReVIEW::Book::Base.
|
83
|
-
book.config = @config # needs only at the first time
|
81
|
+
book = ReVIEW::Book::Base.new(@basedir, config: @config)
|
84
82
|
ARGV.each do |item|
|
85
|
-
error("file not found: #{item}") unless File.exist?(File.join(book.config['contentdir'], item))
|
83
|
+
error!("file not found: #{item}") unless File.exist?(File.join(book.config['contentdir'], item))
|
86
84
|
chap_name = File.basename(item, '.*')
|
87
85
|
chap = book.chapter(chap_name)
|
88
|
-
compiler = ReVIEW::Compiler.new(
|
86
|
+
compiler = ReVIEW::Compiler.new(load_builder_class(@target, @check_only))
|
89
87
|
result = compiler.compile(chap)
|
90
88
|
if @output_filename
|
91
|
-
write(@output_filename, result)
|
89
|
+
File.write(@output_filename, result)
|
92
90
|
else
|
93
91
|
puts result unless @check_only
|
94
92
|
end
|
95
93
|
end
|
96
94
|
when :dir
|
97
|
-
book = @basedir ? ReVIEW::Book.
|
98
|
-
|
99
|
-
compiler = ReVIEW::Compiler.new(load_strategy_class(@target, @check_only))
|
95
|
+
book = @basedir ? ReVIEW::Book::Base.new(@basedir, config: @config) : ReVIEW::Book::Base.new(config: @config)
|
96
|
+
compiler = ReVIEW::Compiler.new(load_builder_class(@target, @check_only))
|
100
97
|
book.chapters.each do |chap|
|
101
98
|
str = compiler.compile(chap)
|
102
|
-
write("#{chap.name}#{compiler.
|
99
|
+
File.write("#{chap.name}#{compiler.builder.extname}", str) unless @check_only
|
103
100
|
end
|
104
101
|
# PART
|
105
102
|
book.parts_in_file.each do |part|
|
106
103
|
str = compiler.compile(part)
|
107
|
-
write("#{part.name}#{compiler.
|
104
|
+
File.write("#{part.name}#{compiler.builder.extname}", str) unless @check_only
|
108
105
|
end
|
109
106
|
else
|
110
107
|
raise "must not happen: #{@mode}"
|
111
108
|
end
|
112
109
|
rescue ReVIEW::ApplicationError => e
|
113
|
-
error
|
110
|
+
error! e.message
|
114
111
|
end
|
115
112
|
end
|
116
113
|
|
@@ -128,7 +125,7 @@ def parse_opts
|
|
128
125
|
opts.on('--chapref="before,middle,after"', 'Chapref decoration. (idgxml)') { |cdec| @config['chapref'] = cdec }
|
129
126
|
opts.on('--chapterlink', 'make chapref hyperlink') { @config['chapterlink'] = true }
|
130
127
|
opts.on('--stylesheet=file', 'Stylesheet file for HTML (comma separated)') { |files| @config['stylesheet'] = files.split(/\s*,\s*/) }
|
131
|
-
opts.on('--mathml', 'Use MathML for TeX equation in HTML') { @config['
|
128
|
+
opts.on('--mathml', 'Use MathML for TeX equation in HTML') { @config['math_format'] = 'mathml' }
|
132
129
|
opts.on('--htmlversion=VERSION', 'HTML version.') do |v|
|
133
130
|
v = v.to_i
|
134
131
|
@config['htmlversion'] = v if [4, 5].include?(v)
|
@@ -169,22 +166,9 @@ def parse_opts
|
|
169
166
|
end
|
170
167
|
end
|
171
168
|
|
172
|
-
def
|
173
|
-
@logger.error msg
|
174
|
-
exit 1
|
175
|
-
end
|
176
|
-
|
177
|
-
def warn(msg)
|
178
|
-
@logger.warn msg
|
179
|
-
end
|
180
|
-
|
181
|
-
def load_strategy_class(target, strict)
|
169
|
+
def load_builder_class(target, strict)
|
182
170
|
require "review/#{target}builder"
|
183
171
|
ReVIEW.const_get("#{target.upcase}Builder").new(strict)
|
184
172
|
end
|
185
173
|
|
186
|
-
def write(path, str)
|
187
|
-
File.open(path, 'w') { |f| f.puts str }
|
188
|
-
end
|
189
|
-
|
190
174
|
main
|
data/bin/review-epub2html
CHANGED
@@ -7,10 +7,7 @@
|
|
7
7
|
# the GNU LGPL, Lesser General Public License version 2.1.
|
8
8
|
# For details of the GNU LGPL, see the file "COPYING".
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
13
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
10
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
14
11
|
|
15
12
|
require 'review/epub2html'
|
16
13
|
|
data/bin/review-epubmaker
CHANGED
@@ -6,11 +6,10 @@
|
|
6
6
|
# the GNU LGPL, Lesser General Public License version 2.1.
|
7
7
|
# For details of the GNU LGPL, see the file "COPYING".
|
8
8
|
#
|
9
|
-
require 'pathname'
|
10
|
-
require 'optparse'
|
11
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
12
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
13
9
|
|
10
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
11
|
+
|
12
|
+
require 'optparse'
|
14
13
|
require 'review/epubmaker'
|
15
14
|
|
16
15
|
ReVIEW::EPUBMaker.execute(*ARGV)
|
data/bin/review-idgxmlmaker
CHANGED
@@ -7,9 +7,7 @@
|
|
7
7
|
# For details of the GNU LGPL, see the file "COPYING".
|
8
8
|
#
|
9
9
|
|
10
|
-
|
11
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
12
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
10
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
13
11
|
|
14
12
|
require 'review/idgxmlmaker'
|
15
13
|
|
data/bin/review-index
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
# Copyright (c) 2008-
|
3
|
+
# Copyright (c) 2008-2020 Minero Aoki, Kenshi Muto
|
4
4
|
# 1999-2007 Minero Aoki
|
5
5
|
#
|
6
6
|
# This program is free software.
|
@@ -9,98 +9,17 @@
|
|
9
9
|
# For details of the GNU LGPL, see the file "COPYING".
|
10
10
|
#
|
11
11
|
|
12
|
-
|
12
|
+
$LOAD_PATH.unshift(File.realpath('../lib', __dir__))
|
13
13
|
|
14
|
-
bindir = Pathname.new(__FILE__).realpath.dirname
|
15
|
-
$LOAD_PATH.unshift((bindir + '../lib').realpath)
|
16
|
-
|
17
|
-
require 'review/book'
|
18
|
-
require 'review/tocparser'
|
19
14
|
require 'review/tocprinter'
|
20
|
-
require 'review/version'
|
21
|
-
require 'optparse'
|
22
15
|
|
23
|
-
|
24
|
-
@logger = ReVIEW.logger
|
16
|
+
begin
|
25
17
|
Signal.trap(:INT) { exit 1 }
|
26
18
|
if RUBY_PLATFORM !~ /mswin(?!ce)|mingw|cygwin|bccwin/
|
27
19
|
Signal.trap(:PIPE, 'IGNORE')
|
28
20
|
end
|
29
|
-
|
21
|
+
|
22
|
+
ReVIEW::TOCPrinter.execute(*ARGV)
|
30
23
|
rescue Errno::EPIPE
|
31
24
|
exit 0
|
32
25
|
end
|
33
|
-
|
34
|
-
def _main
|
35
|
-
yamlfile = 'config.yml'
|
36
|
-
printer_class = ReVIEW::TextTOCPrinter
|
37
|
-
source = nil
|
38
|
-
upper = ReVIEW::TOCPrinter.default_upper_level
|
39
|
-
param = {}
|
40
|
-
book = ReVIEW::Book::Base.load
|
41
|
-
|
42
|
-
opts = OptionParser.new
|
43
|
-
opts.version = ReVIEW::VERSION
|
44
|
-
opts.on('--yaml=YAML', 'Read configurations from YAML file.') { |yaml| yamlfile = yaml }
|
45
|
-
opts.on('-a', '--all', 'print all chapters.') { source = book }
|
46
|
-
opts.on('-p', '--part N', 'list only part N.') do |n|
|
47
|
-
source = book.part(Integer(n)) or
|
48
|
-
error_exit("part #{n} does not exist in this book")
|
49
|
-
end
|
50
|
-
opts.on('-c', '--chapter C', 'list only chapter C.') do |c|
|
51
|
-
begin
|
52
|
-
source = ReVIEW::Book::Part.new(nil, 1, [book.chapter(c)])
|
53
|
-
rescue
|
54
|
-
error_exit("chapter #{c} does not exist in this book")
|
55
|
-
end
|
56
|
-
end
|
57
|
-
opts.on('-l', '--level N', 'list upto N level (1..4, default=4)') do |n|
|
58
|
-
upper = Integer(n)
|
59
|
-
unless (0..4).cover?(upper) # 0 is hidden option
|
60
|
-
$stderr.puts '-l/--level option accepts only 1..4'
|
61
|
-
exit 1
|
62
|
-
end
|
63
|
-
end
|
64
|
-
opts.on('--text', 'output in plain text (default)') { printer_class = ReVIEW::TextTOCPrinter }
|
65
|
-
opts.on('--html', 'output in HTML (deprecated)') { printer_class = ReVIEW::HTMLTOCPrinter }
|
66
|
-
opts.on('--help', 'print this message and quit.') do
|
67
|
-
puts opts.help
|
68
|
-
exit 0
|
69
|
-
end
|
70
|
-
begin
|
71
|
-
opts.parse!
|
72
|
-
rescue OptionParser::ParseError => e
|
73
|
-
@logger.error e.message
|
74
|
-
$stderr.puts opts.help
|
75
|
-
exit 1
|
76
|
-
end
|
77
|
-
|
78
|
-
book.config = ReVIEW::Configure.values
|
79
|
-
book.load_config(yamlfile) if yamlfile
|
80
|
-
|
81
|
-
if source
|
82
|
-
error_exit('-a/-s option and file arguments are exclusive') unless ARGV.empty?
|
83
|
-
else
|
84
|
-
puts opts.help
|
85
|
-
exit 0
|
86
|
-
end
|
87
|
-
|
88
|
-
begin
|
89
|
-
printer = printer_class.new(upper, param)
|
90
|
-
if source.is_a?(ReVIEW::Book::Part)
|
91
|
-
printer.print_part(source)
|
92
|
-
else
|
93
|
-
printer.print_book(source)
|
94
|
-
end
|
95
|
-
rescue ReVIEW::Error, Errno::ENOENT => e
|
96
|
-
raise if $DEBUG
|
97
|
-
error_exit(e.message)
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def error_exit(msg)
|
102
|
-
@logger.error msg
|
103
|
-
exit 1
|
104
|
-
end
|
105
|
-
|
106
|
-
main
|