review-retrovert 0.9.11 → 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.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +1 -1
  3. data/.pinact.yaml +12 -0
  4. data/.ruby-version +1 -1
  5. data/Dockerfile +2 -1
  6. data/Dockerfile.local +13 -0
  7. data/Gemfile.lock +62 -35
  8. data/Rakefile +9 -0
  9. data/aqua.yaml +20 -0
  10. data/hooks/post_push +14 -1
  11. data/lib/review/retrovert/cli.rb +6 -0
  12. data/lib/review/retrovert/converter.rb +38 -0
  13. data/lib/review/retrovert/version.rb +1 -1
  14. data/lib/review/retrovert/yamlconfig.rb +38 -1
  15. data/review-retrovert.gemspec +18 -4
  16. data/zizmor.yml +5 -0
  17. metadata +53 -127
  18. data/.github/FUNDING.yml +0 -4
  19. data/.github/workflows/docker-build.yml +0 -26
  20. data/.github/workflows/release.yml +0 -26
  21. data/.github/workflows/retrovert.yml +0 -91
  22. data/testdata/mybook/.gitignore +0 -13
  23. data/testdata/mybook/.textlintrc +0 -11
  24. data/testdata/mybook/README.md +0 -43
  25. data/testdata/mybook/Rakefile +0 -24
  26. data/testdata/mybook/catalog.yml +0 -60
  27. data/testdata/mybook/config-noretrovert.yml +0 -404
  28. data/testdata/mybook/config-retrovert.yml +0 -16
  29. data/testdata/mybook/config-starter.yml +0 -264
  30. data/testdata/mybook/config.yml +0 -404
  31. data/testdata/mybook/contents/00-preface.re +0 -129
  32. data/testdata/mybook/contents/01-install.re +0 -305
  33. data/testdata/mybook/contents/02-tutorial.re +0 -1228
  34. data/testdata/mybook/contents/03-syntax.re +0 -4610
  35. data/testdata/mybook/contents/04-customize.re +0 -1064
  36. data/testdata/mybook/contents/05-faq.re +0 -606
  37. data/testdata/mybook/contents/06-bestpractice.re +0 -1343
  38. data/testdata/mybook/contents/91-compare.re +0 -418
  39. data/testdata/mybook/contents/92-filelist.re +0 -125
  40. data/testdata/mybook/contents/93-background.re +0 -267
  41. data/testdata/mybook/contents/99-postface.re +0 -39
  42. data/testdata/mybook/contents/r0-inner.re +0 -2
  43. data/testdata/mybook/contents/r0-root.re +0 -49
  44. data/testdata/mybook/contents/table.csv +0 -4
  45. data/testdata/mybook/contents/test.txt +0 -1
  46. data/testdata/mybook/contents/ut.re +0 -5
  47. data/testdata/mybook/css/normalize.css +0 -349
  48. data/testdata/mybook/css/webstyle.css +0 -692
  49. data/testdata/mybook/data/terms.txt +0 -3
  50. data/testdata/mybook/data/words.txt +0 -15
  51. data/testdata/mybook/images/03-syntax/favicon-16x16.png +0 -0
  52. data/testdata/mybook/images/03-syntax/figure_heretop.png +0 -0
  53. data/testdata/mybook/images/03-syntax/index-page.png +0 -0
  54. data/testdata/mybook/images/03-syntax/order-detail.png +0 -0
  55. data/testdata/mybook/images/03-syntax/tw-icon1.jpg +0 -0
  56. data/testdata/mybook/images/03-syntax/tw-icon2.jpg +0 -0
  57. data/testdata/mybook/images/03-syntax/tw-icon3.jpg +0 -0
  58. data/testdata/mybook/images/03-syntax/tw-icon4.jpg +0 -0
  59. data/testdata/mybook/images/04-customize/caption_pagebreak.png +0 -0
  60. data/testdata/mybook/images/04-customize/chaptitlepage_sample.png +0 -0
  61. data/testdata/mybook/images/04-customize/section_decoration_samples.png +0 -0
  62. data/testdata/mybook/images/05-faq/codeblock_rpadding1.png +0 -0
  63. data/testdata/mybook/images/05-faq/codeblock_rpadding2.png +0 -0
  64. data/testdata/mybook/images/05-faq/dummy-image.png +0 -0
  65. data/testdata/mybook/images/06-bestpractice/figure_heretop.png +0 -0
  66. data/testdata/mybook/images/06-bestpractice/font_beramono.png +0 -0
  67. data/testdata/mybook/images/06-bestpractice/heading_design1.png +0 -0
  68. data/testdata/mybook/images/06-bestpractice/heading_design2.png +0 -0
  69. data/testdata/mybook/images/06-bestpractice/margin_book.png +0 -0
  70. data/testdata/mybook/images/06-bestpractice/multiline-title.png +0 -0
  71. data/testdata/mybook/images/06-bestpractice/preface_numbered.png +0 -0
  72. data/testdata/mybook/images/06-bestpractice/program_border.png +0 -0
  73. data/testdata/mybook/images/06-bestpractice/sechead_design_4.png +0 -0
  74. data/testdata/mybook/images/06-bestpractice/section_title_wlines.png +0 -0
  75. data/testdata/mybook/images/06-bestpractice/titlepage-samples.png +0 -0
  76. data/testdata/mybook/images/93-background/bug913.png +0 -0
  77. data/testdata/mybook/images/93-background/slide2.png +0 -0
  78. data/testdata/mybook/images/avatar-b.png +0 -0
  79. data/testdata/mybook/images/avatar-g.png +0 -0
  80. data/testdata/mybook/images/avatar-r.png +0 -0
  81. data/testdata/mybook/images/caution-icon.png +0 -0
  82. data/testdata/mybook/images/cover_a5.pdf +0 -0
  83. data/testdata/mybook/images/cover_b5.pdf +0 -0
  84. data/testdata/mybook/images/info-icon.png +0 -0
  85. data/testdata/mybook/images/tw-icon.jpg +0 -0
  86. data/testdata/mybook/images/warning-icon.png +0 -0
  87. data/testdata/mybook/layouts/layout.epub.erb +0 -29
  88. data/testdata/mybook/layouts/layout.html5.erb +0 -108
  89. data/testdata/mybook/layouts/layout.tex.erb +0 -432
  90. data/testdata/mybook/layouts/layout.tex.erb.orig +0 -386
  91. data/testdata/mybook/lib/hooks/beforetexcompile.rb +0 -55
  92. data/testdata/mybook/lib/ruby/review-book.rb +0 -64
  93. data/testdata/mybook/lib/ruby/review-builder.rb +0 -1342
  94. data/testdata/mybook/lib/ruby/review-cli.rb +0 -58
  95. data/testdata/mybook/lib/ruby/review-compiler.rb +0 -1176
  96. data/testdata/mybook/lib/ruby/review-epubbuilder.rb +0 -33
  97. data/testdata/mybook/lib/ruby/review-epubmaker.rb +0 -609
  98. data/testdata/mybook/lib/ruby/review-htmlbuilder.rb +0 -949
  99. data/testdata/mybook/lib/ruby/review-latexbuilder.rb +0 -1065
  100. data/testdata/mybook/lib/ruby/review-maker.rb +0 -346
  101. data/testdata/mybook/lib/ruby/review-markdownbuilder.rb +0 -945
  102. data/testdata/mybook/lib/ruby/review-markdownmaker.rb +0 -91
  103. data/testdata/mybook/lib/ruby/review-monkeypatch.rb +0 -93
  104. data/testdata/mybook/lib/ruby/review-pdfmaker.rb +0 -546
  105. data/testdata/mybook/lib/ruby/review-textbuilder.rb +0 -36
  106. data/testdata/mybook/lib/ruby/review-tocparser.rb +0 -285
  107. data/testdata/mybook/lib/ruby/review-webmaker.rb +0 -448
  108. data/testdata/mybook/lib/tasks/mytasks.rake +0 -31
  109. data/testdata/mybook/lib/tasks/review.rake +0 -156
  110. data/testdata/mybook/lib/tasks/review.rake.orig +0 -72
  111. data/testdata/mybook/lib/tasks/starter.rake +0 -470
  112. data/testdata/mybook/locale.yml +0 -6
  113. data/testdata/mybook/review-ext.rb +0 -206
  114. data/testdata/mybook/sty/indexstyle.ist +0 -25
  115. data/testdata/mybook/sty/jumoline.sty +0 -310
  116. data/testdata/mybook/sty/mycolophon.sty +0 -81
  117. data/testdata/mybook/sty/mystyle.sty +0 -8
  118. data/testdata/mybook/sty/mytextsize.sty +0 -94
  119. data/testdata/mybook/sty/mytitlepage.sty +0 -126
  120. data/testdata/mybook/sty/review-base.sty +0 -276
  121. data/testdata/mybook/sty/reviewmacro.sty +0 -60
  122. data/testdata/mybook/sty/starter-codeblock.sty +0 -463
  123. data/testdata/mybook/sty/starter-color.sty +0 -134
  124. data/testdata/mybook/sty/starter-font.sty +0 -112
  125. data/testdata/mybook/sty/starter-heading.sty +0 -561
  126. data/testdata/mybook/sty/starter-misc.sty +0 -894
  127. data/testdata/mybook/sty/starter-note.sty +0 -180
  128. data/testdata/mybook/sty/starter-section.sty +0 -262
  129. data/testdata/mybook/sty/starter-talklist.sty +0 -105
  130. data/testdata/mybook/sty/starter-toc.sty +0 -72
  131. data/testdata/mybook/sty/starter-util.sty +0 -39
  132. data/testdata/mybook/sty/starter.sty +0 -36
  133. data/testdata/mybook/sty/ut.sty +0 -26
  134. data/testdata/mybook/style.css +0 -597
  135. data/testdata/mybook/ut-catalog.yml +0 -61
  136. data/testdata/mybook/ut-config-starter.yml +0 -3
  137. data/testdata/mybook/ut-config.yml +0 -404
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 393624484f41bea59ee793d9720b43084058a7d3e3c6c3ad77adbe79b05d400f
4
- data.tar.gz: 29975b33f89f570df49d12956b42606f24d6e86224d4a495935ad228fb3dceac
3
+ metadata.gz: 267dfed374168e87a304450363d3f2a65db553bf530c56a3484a72bf9f64911b
4
+ data.tar.gz: f773e8543b7dff305f22a857f3074550a793487aea4e252cc0514897b3937786
5
5
  SHA512:
