review 5.9.0 → 5.10.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 +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'
|