review 4.2.0 → 5.0.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-win.yml +11 -5
- data/.rubocop.yml +113 -24
- data/NEWS.ja.md +94 -0
- data/NEWS.md +94 -0
- data/bin/review-catalog-converter +1 -1
- data/bin/review-check +2 -4
- data/bin/review-checkdep +1 -1
- data/bin/review-compile +8 -14
- data/bin/review-validate +1 -1
- data/doc/config.yml.sample +4 -1
- data/doc/config.yml.sample-simple +1 -1
- data/doc/format.ja.md +83 -4
- data/doc/format.md +84 -7
- data/doc/makeindex.ja.md +2 -2
- data/doc/quickstart.ja.md +3 -3
- data/doc/quickstart.md +2 -2
- data/lib/epubmaker/content.rb +3 -2
- data/lib/epubmaker/epubcommon.rb +33 -25
- data/lib/epubmaker/epubv2.rb +5 -6
- data/lib/epubmaker/epubv3.rb +20 -18
- data/lib/review/book.rb +2 -2
- data/lib/review/book/base.rb +61 -25
- data/lib/review/book/bib.rb +21 -0
- data/lib/review/book/book_unit.rb +155 -0
- data/lib/review/book/chapter.rb +30 -26
- data/lib/review/book/index.rb +23 -185
- data/lib/review/book/index/item.rb +7 -1
- data/lib/review/book/part.rb +21 -9
- data/lib/review/book/volume.rb +1 -1
- data/lib/review/builder.rb +68 -13
- data/lib/review/catalog.rb +2 -2
- data/lib/review/compiler.rb +159 -73
- data/lib/review/configure.rb +22 -1
- data/lib/review/converter.rb +1 -1
- data/lib/review/epub2html.rb +6 -1
- data/lib/review/epubmaker.rb +12 -23
- data/lib/review/htmlbuilder.rb +36 -7
- data/lib/review/htmlutils.rb +7 -10
- data/lib/review/i18n.rb +1 -1
- data/lib/review/idgxmlbuilder.rb +51 -6
- data/lib/review/idgxmlmaker.rb +9 -14
- data/lib/review/index_builder.rb +653 -0
- data/lib/review/init.rb +5 -13
- data/lib/review/latexbuilder.rb +65 -4
- data/lib/review/logger.rb +2 -2
- data/lib/review/makerhelper.rb +11 -0
- data/lib/review/markdownbuilder.rb +19 -1
- data/lib/review/pdfmaker.rb +17 -36
- data/lib/review/plaintextbuilder.rb +48 -2
- data/lib/review/preprocessor.rb +5 -5
- data/lib/review/rstbuilder.rb +25 -6
- data/lib/review/sec_counter.rb +13 -0
- data/lib/review/textmaker.rb +4 -12
- data/lib/review/tocprinter.rb +2 -3
- data/lib/review/topbuilder.rb +26 -0
- data/lib/review/update.rb +7 -7
- data/lib/review/version.rb +1 -1
- data/lib/review/volumeprinter.rb +2 -3
- data/lib/review/webmaker.rb +9 -20
- data/review.gemspec +2 -2
- data/samples/sample-book/src/config.yml +1 -1
- data/samples/syntax-book/Gemfile +1 -1
- data/samples/syntax-book/config.yml +1 -1
- data/templates/latex/config.erb +27 -23
- data/templates/latex/review-jlreq/README.md +3 -1
- data/templates/latex/review-jlreq/review-base.sty +31 -15
- data/templates/latex/review-jlreq/review-jlreq.cls +8 -24
- data/templates/latex/review-jsbook/README.md +7 -5
- data/templates/latex/review-jsbook/review-base.sty +34 -16
- data/templates/latex/review-jsbook/review-jsbook.cls +4 -2
- data/templates/web/html/layout-html5.html.erb +1 -1
- data/test/assets/test_template.tex +3 -3
- data/test/assets/test_template_backmatter.tex +3 -3
- data/test/book_test_helper.rb +11 -5
- data/test/test_book.rb +54 -63
- data/test/test_book_chapter.rb +93 -52
- data/test/test_builder.rb +24 -15
- data/test/test_converter.rb +1 -0
- data/test/test_epub3maker.rb +2 -2
- data/test/test_epubmaker.rb +8 -0
- data/test/test_helper.rb +4 -1
- data/test/test_htmlbuilder.rb +627 -56
- data/test/test_htmlutils.rb +0 -12
- data/test/test_i18n.rb +33 -33
- data/test/test_idgxmlbuilder.rb +358 -11
- data/test/test_idgxmlmaker_cmd.rb +1 -1
- data/test/test_index.rb +62 -52
- data/test/test_indexbuilder.rb +52 -0
- data/test/test_latexbuilder.rb +547 -10
- data/test/test_latexbuilder_v2.rb +43 -5
- data/test/test_logger.rb +7 -7
- data/test/test_makerhelper.rb +0 -12
- data/test/test_markdownbuilder.rb +3 -0
- data/test/test_pdfmaker.rb +13 -12
- data/test/test_pdfmaker_cmd.rb +1 -1
- data/test/test_plaintextbuilder.rb +422 -7
- data/test/test_review_ext.rb +2 -1
- data/test/test_rstbuilder.rb +25 -1
- data/test/test_sec_counter.rb +156 -0
- data/test/test_textmaker_cmd.rb +1 -1
- data/test/test_topbuilder.rb +187 -10
- data/test/test_update.rb +10 -10
- data/test/test_webtocprinter.rb +12 -12
- 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 +14 -6
- data/.rubocop_todo.yml +0 -7
- data/lib/review/book/compilable.rb +0 -174
data/lib/review/preprocessor.rb
CHANGED
@@ -195,7 +195,7 @@ module ReVIEW
|
|
195
195
|
op = m[1]
|
196
196
|
args = m[2].split(/,\s*/)
|
197
197
|
opts = parse_optargs(m[3])
|
198
|
-
return if argc == 0
|
198
|
+
return if (argc == 0) && args.empty?
|
199
199
|
if argc == -1
|
200
200
|
# Any number of arguments are allowed.
|
201
201
|
elsif args.size != argc
|
@@ -284,7 +284,7 @@ module ReVIEW
|
|
284
284
|
err = stderr.readlines
|
285
285
|
end
|
286
286
|
end
|
287
|
-
if err
|
287
|
+
if err && !err.empty?
|
288
288
|
$stderr.puts '[unexpected stderr message]'
|
289
289
|
err.each { |line| $stderr.print line }
|
290
290
|
error 'get_output: got unexpected output'
|
@@ -355,14 +355,14 @@ module ReVIEW
|
|
355
355
|
|
356
356
|
def parse_git_blob(g_obj)
|
357
357
|
IO.popen('git show ' + g_obj.sub(/\Agit\|/, ''), 'r') do |f|
|
358
|
-
init_errorutils
|
358
|
+
init_errorutils(f)
|
359
359
|
return _parse_file(f)
|
360
360
|
end
|
361
361
|
end
|
362
362
|
|
363
363
|
def parse_file(fname)
|
364
364
|
File.open(fname, 'rt:BOM|utf-8') do |f|
|
365
|
-
init_errorutils
|
365
|
+
init_errorutils(f)
|
366
366
|
return _parse_file(f)
|
367
367
|
end
|
368
368
|
end
|
@@ -426,7 +426,7 @@ module ReVIEW
|
|
426
426
|
curr.each_value { |list| list.push(Line.new(nil, line)) }
|
427
427
|
|
428
428
|
else
|
429
|
-
next if yacchack
|
429
|
+
next if yacchack && (line.strip == ';')
|
430
430
|
line = canonical(line)
|
431
431
|
curr.each_value { |list| list.push(Line.new(lineno, line)) }
|
432
432
|
lineno += 1
|
data/lib/review/rstbuilder.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2008-
|
1
|
+
# Copyright (c) 2008-2020 Minero Aoki, Kenshi Muto
|
2
2
|
# 2002-2006 Minero Aoki
|
3
3
|
#
|
4
4
|
# This program is free software.
|
@@ -86,7 +86,7 @@ module ReVIEW
|
|
86
86
|
private :blank
|
87
87
|
|
88
88
|
def result
|
89
|
-
@output.string
|
89
|
+
solve_nest(@output.string)
|
90
90
|
end
|
91
91
|
|
92
92
|
def headline(level, label, caption)
|
@@ -97,7 +97,7 @@ module ReVIEW
|
|
97
97
|
end
|
98
98
|
p = '='
|
99
99
|
case level
|
100
|
-
when 1
|
100
|
+
when 1
|
101
101
|
unless label
|
102
102
|
puts ".. _#{@chapter.name}:"
|
103
103
|
blank
|
@@ -373,8 +373,9 @@ module ReVIEW
|
|
373
373
|
|
374
374
|
def compile_kw(word, alt)
|
375
375
|
if alt
|
376
|
-
|
377
|
-
else
|
376
|
+
" **#{word}(#{alt.strip})** "
|
377
|
+
else
|
378
|
+
" **#{word}** "
|
378
379
|
end
|
379
380
|
end
|
380
381
|
|
@@ -582,6 +583,24 @@ module ReVIEW
|
|
582
583
|
base_parablock('centering', lines, nil)
|
583
584
|
end
|
584
585
|
|
586
|
+
CAPTION_TITLES.each do |name|
|
587
|
+
class_eval %Q(
|
588
|
+
def #{name}_begin(caption = nil)
|
589
|
+
check_nested_minicolumn
|
590
|
+
@doc_status[:minicolumn] = '#{name}'
|
591
|
+
puts ".. #{name}::"
|
592
|
+
blank
|
593
|
+
puts " " + compile_inline(caption).to_s unless caption.nil?
|
594
|
+
print " "
|
595
|
+
end
|
596
|
+
|
597
|
+
def #{name}_end
|
598
|
+
blank
|
599
|
+
@doc_status[:minicolumn] = nil
|
600
|
+
end
|
601
|
+
), __FILE__, __LINE__ - 14
|
602
|
+
end
|
603
|
+
|
585
604
|
def note(lines, caption = nil)
|
586
605
|
base_parablock('note', lines, caption)
|
587
606
|
end
|
@@ -705,7 +724,7 @@ module ReVIEW
|
|
705
724
|
str
|
706
725
|
end
|
707
726
|
|
708
|
-
def inline_chap(id)
|
727
|
+
def inline_chap(id) # rubocop:disable Lint/UselessMethodDefinition
|
709
728
|
super
|
710
729
|
end
|
711
730
|
|
data/lib/review/sec_counter.rb
CHANGED
@@ -37,6 +37,19 @@ module ReVIEW
|
|
37
37
|
str
|
38
38
|
end
|
39
39
|
|
40
|
+
def number_list
|
41
|
+
buf = @counter.dup
|
42
|
+
while buf.present?
|
43
|
+
if buf.last == 0
|
44
|
+
buf.pop
|
45
|
+
else
|
46
|
+
return buf
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
buf
|
51
|
+
end
|
52
|
+
|
40
53
|
def prefix(level, secnolevel)
|
41
54
|
return nil if @chapter.number.blank?
|
42
55
|
|
data/lib/review/textmaker.rb
CHANGED
@@ -75,20 +75,13 @@ module ReVIEW
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def execute(*args)
|
78
|
-
@config = ReVIEW::Configure.values
|
79
|
-
@config.maker = 'textmaker'
|
80
78
|
cmd_config, yamlfile = parse_opts(args)
|
81
79
|
error "#{yamlfile} not found." unless File.exist?(yamlfile)
|
82
80
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
rescue => e
|
87
|
-
error "yaml error #{e.message}"
|
88
|
-
end
|
81
|
+
@config = ReVIEW::Configure.create(maker: 'textmaker',
|
82
|
+
yamlfile: yamlfile,
|
83
|
+
config: cmd_config)
|
89
84
|
|
90
|
-
# YAML configs will be overridden by command line options.
|
91
|
-
@config.deep_merge!(cmd_config)
|
92
85
|
I18n.setup(@config['language'])
|
93
86
|
begin
|
94
87
|
generate_text_files(yamlfile)
|
@@ -109,8 +102,7 @@ module ReVIEW
|
|
109
102
|
remove_old_files(@path)
|
110
103
|
Dir.mkdir(@path)
|
111
104
|
|
112
|
-
@book = ReVIEW::Book.
|
113
|
-
@book.config = @config
|
105
|
+
@book = ReVIEW::Book::Base.new(@basedir, config: @config)
|
114
106
|
|
115
107
|
build_body(@path, yamlfile)
|
116
108
|
end
|
data/lib/review/tocprinter.rb
CHANGED
@@ -50,7 +50,7 @@ module ReVIEW
|
|
50
50
|
@logger = ReVIEW.logger
|
51
51
|
@config = ReVIEW::Configure.values
|
52
52
|
@yamlfile = 'config.yml'
|
53
|
-
@book = ReVIEW::Book::Base.
|
53
|
+
@book = ReVIEW::Book::Base.new('.', config: @config)
|
54
54
|
@upper = 4
|
55
55
|
@indent = true
|
56
56
|
@buildonly = nil
|
@@ -59,7 +59,6 @@ module ReVIEW
|
|
59
59
|
|
60
60
|
def execute(*args)
|
61
61
|
parse_options(args)
|
62
|
-
@book.config = ReVIEW::Configure.values
|
63
62
|
unless File.readable?(@yamlfile)
|
64
63
|
@logger.error("No such fiile or can't open #{@yamlfile}.")
|
65
64
|
exit 1
|
@@ -108,7 +107,7 @@ module ReVIEW
|
|
108
107
|
result_array.push({ part: 'end' })
|
109
108
|
end
|
110
109
|
end
|
111
|
-
rescue ReVIEW::FileNotFound => e
|
110
|
+
rescue ReVIEW::FileNotFound, ReVIEW::CompileError => e
|
112
111
|
@logger.error e
|
113
112
|
exit 1
|
114
113
|
end
|
data/lib/review/topbuilder.rb
CHANGED
@@ -444,6 +444,32 @@ module ReVIEW
|
|
444
444
|
blank
|
445
445
|
end
|
446
446
|
|
447
|
+
def common_block_begin(type, _level, _label, caption = nil)
|
448
|
+
blank
|
449
|
+
puts "◆→開始:#{@titles[type]}←◆"
|
450
|
+
puts '■' + compile_inline(caption) if caption.present?
|
451
|
+
end
|
452
|
+
|
453
|
+
def common_block_end(type, _level)
|
454
|
+
puts "◆→終了:#{@titles[type]}←◆"
|
455
|
+
blank
|
456
|
+
end
|
457
|
+
|
458
|
+
CAPTION_TITLES.each do |name|
|
459
|
+
class_eval %Q(
|
460
|
+
def #{name}_begin(caption = nil)
|
461
|
+
check_nested_minicolumn
|
462
|
+
@doc_status[:minicolumn] = '#{name}'
|
463
|
+
common_block_begin('#{name}', nil, nil, caption)
|
464
|
+
end
|
465
|
+
|
466
|
+
def #{name}_end
|
467
|
+
common_block_end('#{name}', nil)
|
468
|
+
@doc_status[:minicolumn] = nil
|
469
|
+
end
|
470
|
+
), __FILE__, __LINE__ - 11
|
471
|
+
end
|
472
|
+
|
447
473
|
def indepimage(_lines, id, caption = nil, metric = nil)
|
448
474
|
metrics = parse_metric('top', metric)
|
449
475
|
metrics = " #{metrics}" if metrics.present?
|
data/lib/review/update.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (c) 2018-
|
2
|
+
# Copyright (c) 2018-2020 Kenshi Muto
|
3
3
|
#
|
4
4
|
# This program is free software.
|
5
5
|
# You can distribute or modify this program under the terms of
|
@@ -20,7 +20,7 @@ module ReVIEW
|
|
20
20
|
end
|
21
21
|
|
22
22
|
# should be
|
23
|
-
TARGET_VERSION = '
|
23
|
+
TARGET_VERSION = '5.0'
|
24
24
|
EPUB_VERSION = '3'
|
25
25
|
HTML_VERSION = '5'
|
26
26
|
TEX_DOCUMENTCLASS = ['review-jsbook', 'review-jlreq']
|
@@ -239,7 +239,7 @@ module ReVIEW
|
|
239
239
|
def update_version
|
240
240
|
@config_ymls.each do |yml|
|
241
241
|
config = YAML.load_file(yml)
|
242
|
-
if config['review_version'].to_f == TARGET_VERSION.to_f
|
242
|
+
if config['review_version'].to_f.round(1) == TARGET_VERSION.to_f.round(1)
|
243
243
|
next
|
244
244
|
end
|
245
245
|
|
@@ -513,11 +513,11 @@ module ReVIEW
|
|
513
513
|
def update_tex_command
|
514
514
|
@tex_ymls.each do |yml|
|
515
515
|
config = YAML.load_file(yml)
|
516
|
-
if !config['texcommand'] || config['texcommand'] !~ /\s
|
516
|
+
if !config['texcommand'] || config['texcommand'] !~ /\s+-/
|
517
517
|
next
|
518
518
|
end
|
519
519
|
# option should be moved to texoptions
|
520
|
-
cmd, opts = config['texcommand'].split(/\s
|
520
|
+
cmd, opts = config['texcommand'].split(/\s+-/, 2)
|
521
521
|
opts = "-#{opts}"
|
522
522
|
|
523
523
|
unless confirm("%s: 'texcommand' has options ('%s'). Move it to 'texoptions'?", [File.basename(yml), opts])
|
@@ -537,12 +537,12 @@ module ReVIEW
|
|
537
537
|
def update_dvi_command
|
538
538
|
@tex_ymls.each do |yml|
|
539
539
|
config = YAML.load_file(yml)
|
540
|
-
if !config['dvicommand'] || config['dvicommand'] !~ /\s
|
540
|
+
if !config['dvicommand'] || config['dvicommand'] !~ /\s+-/
|
541
541
|
next
|
542
542
|
end
|
543
543
|
|
544
544
|
# option should be moved to dvioptions
|
545
|
-
cmd, opts = config['dvicommand'].split(/\s
|
545
|
+
cmd, opts = config['dvicommand'].split(/\s+-/, 2)
|
546
546
|
opts = "-#{opts}"
|
547
547
|
|
548
548
|
unless confirm("%s: 'dvicommand' has options ('%s'). Move it to 'dvioptions'?", [File.basename(yml), opts])
|
data/lib/review/version.rb
CHANGED
data/lib/review/volumeprinter.rb
CHANGED
@@ -28,8 +28,7 @@ module ReVIEW
|
|
28
28
|
|
29
29
|
def execute(*args)
|
30
30
|
parse_options(args)
|
31
|
-
@book = ReVIEW::Book::Base.
|
32
|
-
@book.config = @config
|
31
|
+
@book = ReVIEW::Book::Base.new('.', config: @config)
|
33
32
|
unless File.readable?(@yamlfile)
|
34
33
|
@logger.error("No such fiile or can't open #{@yamlfile}.")
|
35
34
|
exit 1
|
@@ -46,7 +45,7 @@ module ReVIEW
|
|
46
45
|
print_chapter_volume(chap)
|
47
46
|
end
|
48
47
|
end
|
49
|
-
rescue ReVIEW::FileNotFound => e
|
48
|
+
rescue ReVIEW::FileNotFound, ReVIEW::CompileError => e
|
50
49
|
@logger.error e
|
51
50
|
exit 1
|
52
51
|
end
|
data/lib/review/webmaker.rb
CHANGED
@@ -19,7 +19,6 @@ require 'review/yamlloader'
|
|
19
19
|
require 'review/template'
|
20
20
|
require 'review/tocprinter'
|
21
21
|
require 'review/version'
|
22
|
-
require 'erb'
|
23
22
|
require 'review/makerhelper'
|
24
23
|
|
25
24
|
module ReVIEW
|
@@ -80,19 +79,13 @@ module ReVIEW
|
|
80
79
|
end
|
81
80
|
|
82
81
|
def execute(*args)
|
83
|
-
@config = ReVIEW::Configure.values
|
84
|
-
@config.maker = 'webmaker'
|
85
82
|
cmd_config, yamlfile = parse_opts(args)
|
86
83
|
error "#{yamlfile} not found." unless File.exist?(yamlfile)
|
87
84
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
error "yaml error #{e.message}"
|
93
|
-
end
|
94
|
-
# YAML configs will be overridden by command line options.
|
95
|
-
@config.deep_merge!(cmd_config)
|
85
|
+
@config = ReVIEW::Configure.create(maker: 'webmaker',
|
86
|
+
yamlfile: yamlfile,
|
87
|
+
config: cmd_config)
|
88
|
+
|
96
89
|
@config['htmlext'] = 'html'
|
97
90
|
I18n.setup(@config['language'])
|
98
91
|
begin
|
@@ -109,8 +102,7 @@ module ReVIEW
|
|
109
102
|
remove_old_files(@path)
|
110
103
|
Dir.mkdir(@path)
|
111
104
|
|
112
|
-
@book = ReVIEW::Book.
|
113
|
-
@book.config = @config
|
105
|
+
@book = ReVIEW::Book::Base.new(@basedir, config: @config)
|
114
106
|
|
115
107
|
copy_stylesheet(@path)
|
116
108
|
copy_frontmatter(@path)
|
@@ -129,12 +121,6 @@ module ReVIEW
|
|
129
121
|
copy_resources(@config['fontdir'], "#{@path}/fonts", @config['font_ext'])
|
130
122
|
end
|
131
123
|
|
132
|
-
def clean_mathdir
|
133
|
-
if @config['imgmath'] && File.exist?("#{@config['imagedir']}/_review_math")
|
134
|
-
FileUtils.rm_rf("#{@config['imagedir']}/_review_math")
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
124
|
def build_body(basetmpdir, _yamlfile)
|
139
125
|
base_path = Pathname.new(@basedir)
|
140
126
|
builder = ReVIEW::HTMLBuilder.new
|
@@ -156,6 +142,7 @@ module ReVIEW
|
|
156
142
|
end
|
157
143
|
|
158
144
|
def build_part(part, basetmpdir, htmlfile)
|
145
|
+
@title = h("#{ReVIEW::I18n.t('part', part.number)} #{part.name.strip}")
|
159
146
|
File.open("#{basetmpdir}/#{htmlfile}", 'w') do |f|
|
160
147
|
@body = ''
|
161
148
|
@body << %Q(<div class="part">\n)
|
@@ -259,6 +246,7 @@ module ReVIEW
|
|
259
246
|
end
|
260
247
|
|
261
248
|
def build_indexpage(basetmpdir)
|
249
|
+
@title = h('index')
|
262
250
|
File.open("#{basetmpdir}/index.html", 'w') do |f|
|
263
251
|
if @config['coverimage']
|
264
252
|
file = File.join(@config['imagedir'], @config['coverimage'])
|
@@ -281,10 +269,11 @@ module ReVIEW
|
|
281
269
|
end
|
282
270
|
|
283
271
|
def build_titlepage(basetmpdir, htmlfile)
|
272
|
+
@title = h('titlepage')
|
284
273
|
File.open("#{basetmpdir}/#{htmlfile}", 'w') do |f|
|
285
274
|
@body = ''
|
286
275
|
@body << %Q(<div class="titlepage">)
|
287
|
-
@body << %Q(<h1 class="tp-title">#{
|
276
|
+
@body << %Q(<h1 class="tp-title">#{h(@config.name_of('booktitle'))}</h1>)
|
288
277
|
if @config['aut']
|
289
278
|
@body << %Q(<h2 class="tp-author">#{join_with_separator(@config.names_of('aut'), ReVIEW::I18n.t('names_splitter'))}</h2>)
|
290
279
|
end
|
data/review.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.summary = 'Re:VIEW: a easy-to-use digital publishing system'
|
13
13
|
gem.description = 'Re:VIEW is a digital publishing system for books and ebooks. It supports InDesign, EPUB and LaTeX.'
|
14
14
|
gem.required_rubygems_version = Gem::Requirement.new('>= 0') if gem.respond_to?(:required_rubygems_version=)
|
15
|
-
gem.date = '2020-
|
15
|
+
gem.date = '2020-10-29'
|
16
16
|
|
17
17
|
gem.files = `git ls-files`.split("\n")
|
18
18
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_dependency('rubyzip')
|
26
26
|
gem.add_development_dependency('pygments.rb')
|
27
27
|
gem.add_development_dependency('rake')
|
28
|
-
gem.add_development_dependency('rubocop', '~> 0.
|
28
|
+
gem.add_development_dependency('rubocop', '~> 0.92.0')
|
29
29
|
gem.add_development_dependency('rubocop-performance')
|
30
30
|
gem.add_development_dependency('simplecov')
|
31
31
|
gem.add_development_dependency('test-unit')
|
data/samples/syntax-book/Gemfile
CHANGED
data/templates/latex/config.erb
CHANGED
@@ -1,50 +1,51 @@
|
|
1
|
+
<%- initialize_metachars(@config['texcommand']) -%>
|
1
2
|
\makeatletter
|
2
3
|
\def\review@reviewversion{<%= ReVIEW::VERSION %>}
|
3
4
|
\def\review@texcompiler{<%= @texcompiler %>}
|
4
5
|
\def\review@documentclass{<%= @documentclass %>}
|
5
6
|
|
6
7
|
<%- %w(booktitle subtitle).each do |item| -%>
|
7
|
-
<%- if @config[item] -%>\def\review@<%= item %>name{<%=
|
8
|
+
<%- if @config[item] -%>\def\review@<%= item %>name{<%= escape(@config.name_of(item)) %>}
|
8
9
|
<%- end -%>
|
9
10
|
<%- end -%>
|
10
11
|
|
11
|
-
<%- %w(aut adp ann arr art asn aqt aft aui ant bkp clb cmm csl dsr edt ill lyr mdc mus nrt oth pht pbl prt red rev spn ths trc trl).each do |item| %><%- if @config[item] -%>\def\review@<%= item %>names{<%=
|
12
|
+
<%- %w(aut adp ann arr art asn aqt aft aui ant bkp clb cmm csl dsr edt ill lyr mdc mus nrt oth pht pbl prt red rev spn ths trc trl).each do |item| %><%- if @config[item] -%>\def\review@<%= item %>names{<%= escape(@config.names_of(item).join(I18n.t('names_splitter'))) %>}
|
12
13
|
<%- end -%>
|
13
14
|
<%- end -%>
|
14
15
|
|
15
16
|
\def\review@titlepageauthors{<%= @authors %>}
|
16
|
-
\def\review@date{<%=
|
17
|
+
\def\review@date{<%= escape(@config['date'].to_s) %>}
|
17
18
|
|
18
|
-
<%- %w(bookname language urnid isbn).each do |item| -%><%- if @config[item] -%>\def\review@<%= item %>{<%=
|
19
|
+
<%- %w(bookname language urnid isbn).each do |item| -%><%- if @config[item] -%>\def\review@<%= item %>{<%= escape(@config[item]) %>}
|
19
20
|
<%- end -%>
|
20
21
|
<%- end -%>
|
21
22
|
<%- %w(rights description subject type format source relation coverage).each do |item| -%>
|
22
23
|
<%- if @config[item] -%>
|
23
|
-
<%- a = [@config[item]].flatten -%>\def\review@<%= item %>{<%= a.map{|s|
|
24
|
+
<%- a = [@config[item]].flatten -%>\def\review@<%= item %>{<%= a.map{|s| escape(s)}.join('\\' + '\\') %>}
|
24
25
|
<%- end -%>
|
25
26
|
<%- end -%>
|
26
27
|
|
27
28
|
<%- if @config['highlight'] && @config['highlight']['latex'] -%>\def\review@highlightlatex{<%= @config['highlight']['latex'] %>}
|
28
29
|
<%- end -%>
|
29
30
|
|
30
|
-
\def\review@intn@list{<%=
|
31
|
-
\def\review@intn@columnhead{<%=
|
32
|
-
\def\review@intn@image{<%=
|
33
|
-
\def\review@intn@table{<%=
|
34
|
-
\def\review@intn@equation{<%=
|
35
|
-
\def\review@intn@columnname{<%=
|
36
|
-
\def\review@intn@memohead{<%=
|
37
|
-
\def\review@intn@edition{<%=
|
38
|
-
\def\review@intn@publishedby{<%=
|
39
|
-
\def\review@intn@captionprefix{<%=
|
40
|
-
\def\review@toctitle{<%=
|
41
|
-
\def\review@prepartname{<%=
|
42
|
-
\def\review@postpartname{<%=
|
43
|
-
\def\review@prechaptername{<%=
|
44
|
-
\def\review@postchaptername{<%=
|
45
|
-
\def\review@figurename{<%=
|
46
|
-
\def\review@tablename{<%=
|
47
|
-
\def\review@appendixname{<%=
|
31
|
+
\def\review@intn@list{<%= escape(I18n.t('list')) %>}
|
32
|
+
\def\review@intn@columnhead{<%= escape(I18n.t('column_head')) %>}
|
33
|
+
\def\review@intn@image{<%= escape(I18n.t('image')) %>}
|
34
|
+
\def\review@intn@table{<%= escape(I18n.t('table')) %>}
|
35
|
+
\def\review@intn@equation{<%= escape(I18n.t('equation')) %>}
|
36
|
+
\def\review@intn@columnname{<%= escape(I18n.t('columnname')) %>}
|
37
|
+
\def\review@intn@memohead{<%= escape(I18n.t('memo_head')) %>}
|
38
|
+
\def\review@intn@edition{<%= escape(I18n.t('edition')) %>}
|
39
|
+
\def\review@intn@publishedby{<%= escape(I18n.t('published_by', @config.names_of('pbl').join(I18n.t('names_splitter'))))%>}
|
40
|
+
\def\review@intn@captionprefix{<%= escape(I18n.t('caption_prefix')) %>}
|
41
|
+
\def\review@toctitle{<%= escape(@config['toctitle'].present? ? @config['toctitle'] : I18n.t('toctitle')) %>}
|
42
|
+
\def\review@prepartname{<%= escape(@locale_latex['prepartname']) %>}
|
43
|
+
\def\review@postpartname{<%= escape(@locale_latex['postpartname']) %>}
|
44
|
+
\def\review@prechaptername{<%= escape(@locale_latex['prechaptername']) %>}
|
45
|
+
\def\review@postchaptername{<%= escape(@locale_latex['postchaptername']) %>}
|
46
|
+
\def\review@figurename{<%= escape(I18n.t('image')) %>}
|
47
|
+
\def\review@tablename{<%= escape(I18n.t('table')) %>}
|
48
|
+
\def\review@appendixname{<%= escape(@locale_latex['preappendixname']) %>}
|
48
49
|
|
49
50
|
<%- if @config['toc'] -%>
|
50
51
|
\def\review@toc{true}
|
@@ -100,6 +101,9 @@
|
|
100
101
|
<%- if @config['use_part'] -%>
|
101
102
|
\def\reviewusepart{true}
|
102
103
|
<%- end -%>
|
104
|
+
<%- if @config['pdfmaker']['bbox'] -%>
|
105
|
+
\def\review@bbox{<%= @config['pdfmaker']['bbox'] %>}
|
106
|
+
<%- end -%>
|
103
107
|
|
104
108
|
\def\reviewbackcompatibilityhook{
|
105
109
|
\ifdefined\reviewimagecaption\else% for 3.0.0 compatibility
|