6
- metadata.gz: db1bd1b2451f1af8a5ea77829a0781d2ddb755ebaca266f2db5c45adb6a835e1c41fa2baca89d45f625b1c4bcc84faf7c0f093b7344524db24e19a3e21155071
7
- data.tar.gz: 9d44921e109fb1b9e436c10721c4ef8fb0c0840c8757f201fc71b1fa90dc7611013f79b7c2a1eb8ea686b84b92210fe49fa870ad55ffed0c092a69713a2fc415
6
+ metadata.gz: 7ac9c51bb200a188acf201899dc1e9667b39df719fe5950a6c6a93f69107b6943d05dfc58699ba0482cc09c6376b17517ba47bc51003ff1e0a3f7b6300e6a674
7
+ data.tar.gz: 5020eb746cb8094e74036b7ba9d5a6bb77eadc52ac73e68f3ec0a0c22394eaf90b5ef3ffd0a1dd013226706bc1afedc60d364297798bca384cec74d457157cde
data/.editorconfig CHANGED
@@ -4,7 +4,7 @@ root = true
4
4
  indent_style = space
5
5
  indent_size = 4
6
6
 
7
- [*.rb]
7
+ [*.{rb,gemspec}]
8
8
  charset = utf-8
9
9
  trim_trailing_whitespace = true
