review-retrovert 0.9.10 → 0.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/.editorconfig +1 -1
- data/.gitignore +0 -1
- data/.pinact.yaml +12 -0
- data/.ruby-version +1 -1
- data/Dockerfile +2 -1
- data/Dockerfile.local +13 -0
- data/Gemfile.lock +62 -35
- data/Makefile +7 -0
- data/README.md +2 -1
- data/Rakefile +9 -0
- data/aqua.yaml +20 -0
- data/hooks/post_push +14 -1
- data/lib/review/retrovert/cli.rb +10 -2
- data/lib/review/retrovert/converter.rb +106 -20
- data/lib/review/retrovert/reviewdef.rb +29 -0
- data/lib/review/retrovert/sty/review-utbook.cls +7 -0
- data/lib/review/retrovert/version.rb +1 -1
- data/lib/review/retrovert/yamlconfig.rb +38 -1
- data/review-retrovert.gemspec +18 -4
- data/zizmor.yml +5 -0
- metadata +54 -121
- data/.github/FUNDING.yml +0 -4
- data/.github/workflows/release.yml +0 -26
- data/.github/workflows/retrovert.yml +0 -76
- data/testdata/mybook/.gitignore +0 -9
- data/testdata/mybook/.textlintrc +0 -11
- data/testdata/mybook/README.md +0 -43
- data/testdata/mybook/Rakefile +0 -24
- data/testdata/mybook/catalog.yml +0 -60
- data/testdata/mybook/config-noretrovert.yml +0 -404
- data/testdata/mybook/config-retrovert.yml +0 -16
- data/testdata/mybook/config-starter.yml +0 -264
- data/testdata/mybook/config.yml +0 -404
- data/testdata/mybook/contents/00-preface.re +0 -129
- data/testdata/mybook/contents/01-install.re +0 -305
- data/testdata/mybook/contents/02-tutorial.re +0 -1228
- data/testdata/mybook/contents/03-syntax.re +0 -4610
- data/testdata/mybook/contents/04-customize.re +0 -1064
- data/testdata/mybook/contents/05-faq.re +0 -606
- data/testdata/mybook/contents/06-bestpractice.re +0 -1343
- data/testdata/mybook/contents/91-compare.re +0 -418
- data/testdata/mybook/contents/92-filelist.re +0 -125
- data/testdata/mybook/contents/93-background.re +0 -267
- data/testdata/mybook/contents/99-postface.re +0 -39
- data/testdata/mybook/contents/r0-inner.re +0 -2
- data/testdata/mybook/contents/r0-root.re +0 -31
- data/testdata/mybook/contents/table.csv +0 -4
- data/testdata/mybook/contents/test.txt +0 -1
- data/testdata/mybook/css/normalize.css +0 -349
- data/testdata/mybook/css/webstyle.css +0 -692
- data/testdata/mybook/data/terms.txt +0 -3
- data/testdata/mybook/data/words.txt +0 -15
- data/testdata/mybook/images/03-syntax/favicon-16x16.png +0 -0
- data/testdata/mybook/images/03-syntax/figure_heretop.png +0 -0
- data/testdata/mybook/images/03-syntax/index-page.png +0 -0
- data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
- data/testdata/mybook/images/03-syntax/tw-icon1.jpg +0 -0
- data/testdata/mybook/images/03-syntax/tw-icon2.jpg +0 -0
- data/testdata/mybook/images/03-syntax/tw-icon3.jpg +0 -0
- data/testdata/mybook/images/03-syntax/tw-icon4.jpg +0 -0
- data/testdata/mybook/images/04-customize/caption_pagebreak.png +0 -0
- data/testdata/mybook/images/04-customize/chaptitlepage_sample.png +0 -0
- data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
- data/testdata/mybook/images/05-faq/codeblock_rpadding1.png +0 -0
- data/testdata/mybook/images/05-faq/codeblock_rpadding2.png +0 -0
- data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
- data/testdata/mybook/images/06-bestpractice/figure_heretop.png +0 -0
- data/testdata/mybook/images/06-bestpractice/font_beramono.png +0 -0
- data/testdata/mybook/images/06-bestpractice/heading_design1.png +0 -0
- data/testdata/mybook/images/06-bestpractice/heading_design2.png +0 -0
- data/testdata/mybook/images/06-bestpractice/margin_book.png +0 -0
- data/testdata/mybook/images/06-bestpractice/multiline-title.png +0 -0
- data/testdata/mybook/images/06-bestpractice/preface_numbered.png +0 -0
- data/testdata/mybook/images/06-bestpractice/program_border.png +0 -0
- data/testdata/mybook/images/06-bestpractice/sechead_design_4.png +0 -0
- data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
- data/testdata/mybook/images/06-bestpractice/titlepage-samples.png +0 -0
- data/testdata/mybook/images/93-background/bug913.png +0 -0
- data/testdata/mybook/images/93-background/slide2.png +0 -0
- data/testdata/mybook/images/avatar-b.png +0 -0
- data/testdata/mybook/images/avatar-g.png +0 -0
- data/testdata/mybook/images/avatar-r.png +0 -0
- data/testdata/mybook/images/caution-icon.png +0 -0
- data/testdata/mybook/images/cover_a5.pdf +0 -0
- data/testdata/mybook/images/cover_b5.pdf +0 -0
- data/testdata/mybook/images/info-icon.png +0 -0
- data/testdata/mybook/images/tw-icon.jpg +0 -0
- data/testdata/mybook/images/warning-icon.png +0 -0
- data/testdata/mybook/layouts/layout.epub.erb +0 -29
- data/testdata/mybook/layouts/layout.html5.erb +0 -108
- data/testdata/mybook/layouts/layout.tex.erb +0 -432
- data/testdata/mybook/layouts/layout.tex.erb.orig +0 -386
- data/testdata/mybook/lib/hooks/beforetexcompile.rb +0 -55
- data/testdata/mybook/lib/ruby/review-book.rb +0 -64
- data/testdata/mybook/lib/ruby/review-builder.rb +0 -1342
- data/testdata/mybook/lib/ruby/review-cli.rb +0 -58
- data/testdata/mybook/lib/ruby/review-compiler.rb +0 -1176
- data/testdata/mybook/lib/ruby/review-epubbuilder.rb +0 -33
- data/testdata/mybook/lib/ruby/review-epubmaker.rb +0 -609
- data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +0 -949
- data/testdata/mybook/lib/ruby/review-latexbuilder.rb +0 -1065
- data/testdata/mybook/lib/ruby/review-maker.rb +0 -346
- data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +0 -945
- data/testdata/mybook/lib/ruby/review-markdownmaker.rb +0 -91
- data/testdata/mybook/lib/ruby/review-monkeypatch.rb +0 -93
- data/testdata/mybook/lib/ruby/review-pdfmaker.rb +0 -546
- data/testdata/mybook/lib/ruby/review-textbuilder.rb +0 -36
- data/testdata/mybook/lib/ruby/review-tocparser.rb +0 -285
- data/testdata/mybook/lib/ruby/review-webmaker.rb +0 -448
- data/testdata/mybook/lib/tasks/mytasks.rake +0 -31
- data/testdata/mybook/lib/tasks/review.rake +0 -156
- data/testdata/mybook/lib/tasks/review.rake.orig +0 -72
- data/testdata/mybook/lib/tasks/starter.rake +0 -470
- data/testdata/mybook/locale.yml +0 -6
- data/testdata/mybook/review-ext.rb +0 -206
- data/testdata/mybook/sty/indexstyle.ist +0 -25
- data/testdata/mybook/sty/jumoline.sty +0 -310
- data/testdata/mybook/sty/mycolophon.sty +0 -81
- data/testdata/mybook/sty/mystyle.sty +0 -8
- data/testdata/mybook/sty/mytextsize.sty +0 -90
- data/testdata/mybook/sty/mytitlepage.sty +0 -126
- data/testdata/mybook/sty/review-base.sty +0 -276
- data/testdata/mybook/sty/reviewmacro.sty +0 -60
- data/testdata/mybook/sty/starter-codeblock.sty +0 -463
- data/testdata/mybook/sty/starter-color.sty +0 -134
- data/testdata/mybook/sty/starter-font.sty +0 -112
- data/testdata/mybook/sty/starter-heading.sty +0 -561
- data/testdata/mybook/sty/starter-misc.sty +0 -894
- data/testdata/mybook/sty/starter-note.sty +0 -180
- data/testdata/mybook/sty/starter-section.sty +0 -262
- data/testdata/mybook/sty/starter-talklist.sty +0 -105
- data/testdata/mybook/sty/starter-toc.sty +0 -72
- data/testdata/mybook/sty/starter-util.sty +0 -35
- data/testdata/mybook/sty/starter.sty +0 -36
- data/testdata/mybook/style.css +0 -597
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 267dfed374168e87a304450363d3f2a65db553bf530c56a3484a72bf9f64911b
|
|
4
|
+
data.tar.gz: f773e8543b7dff305f22a857f3074550a793487aea4e252cc0514897b3937786
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7ac9c51bb200a188acf201899dc1e9667b39df719fe5950a6c6a93f69107b6943d05dfc58699ba0482cc09c6376b17517ba47bc51003ff1e0a3f7b6300e6a674
|
|
7
|
+
data.tar.gz: 5020eb746cb8094e74036b7ba9d5a6bb77eadc52ac73e68f3ec0a0c22394eaf90b5ef3ffd0a1dd013226706bc1afedc60d364297798bca384cec74d457157cde
|
data/.editorconfig
CHANGED
data/.gitignore
CHANGED
data/.pinact.yaml
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# yaml-language-server: $schema=https://raw.githubusercontent.com/suzuki-shunsuke/pinact/refs/heads/main/json-schema/pinact.json
|
|
2
|
+
# pinact - https://github.com/suzuki-shunsuke/pinact
|
|
3
|
+
version: 3
|
|
4
|
+
files:
|
|
5
|
+
# - pattern: action.yml
|
|
6
|
+
# - pattern: */action.yaml
|
|
7
|
+
|
|
8
|
+
ignore_actions:
|
|
9
|
+
# - name: slsa-framework/slsa-github-generator/\.github/workflows/generator_generic_slsa3\.yml
|
|
10
|
+
# ref: v\d+\.\d+\.\d+
|
|
11
|
+
- name: actions/.*
|
|
12
|
+
ref: v\d+
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3.3.4
|
data/Dockerfile
CHANGED
data/Dockerfile.local
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
ARG REVIEW_VERSION=latest
|
|
2
|
+
FROM vvakame/review:${REVIEW_VERSION}
|
|
3
|
+
|
|
4
|
+
# Copy source code and build from local workspace
|
|
5
|
+
COPY . /tmp/review-retrovert/
|
|
6
|
+
|
|
7
|
+
# Build and install from local source
|
|
8
|
+
RUN cd /tmp/review-retrovert && \
|
|
9
|
+
gem build review-retrovert.gemspec && \
|
|
10
|
+
gem install --no-document review-retrovert-*.gem && \
|
|
11
|
+
rm -rf /tmp/review-retrovert
|
|
12
|
+
|
|
13
|
+
ENTRYPOINT [ "review-retrovert" ]
|
data/Gemfile.lock
CHANGED
|
@@ -1,30 +1,44 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
review-retrovert (0.
|
|
4
|
+
review-retrovert (0.10.0)
|
|
5
|
+
csv
|
|
6
|
+
nkf
|
|
5
7
|
review (>= 3.0.0)
|
|
8
|
+
rexml
|
|
6
9
|
thor
|
|
7
10
|
|
|
8
11
|
GEM
|
|
9
12
|
remote: https://rubygems.org/
|
|
10
13
|
specs:
|
|
11
|
-
activesupport (
|
|
12
|
-
|
|
14
|
+
activesupport (8.1.1)
|
|
15
|
+
base64
|
|
16
|
+
bigdecimal
|
|
17
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
18
|
+
connection_pool (>= 2.2.5)
|
|
19
|
+
drb
|
|
13
20
|
i18n (>= 1.6, < 2)
|
|
21
|
+
json
|
|
22
|
+
logger (>= 1.4.2)
|
|
14
23
|
minitest (>= 5.1)
|
|
15
|
-
|
|
16
|
-
|
|
24
|
+
securerandom (>= 0.3)
|
|
25
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
26
|
+
uri (>= 0.13.1)
|
|
17
27
|
aruba (1.0.4)
|
|
18
28
|
childprocess (>= 2.0, < 5.0)
|
|
19
29
|
contracts (~> 0.16.0)
|
|
20
30
|
cucumber (>= 2.4, < 6.0)
|
|
21
31
|
rspec-expectations (~> 3.4)
|
|
22
32
|
thor (~> 1.0)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
base64 (0.3.0)
|
|
34
|
+
bigdecimal (4.0.1)
|
|
35
|
+
builder (3.3.0)
|
|
36
|
+
childprocess (4.1.0)
|
|
37
|
+
concurrent-ruby (1.3.6)
|
|
38
|
+
connection_pool (3.0.2)
|
|
39
|
+
contracts (0.16.1)
|
|
40
|
+
csv (3.3.5)
|
|
41
|
+
cucumber (5.3.0)
|
|
28
42
|
builder (~> 3.2, >= 3.2.4)
|
|
29
43
|
cucumber-core (~> 8.0, >= 8.0.1)
|
|
30
44
|
cucumber-create-meta (~> 2.0, >= 2.0.2)
|
|
@@ -55,54 +69,67 @@ GEM
|
|
|
55
69
|
cucumber-core (~> 8.0, >= 8.0.1)
|
|
56
70
|
cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
|
|
57
71
|
cucumber-messages (~> 13.0, >= 13.0.1)
|
|
58
|
-
diff-lcs (1.
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
diff-lcs (1.6.2)
|
|
73
|
+
drb (2.2.3)
|
|
74
|
+
ffi (1.17.3)
|
|
75
|
+
i18n (1.14.8)
|
|
61
76
|
concurrent-ruby (~> 1.0)
|
|
62
|
-
image_size (
|
|
77
|
+
image_size (3.4.0)
|
|
78
|
+
json (2.18.0)
|
|
79
|
+
logger (1.7.0)
|
|
80
|
+
memoist3 (1.0.0)
|
|
63
81
|
middleware (0.1.0)
|
|
64
|
-
minitest (
|
|
82
|
+
minitest (6.0.1)
|
|
83
|
+
prism (~> 1.5)
|
|
65
84
|
multi_test (0.1.2)
|
|
85
|
+
nkf (0.2.0)
|
|
66
86
|
pastel (0.8.0)
|
|
67
87
|
tty-color (~> 0.5)
|
|
88
|
+
prism (1.7.0)
|
|
68
89
|
protobuf-cucumber (3.10.8)
|
|
69
90
|
activesupport (>= 3.2)
|
|
70
91
|
middleware
|
|
71
92
|
thor
|
|
72
93
|
thread_safe
|
|
73
94
|
rake (12.3.3)
|
|
74
|
-
review (5.
|
|
95
|
+
review (5.10.0)
|
|
96
|
+
csv
|
|
75
97
|
image_size
|
|
98
|
+
nkf
|
|
99
|
+
rexml
|
|
76
100
|
rouge
|
|
77
101
|
rubyzip
|
|
78
102
|
tty-logger
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
rspec-
|
|
83
|
-
rspec-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
103
|
+
rexml (3.4.4)
|
|
104
|
+
rouge (4.7.0)
|
|
105
|
+
rspec (3.13.2)
|
|
106
|
+
rspec-core (~> 3.13.0)
|
|
107
|
+
rspec-expectations (~> 3.13.0)
|
|
108
|
+
rspec-mocks (~> 3.13.0)
|
|
109
|
+
rspec-core (3.13.6)
|
|
110
|
+
rspec-support (~> 3.13.0)
|
|
111
|
+
rspec-expectations (3.13.5)
|
|
87
112
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
88
|
-
rspec-support (~> 3.
|
|
89
|
-
rspec-mocks (3.
|
|
113
|
+
rspec-support (~> 3.13.0)
|
|
114
|
+
rspec-mocks (3.13.7)
|
|
90
115
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
91
|
-
rspec-support (~> 3.
|
|
92
|
-
rspec-support (3.
|
|
93
|
-
ruby-debug-ide (0.7.
|
|
116
|
+
rspec-support (~> 3.13.0)
|
|
117
|
+
rspec-support (3.13.6)
|
|
118
|
+
ruby-debug-ide (0.7.5)
|
|
94
119
|
rake (>= 0.8.1)
|
|
95
|
-
rubyzip (
|
|
96
|
-
|
|
120
|
+
rubyzip (3.2.2)
|
|
121
|
+
securerandom (0.4.1)
|
|
122
|
+
sys-uname (1.4.1)
|
|
97
123
|
ffi (~> 1.1)
|
|
98
|
-
|
|
124
|
+
memoist3 (~> 1.0.0)
|
|
125
|
+
thor (1.4.0)
|
|
99
126
|
thread_safe (0.3.6)
|
|
100
127
|
tty-color (0.6.0)
|
|
101
128
|
tty-logger (0.6.0)
|
|
102
129
|
pastel (~> 0.8)
|
|
103
|
-
tzinfo (2.0.
|
|
130
|
+
tzinfo (2.0.6)
|
|
104
131
|
concurrent-ruby (~> 1.0)
|
|
105
|
-
|
|
132
|
+
uri (1.1.1)
|
|
106
133
|
|
|
107
134
|
PLATFORMS
|
|
108
135
|
ruby
|
|
@@ -115,4 +142,4 @@ DEPENDENCIES
|
|
|
115
142
|
ruby-debug-ide
|
|
116
143
|
|
|
117
144
|
BUNDLED WITH
|
|
118
|
-
2.
|
|
145
|
+
2.5.11
|
data/Makefile
CHANGED
|
@@ -14,6 +14,9 @@ test:
|
|
|
14
14
|
test-ird:
|
|
15
15
|
RUBYLIB=lib ./exe/review-retrovert convert --preproc --tabwidth 4 --ird testdata/mybook/config.yml -f tmp/debug
|
|
16
16
|
|
|
17
|
+
test-ut:
|
|
18
|
+
RUBYLIB=lib ./exe/review-retrovert convert --preproc --tabwidth 4 testdata/mybook/ut-config.yml -f tmp/debug
|
|
19
|
+
|
|
17
20
|
REVIEW_VERSION:=latest
|
|
18
21
|
|
|
19
22
|
debug-build:
|
|
@@ -22,3 +25,7 @@ debug-build:
|
|
|
22
25
|
|
|
23
26
|
testdata-pdf:
|
|
24
27
|
docker run --rm -v ${PWD}/testdata/mybook:/work -w /work kauplan/review2.5 rake pdf
|
|
28
|
+
|
|
29
|
+
testdata-ut-pdf:
|
|
30
|
+
# rm -rf ./testdata/mybook/mybook-ut-pdf
|
|
31
|
+
docker run --rm -v ${PWD}/testdata/mybook:/work -w /work -e config=ut-config.yml kauplan/review2.5 rake pdf
|
data/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
[](https://badge.fury.io/rb/review-retrovert)
|
|
2
2
|
[](https://github.com/srz-zumix/review-retrovert/actions/workflows/retrovert.yml)
|
|
3
|
-
[](https://github.com/srz-zumix/review-retrovert/actions/workflows/docker-build.yml)
|
|
4
|
+
[](https://hub.docker.com/r/srzzumix/review-retrovert)
|
|
4
5
|
|
|
5
6
|
# ReVIEW::Retrovert
|
|
6
7
|
|
data/Rakefile
CHANGED
|
@@ -4,3 +4,12 @@ require "rspec/core/rake_task"
|
|
|
4
4
|
RSpec::Core::RakeTask.new(:spec)
|
|
5
5
|
|
|
6
6
|
task :default => :spec
|
|
7
|
+
|
|
8
|
+
# Override the source_control_push task to skip git push
|
|
9
|
+
# This is useful when releasing from CI where the tag is already pushed
|
|
10
|
+
Rake::Task["release:source_control_push"].clear
|
|
11
|
+
namespace :release do
|
|
12
|
+
task :source_control_push do
|
|
13
|
+
# Do nothing - tag is already pushed by CI
|
|
14
|
+
end
|
|
15
|
+
end
|
data/aqua.yaml
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
# yaml-language-server: $schema=https://raw.githubusercontent.com/aquaproj/aqua/main/json-schema/aqua-yaml.json
|
|
3
|
+
# aqua - Declarative CLI Version Manager
|
|
4
|
+
# https://aquaproj.github.io/
|
|
5
|
+
# checksum:
|
|
6
|
+
# enabled: true
|
|
7
|
+
# require_checksum: true
|
|
8
|
+
# supported_envs:
|
|
9
|
+
# - all
|
|
10
|
+
registries:
|
|
11
|
+
- type: standard
|
|
12
|
+
ref: v4.451.1 # renovate: depName=aquaproj/aqua-registry
|
|
13
|
+
packages:
|
|
14
|
+
- name: suzuki-shunsuke/pinact@v3.8.0
|
|
15
|
+
tags:
|
|
16
|
+
- dev
|
|
17
|
+
- name: crates.io/zizmor@1.19.0
|
|
18
|
+
tags:
|
|
19
|
+
- dev
|
|
20
|
+
- ci
|
data/hooks/post_push
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
set -eu
|
|
3
3
|
|
|
4
|
+
# Get review-retrovert version and Re:VIEW version
|
|
5
|
+
VERSION=$(docker run --rm ${IMAGE_NAME} version)
|
|
6
|
+
REVIEW_VERSION=$(docker run --rm ${IMAGE_NAME} review-version)
|
|
7
|
+
|
|
4
8
|
if [ "${DOCKER_TAG}" = "latest" ]; then
|
|
5
|
-
|
|
9
|
+
# For latest tag, push retrovert version tag
|
|
6
10
|
docker tag ${IMAGE_NAME} ${DOCKER_REPO}:${VERSION}
|
|
7
11
|
docker push ${DOCKER_REPO}:${VERSION}
|
|
12
|
+
# Also push combined tag with Re:VIEW version (e.g., 0.10.0-review5.10)
|
|
13
|
+
COMBINED_TAG="${VERSION}-review${REVIEW_VERSION}"
|
|
14
|
+
docker tag ${IMAGE_NAME} ${DOCKER_REPO}:${COMBINED_TAG}
|
|
15
|
+
docker push ${DOCKER_REPO}:${COMBINED_TAG}
|
|
16
|
+
else
|
|
17
|
+
# For review version tags (e.g., 5.9), push combined tag (e.g., 0.10.0-review5.9)
|
|
18
|
+
COMBINED_TAG="${VERSION}-review${DOCKER_TAG}"
|
|
19
|
+
docker tag ${IMAGE_NAME} ${DOCKER_REPO}:${COMBINED_TAG}
|
|
20
|
+
docker push ${DOCKER_REPO}:${COMBINED_TAG}
|
|
8
21
|
fi
|
data/lib/review/retrovert/cli.rb
CHANGED
|
@@ -11,8 +11,10 @@ module ReVIEW
|
|
|
11
11
|
method_option "tabwidth", desc: 'Preproc tabwidth option value', type: :numeric, default: 0
|
|
12
12
|
method_option "table-br-replace", desc: '@<br>{} in table replace string (Default: empty)', type: :string, default: ''
|
|
13
13
|
method_option "table-empty-replace", desc: 'empty cell(.) in table replace string (Default full-width space)', type: :string, default: ' '
|
|
14
|
-
method_option "ird", desc: '
|
|
15
|
-
method_option "no-
|
|
14
|
+
method_option "ird", desc: 'For IRD', type: :boolean
|
|
15
|
+
method_option "no-update", desc: 'Do not Re:VIEW update', type: :boolean
|
|
16
|
+
method_option "no-image", desc: 'Do not copy image', type: :boolean
|
|
17
|
+
method_option "no-delegate-yaml", desc: 'review-retrovert creates an inherited file if the config.yml/catalog.yml file does not exist. Not done if no-delegate-yaml option is specified', type: :boolean
|
|
16
18
|
def convert(review_starter_configfile, outdir)
|
|
17
19
|
Converter.execute(review_starter_configfile, outdir, options)
|
|
18
20
|
end
|
|
@@ -22,6 +24,12 @@ module ReVIEW
|
|
|
22
24
|
puts VERSION
|
|
23
25
|
end
|
|
24
26
|
|
|
27
|
+
desc "review-version", "show Re:VIEW version"
|
|
28
|
+
map "review-version" => :review_version
|
|
29
|
+
def review_version()
|
|
30
|
+
puts ReVIEW::VERSION
|
|
31
|
+
end
|
|
32
|
+
|
|
25
33
|
end
|
|
26
34
|
end
|
|
27
35
|
end
|
|
@@ -1,3 +1,41 @@
|
|
|
1
|
+
require 'yaml'
|
|
2
|
+
|
|
3
|
+
# For Ruby 3.1+ compatibility with review 5.3 and earlier
|
|
4
|
+
# These versions don't support safe YAML loading with permitted_classes
|
|
5
|
+
module YAML
|
|
6
|
+
class << self
|
|
7
|
+
alias_method :original_load_file, :load_file
|
|
8
|
+
alias_method :original_safe_load, :safe_load
|
|
9
|
+
|
|
10
|
+
def load_file(path, *args, **kwargs)
|
|
11
|
+
if kwargs.empty? && args.empty?
|
|
12
|
+
original_load_file(path, permitted_classes: [Date, Time, Symbol], permitted_symbols: [], aliases: true)
|
|
13
|
+
else
|
|
14
|
+
original_load_file(path, *args, **kwargs)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Handle both old positional args (review 5.3 and earlier) and new keyword args
|
|
19
|
+
# Old format: YAML.safe_load(yaml, permitted_classes, permitted_symbols, aliases, filename)
|
|
20
|
+
# New format: YAML.safe_load(yaml, permitted_classes: [], permitted_symbols: [], aliases: false)
|
|
21
|
+
def safe_load(yaml, *args, **kwargs)
|
|
22
|
+
if kwargs.empty?
|
|
23
|
+
if args.empty?
|
|
24
|
+
original_safe_load(yaml, permitted_classes: [Date, Time, Symbol], permitted_symbols: [], aliases: true)
|
|
25
|
+
else
|
|
26
|
+
# Convert old positional args to new keyword args format
|
|
27
|
+
permitted_classes = args[0].is_a?(Array) ? args[0] : [Date, Time, Symbol]
|
|
28
|
+
permitted_symbols = args[1].is_a?(Array) ? args[1] : []
|
|
29
|
+
aliases = args[2].nil? ? true : args[2]
|
|
30
|
+
original_safe_load(yaml, permitted_classes: permitted_classes + [Date, Time, Symbol], permitted_symbols: permitted_symbols, aliases: aliases)
|
|
31
|
+
end
|
|
32
|
+
else
|
|
33
|
+
original_safe_load(yaml, *args, **kwargs)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
1
39
|
require 'review'
|
|
2
40
|
require 'erb'
|
|
3
41
|
require 'fileutils'
|
|
@@ -122,8 +160,6 @@ module ReVIEW
|
|
|
122
160
|
@configs.rewrite_yml('contentdir', '.')
|
|
123
161
|
@configs.rewrite_yml('hook_beforetexcompile', 'null')
|
|
124
162
|
@configs.rewrite_yml('texstyle', '["reviewmacro"]')
|
|
125
|
-
pagesize = @config['starter']['pagesize'].downcase
|
|
126
|
-
jsbook_config = "media=print,paper=#{pagesize}"
|
|
127
163
|
|
|
128
164
|
# words
|
|
129
165
|
words_files = @config['words_file']
|
|
@@ -146,12 +182,41 @@ module ReVIEW
|
|
|
146
182
|
FileUtils.copy(File.join(@basedir, makeindex_dic), File.join(outdir, makeindex_dic))
|
|
147
183
|
end
|
|
148
184
|
|
|
185
|
+
# texdocumentclass
|
|
186
|
+
pagesize = @config['starter']['pagesize'].downcase
|
|
187
|
+
book_configs = [
|
|
188
|
+
"media=print",
|
|
189
|
+
"paper=#{pagesize}"
|
|
190
|
+
]
|
|
191
|
+
|
|
192
|
+
texdocumentclass = @config['texdocumentclass']
|
|
193
|
+
book_style = texdocumentclass[0]
|
|
194
|
+
if book_style == "jsbook"
|
|
195
|
+
book_style = "review-jsbook"
|
|
196
|
+
elsif book_style == "utbook"
|
|
197
|
+
book_style = "review-utbook"
|
|
198
|
+
FileUtils.cp(File.join(__dir__, 'sty/review-utbook.cls'), File.join(outdir, 'sty/review-utbook.cls'))
|
|
199
|
+
end
|
|
200
|
+
origin_book_configs = texdocumentclass[1].split(',')
|
|
201
|
+
book_configs.concat origin_book_configs.select { |c| !ReViewDef::review_jsbook_invalid_configs().include?(c) }
|
|
202
|
+
|
|
149
203
|
if @ird
|
|
150
204
|
# # リュウミン Pr6N R-KL 12.5Q 22H (9pt = 12.7Q 15.5pt = 21.8Q(H))
|
|
151
205
|
# texdocumentclass: ["review-jsbook", "media=ebook,openany,paper=b5,fontsize=9pt,baselineskip=15.5pt,head_space=15mm,gutter=22mm,footskip=16mm,line_length=45zw,number_of_lines=38"]
|
|
152
|
-
|
|
206
|
+
book_config = [
|
|
207
|
+
"media=ebook",
|
|
208
|
+
"openany",
|
|
209
|
+
"paper=b5",
|
|
210
|
+
"fontsize=9pt",
|
|
211
|
+
"baselineskip=15.5pt",
|
|
212
|
+
"head_space=15mm",
|
|
213
|
+
"gutter=22mm",
|
|
214
|
+
"footskip=16mm",
|
|
215
|
+
"line_length=45zw",
|
|
216
|
+
"number_of_lines=38"
|
|
217
|
+
]
|
|
153
218
|
end
|
|
154
|
-
@configs.rewrite_yml_array('texdocumentclass', "[\"
|
|
219
|
+
@configs.rewrite_yml_array('texdocumentclass', "[\"#{book_style}\", \"#{book_configs.join(',')}\"]")
|
|
155
220
|
if @config.key?('retrovert')
|
|
156
221
|
@config['retrovert'].each{ |k,v|
|
|
157
222
|
unless v..is_a?(Hash)
|
|
@@ -584,6 +649,7 @@ module ReVIEW
|
|
|
584
649
|
replace_compatible_block_command_outline(content, 'output', 'list', 3)
|
|
585
650
|
replace_compatible_block_command_to_outside(content, 'sideimage', 'image', 1, '[]')
|
|
586
651
|
replace_block_command_outline(content, 'abstract', 'lead', true)
|
|
652
|
+
delete_block_command(content, 'makechaptitlepage')
|
|
587
653
|
delete_block_command(content, 'vspace')
|
|
588
654
|
delete_block_command(content, 'needvspace')
|
|
589
655
|
delete_block_command(content, 'clearpage')
|
|
@@ -706,6 +772,7 @@ module ReVIEW
|
|
|
706
772
|
delete_inline_command(content, 'userinput')
|
|
707
773
|
delete_inline_command(content, 'weak')
|
|
708
774
|
delete_inline_command(content, 'cursor')
|
|
775
|
+
delete_inline_command(content, 'foldhere')
|
|
709
776
|
# font size
|
|
710
777
|
delete_inline_command(content, 'small')
|
|
711
778
|
delete_inline_command(content, 'xsmall')
|
|
@@ -725,12 +792,6 @@ module ReVIEW
|
|
|
725
792
|
content.gsub!(/@<href>{(.*?)#.*?,(.*?)}/, '@<href>{\1,\2}')
|
|
726
793
|
content.gsub!(/@<href>{(.*?)#.*?}/, '@<href>{\1}')
|
|
727
794
|
linkurl_footnote = @config['starter']['linkurl_footnote']
|
|
728
|
-
# table 内の @ コマンドは不安定らしい
|
|
729
|
-
while !content.gsub!(/(\/\/table.*)@<br>{}(.*?\/\/})/m, "\\1#{Regexp.escape(@table_br_replace)}\\2").nil? do
|
|
730
|
-
end
|
|
731
|
-
# 空セルが2行になることがあるらしい
|
|
732
|
-
while !content.gsub!(/(\/\/table.*\s)\.(\s.*?\/\/})/m, "\\1#{Regexp.escape(@table_empty_replace)}\\2").nil? do
|
|
733
|
-
end
|
|
734
795
|
# noop を最後に消すためにダミーに変える
|
|
735
796
|
content.gsub!('@<nop>$$', '@<dummynop>$must_be_replace_nop$')
|
|
736
797
|
content.gsub!('@<nop>||', '@<dummynop>|must_be_replace_nop|')
|
|
@@ -787,9 +848,20 @@ module ReVIEW
|
|
|
787
848
|
m.gsub(/@<br>({}|\$\$|\|\|)/, '@<fnbr>\1')
|
|
788
849
|
}
|
|
789
850
|
|
|
851
|
+
content.gsub!(/(\/\/table.*?{.*?\/\/})/m) { |m|
|
|
852
|
+
# table 内の @ コマンドは不安定らしい
|
|
853
|
+
m.gsub!('@<br>{}', "#{Regexp.escape(@table_br_replace)}")
|
|
854
|
+
# 空セルが2行になることがあるらしい
|
|
855
|
+
m.gsub!(/(\s)\.(\s)/, "\\1#{Regexp.escape(@table_empty_replace)}\\2")
|
|
856
|
+
m
|
|
857
|
+
}
|
|
858
|
+
|
|
790
859
|
content.gsub!(/(.*)@<br>({}|\$\$|\|\|)$/, "\\1\n\n")
|
|
791
860
|
content.gsub!(/(.*)@<br>({}|\$\$|\|\|)(.*)$/, "\\1\n\n\\2")
|
|
792
|
-
|
|
861
|
+
|
|
862
|
+
content.gsub!('@<fnbr>{}', '@<br>{}')
|
|
863
|
+
content.gsub!('@<fnbr>$$', '@<br>$$')
|
|
864
|
+
content.gsub!('@<fnbr>||', '@<br>||')
|
|
793
865
|
end
|
|
794
866
|
|
|
795
867
|
# nop replace must be last step
|
|
@@ -943,16 +1015,30 @@ module ReVIEW
|
|
|
943
1015
|
update_sty(outdir, options)
|
|
944
1016
|
update_ext(outdir, options)
|
|
945
1017
|
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
1018
|
+
unless options['no-delegate-config']
|
|
1019
|
+
unless File.exist?(File.join(outdir, 'config.yml'))
|
|
1020
|
+
root_config = File.open(File.join(outdir, 'config.yml'), 'w')
|
|
1021
|
+
root_config.puts("review_version: #{ReVIEW::VERSION}")
|
|
1022
|
+
root_config.puts("inherit: [\"#{File.basename(yamlfile)}\"]")
|
|
1023
|
+
end
|
|
1024
|
+
unless File.exist?(File.join(outdir, 'catalog.yml'))
|
|
1025
|
+
catalogfile = @config['catalogfile']
|
|
1026
|
+
FileUtils.copy(File.join(@basedir, catalogfile), File.join(outdir, 'catalog.yml'))
|
|
1027
|
+
end
|
|
1028
|
+
end
|
|
1029
|
+
|
|
1030
|
+
unless options['no-update']
|
|
1031
|
+
pwd = Dir.pwd
|
|
1032
|
+
Dir.chdir(outdir)
|
|
1033
|
+
updater = ReVIEW::Update.new
|
|
1034
|
+
updater.force = true
|
|
1035
|
+
# updater.backup = false
|
|
1036
|
+
begin
|
|
1037
|
+
updater.execute()
|
|
1038
|
+
rescue
|
|
1039
|
+
end
|
|
1040
|
+
Dir.chdir(pwd)
|
|
954
1041
|
end
|
|
955
|
-
Dir.chdir(pwd)
|
|
956
1042
|
|
|
957
1043
|
if options['preproc']
|
|
958
1044
|
info 'preproc'
|
|
@@ -44,6 +44,35 @@ module ReVIEW
|
|
|
44
44
|
]
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
+
def review_jsbook_invalid_configs()
|
|
48
|
+
[
|
|
49
|
+
"uplatex",
|
|
50
|
+
"autodetect-engine",
|
|
51
|
+
"papersize",
|
|
52
|
+
"titlepage",
|
|
53
|
+
"notitlepage",
|
|
54
|
+
"usemag",
|
|
55
|
+
"nomag",
|
|
56
|
+
"nomag*",
|
|
57
|
+
"a4j",
|
|
58
|
+
"a5j",
|
|
59
|
+
"b4j",
|
|
60
|
+
"b5j",
|
|
61
|
+
"winjis",
|
|
62
|
+
"mingoth",
|
|
63
|
+
"jis",
|
|
64
|
+
"disablejfam",
|
|
65
|
+
"a4paper",
|
|
66
|
+
"a5paper",
|
|
67
|
+
"b4paper",
|
|
68
|
+
"b5paper",
|
|
69
|
+
"letterpaper",
|
|
70
|
+
"tombo",
|
|
71
|
+
"tombow",
|
|
72
|
+
"mentuke",
|
|
73
|
+
]
|
|
74
|
+
end
|
|
75
|
+
|
|
47
76
|
# キャプションを取得する
|
|
48
77
|
def get_caption(line)
|
|
49
78
|
m = line.match(/^\/\/(\w+?)((\[#{r_option_inner}\])*)([$|{])*$/)
|
|
@@ -84,9 +84,27 @@ module ReVIEW
|
|
|
84
84
|
FileUtils.copy(File.expand_path(current_file, @basedir), File.join(outdir, current_file))
|
|
85
85
|
}
|
|
86
86
|
@basedir = outdir
|
|
87
|
+
# Only quote date fields for review 5.3 and earlier (< 5.4.0)
|
|
88
|
+
# These versions have YAML Date parsing issues with Ruby 3.1+
|
|
89
|
+
if Gem::Version.new(ReVIEW::VERSION) < Gem::Version.new('5.4.0')
|
|
90
|
+
quote_date_fields()
|
|
91
|
+
end
|
|
87
92
|
rewrite_retrovert_yml()
|
|
88
93
|
end
|
|
89
94
|
|
|
95
|
+
# Quote date fields to avoid YAML Date parsing issues with Ruby 3.1+ and review 5.3 or earlier
|
|
96
|
+
def quote_date_fields()
|
|
97
|
+
@config_files.each { |current_file|
|
|
98
|
+
yamlfile = File.join(@basedir, current_file)
|
|
99
|
+
content = File.read(yamlfile)
|
|
100
|
+
# Match date fields like "date: 2021-07-10" and quote them
|
|
101
|
+
content.gsub!(/^(\s*)(date|history):\s*(\d{4}-\d{2}-\d{2})\s*$/, '\1\2: "\3"')
|
|
102
|
+
# Match date in arrays like " - 2021-07-10"
|
|
103
|
+
content.gsub!(/^(\s*-\s*)(\d{4}-\d{2}-\d{2})\s*$/, '\1"\2"')
|
|
104
|
+
File.write(yamlfile, content)
|
|
105
|
+
}
|
|
106
|
+
end
|
|
107
|
+
|
|
90
108
|
def commentout(yamlfile, key)
|
|
91
109
|
content = File.read(yamlfile)
|
|
92
110
|
content.gsub!(/^(\s*)#{key}:(.*)$/, "#\\1#{key}:\\2")
|
|
@@ -128,6 +146,11 @@ module ReVIEW
|
|
|
128
146
|
retrovert = yaml['retrovert']
|
|
129
147
|
yaml.deep_merge!(retrovert)
|
|
130
148
|
yaml.delete('retrovert')
|
|
149
|
+
# Convert Date/Time objects to strings to avoid YAML loading issues
|
|
150
|
+
# with Ruby 3.1+ and review 5.3 or earlier
|
|
151
|
+
if Gem::Version.new(ReVIEW::VERSION) < Gem::Version.new('5.4.0')
|
|
152
|
+
yaml = convert_dates_to_strings(yaml)
|
|
153
|
+
end
|
|
131
154
|
# YAML.dump(yaml, File.open(yamlfile, "w"))
|
|
132
155
|
content = Psych.dump(yaml)
|
|
133
156
|
content.gsub!('---','')
|
|
@@ -135,9 +158,23 @@ module ReVIEW
|
|
|
135
158
|
}
|
|
136
159
|
end
|
|
137
160
|
|
|
161
|
+
# Recursively convert Date and Time objects to ISO 8601 strings
|
|
162
|
+
def convert_dates_to_strings(obj)
|
|
163
|
+
case obj
|
|
164
|
+
when Hash
|
|
165
|
+
obj.transform_values { |v| convert_dates_to_strings(v) }
|
|
166
|
+
when Array
|
|
167
|
+
obj.map { |v| convert_dates_to_strings(v) }
|
|
168
|
+
when Date, Time
|
|
169
|
+
obj.strftime('%Y-%m-%d')
|
|
170
|
+
else
|
|
171
|
+
obj
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
|
|
138
175
|
def load_yaml(filepath)
|
|
139
176
|
begin
|
|
140
|
-
yaml = YAML.load_file(filepath)
|
|
177
|
+
yaml = YAML.load_file(filepath, permitted_classes: [Date, Time])
|
|
141
178
|
rescue => e
|
|
142
179
|
error "load error #{e.message}"
|
|
143
180
|
end
|