review 5.9.0 → 5.10.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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby-tex.yml +10 -1
- data/NEWS.ja.md +24 -0
- data/NEWS.md +24 -0
- data/lib/review/book/base.rb +4 -0
- data/lib/review/book/cache.rb +54 -0
- data/lib/review/book/image_finder.rb +3 -1
- data/lib/review/builder.rb +1 -1
- data/lib/review/epubmaker/epubcommon.rb +11 -11
- data/lib/review/epubmaker.rb +8 -3
- data/lib/review/htmlbuilder.rb +13 -13
- data/lib/review/idgxmlbuilder.rb +7 -7
- data/lib/review/latexbuilder.rb +6 -6
- data/lib/review/logger.rb +1 -1
- data/lib/review/pdfmaker.rb +11 -1
- data/lib/review/plaintextbuilder.rb +1 -1
- data/lib/review/tocprinter.rb +2 -2
- data/lib/review/version.rb +1 -1
- data/review.gemspec +5 -3
- metadata +38 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c2a456720c918f2f50342dfbd711d1d1b5dbc78d73ff311f28ac1614797f358a
|
|
4
|
+
data.tar.gz: a674bd3277e09fc000f390036824472f2fdf1a51468efe513fe23f21c44246bd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f0e3c8e8fdc5ea94c7931ddc1292e8a6a59717cbf6bb82e4c56233ef054fb3756dfb961f937252328951e66be184b4f924a8c8ca9bcb820bcb3d3567f98e4672
|
|
7
|
+
data.tar.gz: 7eff5222bde84c529d9688dd1f64c92c414cea0f20191f45ecf25c972f7a79bc3cb01c6381595063110c0f5abe816b01b9ee3fdffea29d0b671dcdf94959dfb7
|
|
@@ -20,11 +20,19 @@ jobs:
|
|
|
20
20
|
- name: Install TeXLive 2021 in ubuntu
|
|
21
21
|
if: runner.os == 'Linux'
|
|
22
22
|
run: |
|
|
23
|
-
sudo apt-get update -y -qq && sudo apt-get install -y -qq texlive-lang-japanese texlive-fonts-recommended texlive-fonts-extra texlive-luatex texlive-extra-utils texlive-latex-extra dvipng poppler-utils
|
|
23
|
+
sudo apt-get update -y -qq && sudo apt-get install -y -qq texlive-lang-japanese texlive-fonts-recommended texlive-fonts-extra texlive-luatex texlive-extra-utils texlive-latex-extra dvipng poppler-utils libfuse2
|
|
24
24
|
- name: Set up Ruby
|
|
25
25
|
uses: ruby/setup-ruby@v1
|
|
26
26
|
with:
|
|
27
27
|
ruby-version: ${{ matrix.ruby }}
|
|
28
|
+
- name: use vendor's imagemagick
|
|
29
|
+
run: |
|
|
30
|
+
export PATH=${GITHUB_WORKSPACE}/vendor/imagemagick:${PATH}
|
|
31
|
+
chmod 755 ${GITHUB_WORKSPACE}/vendor/imagemagick/magick
|
|
32
|
+
ln -s ${GITHUB_WORKSPACE}/vendor/imagemagick/magick ${GITHUB_WORKSPACE}/vendor/imagemagick/compare
|
|
33
|
+
which compare
|
|
34
|
+
magick -version
|
|
35
|
+
compare -version
|
|
28
36
|
- name: fix ImageMagick policy.xml on Linux
|
|
29
37
|
if: runner.os == 'Linux'
|
|
30
38
|
run: sudo sed -i 's/none/read|write/g' /etc/ImageMagick-6/policy.xml
|
|
@@ -34,6 +42,7 @@ jobs:
|
|
|
34
42
|
node-version: 18
|
|
35
43
|
- name: Build and test with Rake
|
|
36
44
|
run: |
|
|
45
|
+
export PATH=${GITHUB_WORKSPACE}/vendor/imagemagick:${PATH}
|
|
37
46
|
gem install bundler --no-document
|
|
38
47
|
bundle install --retry 3
|
|
39
48
|
bundle exec rake
|
data/NEWS.ja.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
# Version 5.10.0
|
|
2
|
+
## バグ修正
|
|
3
|
+
* サブディレクトリとカスタムページを両方指定するとエラーが発生するバグを修正しました([#1913],[#1914])
|
|
4
|
+
* EPUBBuilder: ビルド時間が長い問題を解決しました([#1915],[#1916],[#1919])
|
|
5
|
+
* ImageMagickのcompareのmetricに`SSIM`を使うように変更し、環境によってテストが失敗する問題を修正しました([#1917],[#1921])
|
|
6
|
+
* EPUBMaker: `verify_target_images`が有効な場合、coverimageを暗黙に取り込むよう修正しました([#1918],[#1923])
|
|
7
|
+
|
|
8
|
+
## 機能強化
|
|
9
|
+
* Ruby 3.4で`csv` gemと`nkf` gemがdefault gemではなくなる警告に対応しました([#1911])
|
|
10
|
+
|
|
11
|
+
## コントリビューターのみなさん
|
|
12
|
+
* [@fabon-f](https://github.com/fabon-f)
|
|
13
|
+
|
|
14
|
+
[#1911]: https://github.com/kmuto/review/pull/1911
|
|
15
|
+
[#1913]: https://github.com/kmuto/review/issues/1913
|
|
16
|
+
[#1914]: https://github.com/kmuto/review/pull/1914
|
|
17
|
+
[#1915]: https://github.com/kmuto/review/issues/1915
|
|
18
|
+
[#1916]: https://github.com/kmuto/review/issues/1916
|
|
19
|
+
[#1917]: https://github.com/kmuto/review/issues/1917
|
|
20
|
+
[#1918]: https://github.com/kmuto/review/issues/1918
|
|
21
|
+
[#1919]: https://github.com/kmuto/review/pull/1919
|
|
22
|
+
[#1921]: https://github.com/kmuto/review/pull/1921
|
|
23
|
+
[#1923]: https://github.com/kmuto/review/pull/1923
|
|
24
|
+
|
|
1
25
|
# Version 5.9.0
|
|
2
26
|
## バグ修正
|
|
3
27
|
* LATEXBuilder: `@<code>`, `@<tt>`, `@<tti>`, `@<ttb>`での空白幅が適切になるよう修正しました。またPDF栞の扱いを改善しました([#1906],[#1907])。
|
data/NEWS.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
# Version 5.10.0
|
|
2
|
+
## Bug Fixes
|
|
3
|
+
* Fixed an issue where specifying both a subdirectory and a custom page would cause an error ([#1913], [#1914]).
|
|
4
|
+
* EPUBBuilder: Resolved an issue with long build times. ([#1915], [#1916], [#1919]).
|
|
5
|
+
* EPUBMaker: When `verify_target_images` is enabled, modified to implicitly include coverimage ([#1918], [#1923]).
|
|
6
|
+
* Changed the metric option of ImageMagick's compare command to use `SSIM` ([#1917], [#1921]).
|
|
7
|
+
|
|
8
|
+
## Enhancements
|
|
9
|
+
* Resolved warnings about the `csv` and `nkf` gems no longer being default gems in Ruby 3.4 ([#1911]).
|
|
10
|
+
|
|
11
|
+
## Contributors
|
|
12
|
+
* [@fabon-f](https://github.com/fabon-f)
|
|
13
|
+
|
|
14
|
+
[#1911]: https://github.com/kmuto/review/pull/1911
|
|
15
|
+
[#1913]: https://github.com/kmuto/review/issues/1913
|
|
16
|
+
[#1914]: https://github.com/kmuto/review/pull/1914
|
|
17
|
+
[#1915]: https://github.com/kmuto/review/issues/1915
|
|
18
|
+
[#1916]: https://github.com/kmuto/review/issues/1916
|
|
19
|
+
[#1917]: https://github.com/kmuto/review/issues/1917
|
|
20
|
+
[#1918]: https://github.com/kmuto/review/issues/1918
|
|
21
|
+
[#1919]: https://github.com/kmuto/review/pull/1919
|
|
22
|
+
[#1921]: https://github.com/kmuto/review/pull/1921
|
|
23
|
+
[#1923]: https://github.com/kmuto/review/pull/1923
|
|
24
|
+
|
|
1
25
|
# Version 5.9.0
|
|
2
26
|
## Bug Fixes
|
|
3
27
|
* LATEXBuilder: fix the spacing for `@<code>`, `@<tt>`, `@<tti>`, `@<ttb>` to be more appropriate. Also improved handling of PDF bookmarks ([#1906], [#1907]).
|
data/lib/review/book/base.rb
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
require 'review/configure'
|
|
11
11
|
require 'review/catalog'
|
|
12
12
|
require 'review/book/bib'
|
|
13
|
+
require 'review/book/cache'
|
|
13
14
|
|
|
14
15
|
module ReVIEW
|
|
15
16
|
module Book
|
|
@@ -19,6 +20,7 @@ module ReVIEW
|
|
|
19
20
|
attr_accessor :catalog
|
|
20
21
|
attr_reader :basedir
|
|
21
22
|
attr_accessor :bibpaper_index
|
|
23
|
+
attr_reader :cache
|
|
22
24
|
|
|
23
25
|
def self.load(basedir = '.', config: nil)
|
|
24
26
|
new(basedir, config: config)
|
|
@@ -39,6 +41,8 @@ module ReVIEW
|
|
|
39
41
|
|
|
40
42
|
@warn_old_files = {} # XXX for checking CHAPS, PREDEF, POSTDEF
|
|
41
43
|
@basedir_seen = {}
|
|
44
|
+
|
|
45
|
+
@cache = ReVIEW::Book::Cache.new
|
|
42
46
|
update_rubyenv
|
|
43
47
|
end
|
|
44
48
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2014-2024 Minero Aoki, Kenshi Muto, Masayoshi Takahashi
|
|
3
|
+
#
|
|
4
|
+
# This program is free software.
|
|
5
|
+
# You can distribute or modify this program under the terms of
|
|
6
|
+
# the GNU LGPL, Lesser General Public License version 2.1.
|
|
7
|
+
# For details of LGPL, see the file "COPYING".
|
|
8
|
+
#
|
|
9
|
+
module ReVIEW
|
|
10
|
+
module Book
|
|
11
|
+
class Cache
|
|
12
|
+
def initialize
|
|
13
|
+
@store = {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def reset
|
|
17
|
+
@store.clear
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# key should be Symbol, not String
|
|
21
|
+
def fetch(key, &block)
|
|
22
|
+
raise ArgumentError, 'Key should be Symbol' unless key.is_a?(Symbol)
|
|
23
|
+
|
|
24
|
+
if cached?(key)
|
|
25
|
+
read(key)
|
|
26
|
+
else
|
|
27
|
+
exec_block_and_save(key, &block)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def cached?(key)
|
|
32
|
+
@store.key?(key)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def read(key)
|
|
38
|
+
@store[key]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def write(key, value)
|
|
42
|
+
@store[key] = value
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def exec_block_and_save(key)
|
|
46
|
+
result = yield(key)
|
|
47
|
+
|
|
48
|
+
write(key, result)
|
|
49
|
+
|
|
50
|
+
result
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -26,7 +26,9 @@ module ReVIEW
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def dir_entries
|
|
29
|
-
|
|
29
|
+
@book.cache.fetch(:image_finder_dir_entries) do
|
|
30
|
+
Dir.glob(File.join(@basedir, '**{,/*/**}/*.*')).uniq.sort.map { |entry| entry.sub(%r{^\./}, '') }
|
|
31
|
+
end
|
|
30
32
|
end
|
|
31
33
|
|
|
32
34
|
def add_entry(path)
|
data/lib/review/builder.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# = epubcommon.rb -- super class for EPUBv2 and EPUBv3
|
|
2
2
|
#
|
|
3
|
-
# Copyright (c) 2010-
|
|
3
|
+
# Copyright (c) 2010-2024 Kenshi Muto and Masayoshi Takahashi
|
|
4
4
|
#
|
|
5
5
|
# This program is free software.
|
|
6
6
|
# You can distribute or modify this program under the terms of
|
|
@@ -320,19 +320,19 @@ module ReVIEW
|
|
|
320
320
|
end
|
|
321
321
|
|
|
322
322
|
def produce_write_common(basedir, tmpdir)
|
|
323
|
-
File.write(
|
|
323
|
+
File.write(File.join(tmpdir, 'mimetype'), mimetype)
|
|
324
324
|
|
|
325
|
-
FileUtils.mkdir_p(
|
|
326
|
-
File.write(
|
|
325
|
+
FileUtils.mkdir_p(File.join(tmpdir, 'META-INF'))
|
|
326
|
+
File.write(File.join(tmpdir, 'META-INF', 'container.xml'), container)
|
|
327
327
|
|
|
328
|
-
FileUtils.mkdir_p(
|
|
328
|
+
FileUtils.mkdir_p(File.join(tmpdir, 'OEBPS'))
|
|
329
329
|
File.write(File.join(tmpdir, opf_path), opf)
|
|
330
330
|
|
|
331
331
|
if config['cover']
|
|
332
|
-
if File.exist?(
|
|
333
|
-
FileUtils.cp(
|
|
332
|
+
if File.exist?(File.join(basedir, File.basename(config['cover'])))
|
|
333
|
+
FileUtils.cp(File.join(basedir, File.basename(config['cover'])), File.join(tmpdir, 'OEBPS'))
|
|
334
334
|
else
|
|
335
|
-
File.write(
|
|
335
|
+
File.write(File.join(tmpdir, 'OEBPS', File.basename(config['cover'])), cover)
|
|
336
336
|
end
|
|
337
337
|
end
|
|
338
338
|
|
|
@@ -344,13 +344,13 @@ module ReVIEW
|
|
|
344
344
|
contents.each do |item|
|
|
345
345
|
next if /#/.match?(item.file) # skip subgroup
|
|
346
346
|
|
|
347
|
-
fname =
|
|
347
|
+
fname = File.join(basedir, item.file)
|
|
348
348
|
unless File.exist?(fname)
|
|
349
349
|
raise ApplicationError, "#{fname} is not found."
|
|
350
350
|
end
|
|
351
351
|
|
|
352
|
-
FileUtils.mkdir_p(File.dirname(
|
|
353
|
-
FileUtils.cp(fname,
|
|
352
|
+
FileUtils.mkdir_p(File.dirname(File.join(tmpdir, 'OEBPS', item.file)))
|
|
353
|
+
FileUtils.cp(fname, File.join(tmpdir, 'OEBPS', item.file))
|
|
354
354
|
end
|
|
355
355
|
end
|
|
356
356
|
|
data/lib/review/epubmaker.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (c) 2010-
|
|
1
|
+
# Copyright (c) 2010-2024 Kenshi Muto and Masayoshi Takahashi
|
|
2
2
|
#
|
|
3
3
|
# This program is free software.
|
|
4
4
|
# You can distribute or modify this program under the terms of
|
|
@@ -214,12 +214,17 @@ module ReVIEW
|
|
|
214
214
|
File.open(File.join(basetmpdir, content.file)) do |f|
|
|
215
215
|
f.each_line do |l|
|
|
216
216
|
l.scan(/url\((.+?)\)/) do |_m|
|
|
217
|
-
@config['epubmaker']['force_include_images'].push($1.strip)
|
|
217
|
+
@config['epubmaker']['force_include_images'].push($1.strip.gsub(/\A(['"])(.*)\1\Z/, '\2'))
|
|
218
218
|
end
|
|
219
219
|
end
|
|
220
220
|
end
|
|
221
221
|
end
|
|
222
222
|
end
|
|
223
|
+
|
|
224
|
+
if @config['coverimage']
|
|
225
|
+
@config['epubmaker']['force_include_images'].push(File.join(@config['imagedir'], @config['coverimage']))
|
|
226
|
+
end
|
|
227
|
+
|
|
223
228
|
@config['epubmaker']['force_include_images'] = @config['epubmaker']['force_include_images'].compact.sort.uniq
|
|
224
229
|
end
|
|
225
230
|
|
|
@@ -523,7 +528,7 @@ module ReVIEW
|
|
|
523
528
|
end
|
|
524
529
|
|
|
525
530
|
def copy_static_file(configname, destdir, destfilename: nil)
|
|
526
|
-
destfilename ||= @config[configname]
|
|
531
|
+
destfilename ||= File.basename(@config[configname])
|
|
527
532
|
unless File.exist?(@config[configname])
|
|
528
533
|
error! "#{configname}: #{@config[configname]} is not found."
|
|
529
534
|
end
|
data/lib/review/htmlbuilder.rb
CHANGED
|
@@ -455,7 +455,7 @@ module ReVIEW
|
|
|
455
455
|
|
|
456
456
|
def list(lines, id, caption, lang = nil)
|
|
457
457
|
puts %Q(<div id="#{normalize_id(id)}" class="caption-code">)
|
|
458
|
-
super
|
|
458
|
+
super
|
|
459
459
|
puts '</div>'
|
|
460
460
|
end
|
|
461
461
|
|
|
@@ -480,7 +480,7 @@ module ReVIEW
|
|
|
480
480
|
|
|
481
481
|
def source(lines, caption = nil, lang = nil)
|
|
482
482
|
puts %Q(<div class="source-code">)
|
|
483
|
-
super
|
|
483
|
+
super
|
|
484
484
|
puts '</div>'
|
|
485
485
|
end
|
|
486
486
|
|
|
@@ -500,7 +500,7 @@ module ReVIEW
|
|
|
500
500
|
|
|
501
501
|
def listnum(lines, id, caption, lang = nil)
|
|
502
502
|
puts %Q(<div id="#{normalize_id(id)}" class="code">)
|
|
503
|
-
super
|
|
503
|
+
super
|
|
504
504
|
puts '</div>'
|
|
505
505
|
end
|
|
506
506
|
|
|
@@ -737,7 +737,7 @@ module ReVIEW
|
|
|
737
737
|
else
|
|
738
738
|
puts %Q(<div class="table">)
|
|
739
739
|
end
|
|
740
|
-
super
|
|
740
|
+
super
|
|
741
741
|
puts '</div>'
|
|
742
742
|
end
|
|
743
743
|
|
|
@@ -1117,9 +1117,9 @@ EOS
|
|
|
1117
1117
|
chap, id2 = extract_chapter_id(id)
|
|
1118
1118
|
n = chap.headline_index.number(id2)
|
|
1119
1119
|
anchor = 'h' + n.tr('.', '-')
|
|
1120
|
-
%Q(<a href="#{chap.id}#{extname}##{anchor}">#{super
|
|
1120
|
+
%Q(<a href="#{chap.id}#{extname}##{anchor}">#{super}</a>)
|
|
1121
1121
|
else
|
|
1122
|
-
super
|
|
1122
|
+
super
|
|
1123
1123
|
end
|
|
1124
1124
|
rescue KeyError
|
|
1125
1125
|
app_error "unknown headline: #{id}"
|
|
@@ -1129,9 +1129,9 @@ EOS
|
|
|
1129
1129
|
if @book.config['chapterlink']
|
|
1130
1130
|
chap, id2 = extract_chapter_id(id)
|
|
1131
1131
|
anchor = 'h' + chap.headline_index.number(id2).tr('.', '-')
|
|
1132
|
-
%Q(<a href="#{chap.id}#{extname}##{anchor}">#{super
|
|
1132
|
+
%Q(<a href="#{chap.id}#{extname}##{anchor}">#{super}</a>)
|
|
1133
1133
|
else
|
|
1134
|
-
super
|
|
1134
|
+
super
|
|
1135
1135
|
end
|
|
1136
1136
|
rescue KeyError
|
|
1137
1137
|
app_error "unknown headline: #{id}"
|
|
@@ -1154,7 +1154,7 @@ EOS
|
|
|
1154
1154
|
end
|
|
1155
1155
|
|
|
1156
1156
|
def inline_list(id)
|
|
1157
|
-
str = super
|
|
1157
|
+
str = super
|
|
1158
1158
|
chapter, id = extract_chapter_id(id)
|
|
1159
1159
|
if @book.config['chapterlink']
|
|
1160
1160
|
%Q(<span class="listref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
|
|
@@ -1164,7 +1164,7 @@ EOS
|
|
|
1164
1164
|
end
|
|
1165
1165
|
|
|
1166
1166
|
def inline_table(id)
|
|
1167
|
-
str = super
|
|
1167
|
+
str = super
|
|
1168
1168
|
chapter, id = extract_chapter_id(id)
|
|
1169
1169
|
if @book.config['chapterlink']
|
|
1170
1170
|
%Q(<span class="tableref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
|
|
@@ -1174,7 +1174,7 @@ EOS
|
|
|
1174
1174
|
end
|
|
1175
1175
|
|
|
1176
1176
|
def inline_img(id)
|
|
1177
|
-
str = super
|
|
1177
|
+
str = super
|
|
1178
1178
|
chapter, id = extract_chapter_id(id)
|
|
1179
1179
|
if @book.config['chapterlink']
|
|
1180
1180
|
%Q(<span class="imgref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
|
|
@@ -1184,7 +1184,7 @@ EOS
|
|
|
1184
1184
|
end
|
|
1185
1185
|
|
|
1186
1186
|
def inline_eq(id)
|
|
1187
|
-
str = super
|
|
1187
|
+
str = super
|
|
1188
1188
|
chapter, id = extract_chapter_id(id)
|
|
1189
1189
|
if @book.config['chapterlink']
|
|
1190
1190
|
%Q(<span class="eqref"><a href="./#{chapter.id}#{extname}##{normalize_id(id)}">#{str}</a></span>)
|
|
@@ -1308,7 +1308,7 @@ EOS
|
|
|
1308
1308
|
end
|
|
1309
1309
|
|
|
1310
1310
|
def inline_raw(str) # rubocop:disable Lint/UselessMethodDefinition
|
|
1311
|
-
super
|
|
1311
|
+
super
|
|
1312
1312
|
end
|
|
1313
1313
|
|
|
1314
1314
|
def nofunc_text(str)
|
data/lib/review/idgxmlbuilder.rb
CHANGED
|
@@ -273,7 +273,7 @@ module ReVIEW
|
|
|
273
273
|
end
|
|
274
274
|
|
|
275
275
|
def inline_list(id)
|
|
276
|
-
"<span type='list'>#{super
|
|
276
|
+
"<span type='list'>#{super}</span>"
|
|
277
277
|
end
|
|
278
278
|
|
|
279
279
|
def list_header(id, caption, _lang)
|
|
@@ -304,7 +304,7 @@ module ReVIEW
|
|
|
304
304
|
|
|
305
305
|
def list(lines, id, caption, lang = nil)
|
|
306
306
|
puts '<codelist>'
|
|
307
|
-
super
|
|
307
|
+
super
|
|
308
308
|
puts '</codelist>'
|
|
309
309
|
end
|
|
310
310
|
|
|
@@ -329,7 +329,7 @@ module ReVIEW
|
|
|
329
329
|
|
|
330
330
|
def listnum(lines, id, caption, lang = nil)
|
|
331
331
|
puts '<codelist>'
|
|
332
|
-
super
|
|
332
|
+
super
|
|
333
333
|
puts '</codelist>'
|
|
334
334
|
end
|
|
335
335
|
|
|
@@ -389,15 +389,15 @@ module ReVIEW
|
|
|
389
389
|
end
|
|
390
390
|
|
|
391
391
|
def inline_table(id)
|
|
392
|
-
"<span type='table'>#{super
|
|
392
|
+
"<span type='table'>#{super}</span>"
|
|
393
393
|
end
|
|
394
394
|
|
|
395
395
|
def inline_img(id)
|
|
396
|
-
"<span type='image'>#{super
|
|
396
|
+
"<span type='image'>#{super}</span>"
|
|
397
397
|
end
|
|
398
398
|
|
|
399
399
|
def inline_eq(id)
|
|
400
|
-
"<span type='eq'>#{super
|
|
400
|
+
"<span type='eq'>#{super}</span>"
|
|
401
401
|
end
|
|
402
402
|
|
|
403
403
|
def inline_imgref(id)
|
|
@@ -725,7 +725,7 @@ module ReVIEW
|
|
|
725
725
|
end
|
|
726
726
|
|
|
727
727
|
def inline_raw(str)
|
|
728
|
-
super
|
|
728
|
+
super.gsub('\\n', "\n")
|
|
729
729
|
end
|
|
730
730
|
|
|
731
731
|
def inline_hint(str)
|
data/lib/review/latexbuilder.rb
CHANGED
|
@@ -556,7 +556,7 @@ module ReVIEW
|
|
|
556
556
|
end
|
|
557
557
|
|
|
558
558
|
def parse_metric(type, metric)
|
|
559
|
-
s = super
|
|
559
|
+
s = super
|
|
560
560
|
if @book.config['pdfmaker']['use_original_image_size'] && s.empty? && !metric.present?
|
|
561
561
|
return ' ' # pass empty to \reviewincludegraphics
|
|
562
562
|
end
|
|
@@ -1292,11 +1292,11 @@ module ReVIEW
|
|
|
1292
1292
|
|
|
1293
1293
|
def inline_sec(id)
|
|
1294
1294
|
if @book.config['chapterlink']
|
|
1295
|
-
n = super
|
|
1295
|
+
n = super
|
|
1296
1296
|
anchor = n.tr('.', '-')
|
|
1297
1297
|
macro('reviewsecref', n, sec_label(anchor))
|
|
1298
1298
|
else
|
|
1299
|
-
super
|
|
1299
|
+
super
|
|
1300
1300
|
end
|
|
1301
1301
|
rescue KeyError
|
|
1302
1302
|
app_error "unknown headline: #{id}"
|
|
@@ -1306,9 +1306,9 @@ module ReVIEW
|
|
|
1306
1306
|
if @book.config['chapterlink']
|
|
1307
1307
|
chap, id2 = extract_chapter_id(id)
|
|
1308
1308
|
anchor = chap.headline_index.number(id2).tr('.', '-')
|
|
1309
|
-
macro('reviewsecref', super
|
|
1309
|
+
macro('reviewsecref', super, sec_label(anchor))
|
|
1310
1310
|
else
|
|
1311
|
-
super
|
|
1311
|
+
super
|
|
1312
1312
|
end
|
|
1313
1313
|
end
|
|
1314
1314
|
|
|
@@ -1321,7 +1321,7 @@ module ReVIEW
|
|
|
1321
1321
|
end
|
|
1322
1322
|
|
|
1323
1323
|
def inline_raw(str) # rubocop:disable Lint/UselessMethodDefinition
|
|
1324
|
-
super
|
|
1324
|
+
super
|
|
1325
1325
|
end
|
|
1326
1326
|
|
|
1327
1327
|
def inline_sub(str)
|
data/lib/review/logger.rb
CHANGED
data/lib/review/pdfmaker.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Copyright (c) 2010-
|
|
1
|
+
# Copyright (c) 2010-2024 Kenshi Muto and Masayoshi Takahashi
|
|
2
2
|
#
|
|
3
3
|
# This program is free software.
|
|
4
4
|
# You can distribute or modify this program under the terms of
|
|
@@ -339,6 +339,7 @@ module ReVIEW
|
|
|
339
339
|
File.read(file_sty)
|
|
340
340
|
else
|
|
341
341
|
warn "File #{file_sty} is not found."
|
|
342
|
+
nil
|
|
342
343
|
end
|
|
343
344
|
end
|
|
344
345
|
|
|
@@ -505,6 +506,15 @@ module ReVIEW
|
|
|
505
506
|
template_dir = @basedir
|
|
506
507
|
template_path = 'layouts/layout.tex.erb'
|
|
507
508
|
end
|
|
509
|
+
|
|
510
|
+
if @config['cover'] && !File.exist?(@config['cover'])
|
|
511
|
+
error! "File #{@config['cover']} is not found."
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
if @config['titlepage'] && @config['titlefile'] && !File.exist?(@config['titlefile'])
|
|
515
|
+
error! "File #{@config['titlefile']} is not found."
|
|
516
|
+
end
|
|
517
|
+
|
|
508
518
|
ReVIEW::Template.generate(path: template_path, mode: '-', binding: binding, template_dir: template_dir)
|
|
509
519
|
rescue StandardError => e
|
|
510
520
|
if defined?(e.full_message)
|
data/lib/review/tocprinter.rb
CHANGED
|
@@ -21,12 +21,12 @@ module ReVIEW
|
|
|
21
21
|
print "\x01H#{level}\x01"
|
|
22
22
|
end
|
|
23
23
|
# embed header information for tocparser
|
|
24
|
-
super
|
|
24
|
+
super
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def base_block(type, lines, caption = nil)
|
|
28
28
|
puts "\x01STARTLIST\x01"
|
|
29
|
-
super
|
|
29
|
+
super
|
|
30
30
|
puts "\x01ENDLIST\x01"
|
|
31
31
|
end
|
|
32
32
|
|
data/lib/review/version.rb
CHANGED
data/review.gemspec
CHANGED
|
@@ -14,21 +14,23 @@ Gem::Specification.new do |gem|
|
|
|
14
14
|
gem.required_rubygems_version = Gem::Requirement.new('>= 0') if gem.respond_to?(:required_rubygems_version=)
|
|
15
15
|
gem.metadata = { 'rubygems_mfa_required' => 'true' }
|
|
16
16
|
|
|
17
|
-
gem.files = `git ls-files`.split("\n").reject { |f| f.match(/^test/) }
|
|
17
|
+
gem.files = `git ls-files`.split("\n").reject { |f| f.match(/^test/) }.reject { |f| f.match(%r{^vendor/imagemagick}) }
|
|
18
18
|
gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
|
19
19
|
gem.extra_rdoc_files = []
|
|
20
20
|
gem.require_paths = ['lib']
|
|
21
21
|
|
|
22
|
+
gem.add_dependency('csv')
|
|
22
23
|
gem.add_dependency('image_size')
|
|
24
|
+
gem.add_dependency('nkf')
|
|
23
25
|
gem.add_dependency('rexml')
|
|
24
26
|
gem.add_dependency('rouge')
|
|
25
27
|
gem.add_dependency('rubyzip')
|
|
26
28
|
gem.add_dependency('tty-logger')
|
|
27
|
-
gem.add_development_dependency('mini_magick')
|
|
29
|
+
gem.add_development_dependency('mini_magick', '~> 5.0.0')
|
|
28
30
|
gem.add_development_dependency('playwright-runner')
|
|
29
31
|
gem.add_development_dependency('pygments.rb')
|
|
30
32
|
gem.add_development_dependency('rake')
|
|
31
|
-
gem.add_development_dependency('rubocop', '~> 1.
|
|
33
|
+
gem.add_development_dependency('rubocop', '~> 1.65.1')
|
|
32
34
|
gem.add_development_dependency('rubocop-performance')
|
|
33
35
|
gem.add_development_dependency('rubocop-rake')
|
|
34
36
|
gem.add_development_dependency('simplecov')
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: review
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- kmuto
|
|
@@ -9,8 +9,22 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2024-
|
|
12
|
+
date: 2024-10-29 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: csv
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - ">="
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '0'
|
|
21
|
+
type: :runtime
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - ">="
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: '0'
|
|
14
28
|
- !ruby/object:Gem::Dependency
|
|
15
29
|
name: image_size
|
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -25,6 +39,20 @@ dependencies:
|
|
|
25
39
|
- - ">="
|
|
26
40
|
- !ruby/object:Gem::Version
|
|
27
41
|
version: '0'
|
|
42
|
+
- !ruby/object:Gem::Dependency
|
|
43
|
+
name: nkf
|
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
|
45
|
+
requirements:
|
|
46
|
+
- - ">="
|
|
47
|
+
- !ruby/object:Gem::Version
|
|
48
|
+
version: '0'
|
|
49
|
+
type: :runtime
|
|
50
|
+
prerelease: false
|
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
52
|
+
requirements:
|
|
53
|
+
- - ">="
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: '0'
|
|
28
56
|
- !ruby/object:Gem::Dependency
|
|
29
57
|
name: rexml
|
|
30
58
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -85,16 +113,16 @@ dependencies:
|
|
|
85
113
|
name: mini_magick
|
|
86
114
|
requirement: !ruby/object:Gem::Requirement
|
|
87
115
|
requirements:
|
|
88
|
-
- - "
|
|
116
|
+
- - "~>"
|
|
89
117
|
- !ruby/object:Gem::Version
|
|
90
|
-
version:
|
|
118
|
+
version: 5.0.0
|
|
91
119
|
type: :development
|
|
92
120
|
prerelease: false
|
|
93
121
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
122
|
requirements:
|
|
95
|
-
- - "
|
|
123
|
+
- - "~>"
|
|
96
124
|
- !ruby/object:Gem::Version
|
|
97
|
-
version:
|
|
125
|
+
version: 5.0.0
|
|
98
126
|
- !ruby/object:Gem::Dependency
|
|
99
127
|
name: playwright-runner
|
|
100
128
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -143,14 +171,14 @@ dependencies:
|
|
|
143
171
|
requirements:
|
|
144
172
|
- - "~>"
|
|
145
173
|
- !ruby/object:Gem::Version
|
|
146
|
-
version: 1.
|
|
174
|
+
version: 1.65.1
|
|
147
175
|
type: :development
|
|
148
176
|
prerelease: false
|
|
149
177
|
version_requirements: !ruby/object:Gem::Requirement
|
|
150
178
|
requirements:
|
|
151
179
|
- - "~>"
|
|
152
180
|
- !ruby/object:Gem::Version
|
|
153
|
-
version: 1.
|
|
181
|
+
version: 1.65.1
|
|
154
182
|
- !ruby/object:Gem::Dependency
|
|
155
183
|
name: rubocop-performance
|
|
156
184
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -333,6 +361,7 @@ files:
|
|
|
333
361
|
- lib/review/book/base.rb
|
|
334
362
|
- lib/review/book/bib.rb
|
|
335
363
|
- lib/review/book/book_unit.rb
|
|
364
|
+
- lib/review/book/cache.rb
|
|
336
365
|
- lib/review/book/chapter.rb
|
|
337
366
|
- lib/review/book/image_finder.rb
|
|
338
367
|
- lib/review/book/index.rb
|
|
@@ -620,7 +649,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
620
649
|
- !ruby/object:Gem::Version
|
|
621
650
|
version: '0'
|
|
622
651
|
requirements: []
|
|
623
|
-
rubygems_version: 3.
|
|
652
|
+
rubygems_version: 3.2.33
|
|
624
653
|
signing_key:
|
|
625
654
|
specification_version: 4
|
|
626
655
|
summary: 'Re:VIEW: a easy-to-use digital publishing system'
|