10
10
  indent_size = 2
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
- 2.5.5
1
+ 3.3.4
data/Dockerfile CHANGED
@@ -1,4 +1,5 @@
1
- FROM vvakame/review:5.0
1
+ ARG REVIEW_VERSION=latest
2
+ FROM vvakame/review:${REVIEW_VERSION}
2
3
 
3
4
  RUN gem install review-retrovert
4
5
 
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.9.11)
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 (6.1.1)
12
- concurrent-ruby (~> 1.0, >= 1.0.2)
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
- tzinfo (~> 2.0)
16
- zeitwerk (~> 2.3)
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
- builder (3.2.4)
24
- childprocess (4.0.0)
25
- concurrent-ruby (1.1.7)
26
- contracts (0.16.0)
27
- cucumber (5.2.0)
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.4.4)
59
- ffi (1.14.2)
60
- i18n (1.8.7)
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 (2.1.2)
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 (5.14.3)
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.2.0)
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
- rouge (3.26.0)
80
- rspec (3.10.0)
81
- rspec-core (~> 3.10.0)
82
- rspec-expectations (~> 3.10.0)
83
- rspec-mocks (~> 3.10.0)
84
- rspec-core (3.10.1)
85
- rspec-support (~> 3.10.0)
86
- rspec-expectations (3.10.1)
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.10.0)
89
- rspec-mocks (3.10.1)
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.10.0)
92
- rspec-support (3.10.1)
93
- ruby-debug-ide (0.7.2)
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 (2.3.2)
96
- sys-uname (1.2.2)
120
+ rubyzip (3.2.2)
121
+ securerandom (0.4.1)
122
+ sys-uname (1.4.1)
97
123
  ffi (~> 1.1)
98
- thor (1.0.1)
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.4)
130
+ tzinfo (2.0.6)
104
131
  concurrent-ruby (~> 1.0)
105
- zeitwerk (2.4.2)
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.1.4
145
+ 2.5.11
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
- VERSION=$(docker run --rm ${IMAGE_NAME} version)
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
@@ -24,6 +24,12 @@ module ReVIEW
24
24
  puts VERSION
25
25
  end
26
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
+
27
33
  end
28
34
  end
29
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'
@@ -1,5 +1,5 @@
1
1
  module ReVIEW
2
2
  module Retrovert
3
- VERSION = "0.9.11"
3
+ VERSION = "0.10.0"
4
4
  end
5
5
  end
@@ -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
@@ -10,7 +10,11 @@ Gem::Specification.new do |spec|
10
10
  spec.description = %q{Re:VIEW Starter to Re:VIEW}
11
11
  spec.homepage = "https://github.com/srz-zumix/review-retrovert"
12
12
  spec.license = "MIT"
13
- spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
13
+ if RUBY_VERSION >= '2.6.0'
14
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
15
+ else
16
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
17
+ end
14
18
 
15
19
  # spec.metadata["allowed_push_host"] = "http://mygemserver.com"
16
20
 
@@ -21,17 +25,27 @@ Gem::Specification.new do |spec|
21
25
  # Specify which files should be added to the gem when it is released.
22
26
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
27
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
28
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(.github|testdata|spec|features)/}) }
25
29
  end
26
30
  spec.bindir = "exe"
27
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
32
  spec.require_paths = ["lib"]
29
33
 
30
- spec.add_dependency "thor"
34
+ # thor 1.3+ requires Ruby >= 2.6.0
35
+ if RUBY_VERSION >= '2.6.0'
36
+ spec.add_dependency "thor"
37
+ else
38
+ spec.add_dependency "thor", "~> 1.2.2"
39
+ end
40
+ # Required for Ruby 3.4+ where these gems are no longer default gems
41
+ # Necessary for compatibility with review versions 5.4 and earlier
42
+ spec.add_dependency "rexml"
43
+ spec.add_dependency "csv"
44
+ spec.add_dependency "nkf"
31
45
  spec.add_development_dependency "rspec", ['~> 3.0']
32
46
  spec.add_development_dependency "rake", ['~> 12.0']
33
47
  spec.add_development_dependency 'aruba', ['~> 1.0.2']
34
48
  spec.add_development_dependency "ruby-debug-ide"
35
- # spec.add_development_dependency "debase"
49
+ #spec.add_development_dependency "debase"
36
50
  spec.add_runtime_dependency "review", ['>= 3.0.0']
37
51
  end
data/zizmor.yml ADDED
@@ -0,0 +1,5 @@
1
+ rules:
2
+ unpinned-uses:
3
+ config:
4
+ policies:
5
+ actions/*: any