idml 0.6.1 → 0.6.2

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/release.yml +1 -3
  3. data/.gitignore +1 -0
  4. data/Gemfile +2 -1
  5. data/TODO.pdf/01-font-metrics.md +6 -0
  6. data/TODO.pdf/02-font-resolver.md +5 -0
  7. data/TODO.pdf/03-text-shaper.md +4 -0
  8. data/TODO.pdf/04-line-breaker-justifier.md +4 -0
  9. data/TODO.pdf/05-vertical-layout.md +4 -0
  10. data/TODO.pdf/06-pdf-color-operators.md +5 -0
  11. data/TODO.pdf/07-pdf-path-operators.md +5 -0
  12. data/TODO.pdf/08-pdf-text-operators.md +5 -0
  13. data/TODO.pdf/09-image-embedding.md +5 -0
  14. data/TODO.pdf/10-spread-renderer.md +5 -0
  15. data/TODO.pdf/100-character-level-styling.md +61 -0
  16. data/TODO.pdf/101-paragraph-rules-borders.md +38 -0
  17. data/TODO.pdf/102-anchored-objects.md +41 -0
  18. data/TODO.pdf/103-drop-caps.md +33 -0
  19. data/TODO.pdf/104-table-schema-completion.md +44 -0
  20. data/TODO.pdf/105-whole-package-round-trip.md +45 -0
  21. data/TODO.pdf/106-page-item-type-coverage.md +62 -0
  22. data/TODO.pdf/107-image-rendering-unification.md +42 -0
  23. data/TODO.pdf/11-font-embedding.md +6 -0
  24. data/TODO.pdf/12-idml-to-pdf-pipeline.md +6 -0
  25. data/TODO.pdf/13-cjk-text-layout.md +5 -0
  26. data/TODO.pdf/14-page-item-element-models.md +5 -0
  27. data/TODO.pdf/15-wire-spread-children.md +5 -0
  28. data/TODO.pdf/16-typed-model-pipeline.md +5 -0
  29. data/TODO.pdf/17-shape-rendering.md +5 -0
  30. data/TODO.pdf/18-text-rendering.md +5 -0
  31. data/TODO.pdf/19-page-dimensions.md +4 -0
  32. data/TODO.pdf/20-png-image-support.md +4 -0
  33. data/TODO.pdf/21-coordinate-transform.md +5 -0
  34. data/TODO.pdf/22-color-resolution.md +5 -0
  35. data/TODO.pdf/23-fontmetrics-ps-name-fix.md +5 -0
  36. data/TODO.pdf/24-antipattern-coverage.md +5 -0
  37. data/TODO.pdf/25-cli-render.md +4 -0
  38. data/TODO.pdf/26-renderer-registry.md +5 -0
  39. data/TODO.pdf/27-text-engine-integration.md +6 -0
  40. data/TODO.pdf/28-path-geometry-models.md +6 -0
  41. data/TODO.pdf/29-character-style-extraction.md +5 -0
  42. data/TODO.pdf/30-shape-geometry-rendering.md +6 -0
  43. data/TODO.pdf/31-stroke-rendering.md +6 -0
  44. data/TODO.pdf/32-master-spread-rendering.md +6 -0
  45. data/TODO.pdf/33-font-resolution-from-idml.md +7 -0
  46. data/TODO.pdf/34-story-threading.md +5 -0
  47. data/TODO.pdf/35-pdf-metadata.md +6 -0
  48. data/TODO.pdf/36-performance-caching.md +5 -0
  49. data/TODO.pdf/37-round-trip-specs.md +5 -0
  50. data/TODO.pdf/38-pdf-output-validation.md +5 -0
  51. data/TODO.pdf/41-graphic-line-rendering.md +5 -0
  52. data/TODO.pdf/42-group-transform-application.md +5 -0
  53. data/TODO.pdf/43-text-frame-insets.md +6 -0
  54. data/TODO.pdf/44-layer-support.md +6 -0
  55. data/TODO.pdf/45-image-clipping.md +4 -0
  56. data/TODO.pdf/46-spread-to-page-separation.md +5 -0
  57. data/TODO.pdf/47-pdf-bookmarks.md +6 -0
  58. data/TODO.pdf/48-table-rendering.md +7 -0
  59. data/TODO.pdf/49-gradient-fill-rendering.md +6 -0
  60. data/TODO.pdf/50-pdf-a-compliance.md +6 -0
  61. data/TODO.pdf/68-radial-gradient-shadings.md +4 -0
  62. data/TODO.pdf/69-transparency-blend-modes.md +6 -0
  63. data/TODO.pdf/94-text-frame-vertical-layout.md +63 -0
  64. data/TODO.pdf/95-paragraph-spacing-indents.md +50 -0
  65. data/TODO.pdf/96-text-frame-insets-actual.md +39 -0
  66. data/TODO.pdf/97-table-cell-rendering-fidelity.md +62 -0
  67. data/TODO.pdf/98-rowspan-columnspan.md +35 -0
  68. data/TODO.pdf/99-table-column-widths.md +40 -0
  69. data/TODO.pdf/README.md +6 -9
  70. data/idml.gemspec +2 -1
  71. data/lib/idml/render/font_setup.rb +9 -0
  72. data/lib/idml/version.rb +1 -1
  73. metadata +39 -8
  74. data/Gemfile.lock +0 -235
@@ -0,0 +1,40 @@
1
+ # TODO PDF 99: Table column widths from ColumnAttributes
2
+
3
+ ## Status: OPEN — gap identified in 2026-08-08 audit
4
+
5
+ ## Problem
6
+
7
+ `TableRenderer::SchemaLayout#cell_w` divides the table width evenly
8
+ across all columns:
9
+
10
+ ```ruby
11
+ def cell_w
12
+ box[:width] / [col_count, 1].max
13
+ end
14
+ ```
15
+
16
+ Real IDML documents declare per-column widths via the
17
+ `ColumnAttributes` child of `Table` (with `SingleColumnWidth`
18
+ attributes). The renderer ignores these, producing visually wrong
19
+ tables whenever columns aren't equal-width.
20
+
21
+ ## What needs to happen
22
+
23
+ 1. Verify `Elements::Table` exposes the `column_attributes`
24
+ collection (add it if missing).
25
+ 2. `SchemaLayout` reads each `ColumnAttributes#single_column_width`
26
+ and computes a cumulative column-x table.
27
+ 3. `cell_x(col)` looks up the cumulative position; `cell_w(col)`
28
+ uses the actual width for that column.
29
+ 4. Falls back to even division when `ColumnAttributes` is absent.
30
+
31
+ ## Acceptance criteria
32
+
33
+ - [ ] Table with two columns, widths 100pt and 200pt, renders cells
34
+ at the correct x positions and widths.
35
+ - [ ] Table without ColumnAttributes renders as today (even division).
36
+ - [ ] Spanning cells (ColumnSpan) cover the correct cumulative width.
37
+
38
+ ## Dependencies
39
+
40
+ - TODO 98 (spans interact with column widths).
data/TODO.pdf/README.md CHANGED
@@ -5,17 +5,14 @@ without InDesign Server. The pipeline has three layers:
5
5
 
6
6
  1. **Text engine** (TODOs 01–05): a pure-Ruby text layout engine
7
7
  that takes styled text runs + frame geometry and produces
8
- positioned glyphs. Uses font metrics from .ttf/.otf files.
9
-
8
+ positioned glyphs. Uses font metrics via pdfrb's typed Fonts API.
10
9
  2. **PDF content stream** (TODOs 06–10): maps IDML page items
11
- (shapes, text, colors, images) to PDF content-stream operators
12
- using pdfrb's Document/Canvas API.
13
-
10
+ (shapes, text, colors, images) to pdfrb's Canvas API.
14
11
  3. **Pipeline** (TODOs 11–13): ties the text engine and PDF
15
12
  output together. IDML Package → typed model → render plan →
16
13
  pdfrb Document → PDF file.
17
14
 
18
- The text engine is intentionally IDML-agnostic: it works on
19
- styled text runs and frame geometry, not IDML-specific types.
20
- This makes it reusable (e.g., for generating PDFs from scratch
21
- or from other layout formats).
15
+ All entries below are functionally DONE (basic CJK in TODO 13 is
16
+ the only PARTIAL vertical writing mode, kinsoku, ruby, and
17
+ tate-chu-yoko remain stretch goals). Each file carries a
18
+ `## Status:` header with a brief implementation summary.
data/idml.gemspec CHANGED
@@ -29,8 +29,9 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ["lib"]
30
30
 
31
31
  spec.add_dependency "bigdecimal"
32
+ spec.add_dependency "logger"
32
33
  spec.add_dependency "lutaml-model", "~> 0.8.18"
33
- spec.add_dependency "pdfrb"
34
+ spec.add_dependency "pdfrb", "~> 0.6"
34
35
  spec.add_dependency "rubyzip"
35
36
  spec.add_dependency "thor"
36
37
 
@@ -66,6 +66,15 @@ module Idml
66
66
  map
67
67
  end
68
68
 
69
+ # True if at least one non-missing font declared in the
70
+ # document can be located on disk. Lets callers (and tests)
71
+ # gate font-embedding assertions on the document's fonts
72
+ # actually being installed, rather than silently falling
73
+ # back to the default.
74
+ def font_resolvable?
75
+ !resolve_document_font_path.nil?
76
+ end
77
+
69
78
  def resource_for_family(writer, family)
70
79
  path = find_font_file(family)
71
80
  return DEFAULT_FONT unless path
data/lib/idml/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Idml
4
- VERSION = "0.6.1"
4
+ VERSION = "0.6.2"
5
5
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: idml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-08-08 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: bigdecimal
@@ -23,6 +24,20 @@ dependencies:
23
24
  - - ">="
24
25
  - !ruby/object:Gem::Version
25
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
26
41
  - !ruby/object:Gem::Dependency
27
42
  name: lutaml-model
28
43
  requirement: !ruby/object:Gem::Requirement
@@ -41,16 +56,16 @@ dependencies:
41
56
  name: pdfrb
42
57
  requirement: !ruby/object:Gem::Requirement
43
58
  requirements:
44
- - - ">="
59
+ - - "~>"
45
60
  - !ruby/object:Gem::Version
46
- version: '0'
61
+ version: '0.6'
47
62
  type: :runtime
48
63
  prerelease: false
49
64
  version_requirements: !ruby/object:Gem::Requirement
50
65
  requirements:
51
- - - ">="
66
+ - - "~>"
52
67
  - !ruby/object:Gem::Version
53
- version: '0'
68
+ version: '0.6'
54
69
  - !ruby/object:Gem::Dependency
55
70
  name: rubyzip
56
71
  requirement: !ruby/object:Gem::Requirement
@@ -79,6 +94,7 @@ dependencies:
79
94
  - - ">="
80
95
  - !ruby/object:Gem::Version
81
96
  version: '0'
97
+ description:
82
98
  email:
83
99
  - open.source@ribose.com
84
100
  executables:
@@ -95,7 +111,6 @@ files:
95
111
  - ".yardopts"
96
112
  - CLAUDE.md
97
113
  - Gemfile
98
- - Gemfile.lock
99
114
  - README.adoc
100
115
  - Rakefile
101
116
  - TODO.complete/01-bootstrap.md
@@ -140,6 +155,14 @@ files:
140
155
  - TODO.pdf/08-pdf-text-operators.md
141
156
  - TODO.pdf/09-image-embedding.md
142
157
  - TODO.pdf/10-spread-renderer.md
158
+ - TODO.pdf/100-character-level-styling.md
159
+ - TODO.pdf/101-paragraph-rules-borders.md
160
+ - TODO.pdf/102-anchored-objects.md
161
+ - TODO.pdf/103-drop-caps.md
162
+ - TODO.pdf/104-table-schema-completion.md
163
+ - TODO.pdf/105-whole-package-round-trip.md
164
+ - TODO.pdf/106-page-item-type-coverage.md
165
+ - TODO.pdf/107-image-rendering-unification.md
143
166
  - TODO.pdf/11-font-embedding.md
144
167
  - TODO.pdf/12-idml-to-pdf-pipeline.md
145
168
  - TODO.pdf/13-cjk-text-layout.md
@@ -218,6 +241,12 @@ files:
218
241
  - TODO.pdf/91-image-downsampling.md
219
242
  - TODO.pdf/92-xref-entry-byte-count.md
220
243
  - TODO.pdf/93-per-run-font-resolution.md
244
+ - TODO.pdf/94-text-frame-vertical-layout.md
245
+ - TODO.pdf/95-paragraph-spacing-indents.md
246
+ - TODO.pdf/96-text-frame-insets-actual.md
247
+ - TODO.pdf/97-table-cell-rendering-fidelity.md
248
+ - TODO.pdf/98-rowspan-columnspan.md
249
+ - TODO.pdf/99-table-column-widths.md
221
250
  - TODO.pdf/README.md
222
251
  - exe/idml
223
252
  - idml.gemspec
@@ -1050,6 +1079,7 @@ metadata:
1050
1079
  source_code_uri: https://github.com/metanorma/idml
1051
1080
  bug_tracker_uri: https://github.com/metanorma/idml/issues
1052
1081
  rubygems_mfa_required: 'true'
1082
+ post_install_message:
1053
1083
  rdoc_options: []
1054
1084
  require_paths:
1055
1085
  - lib
@@ -1064,7 +1094,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1064
1094
  - !ruby/object:Gem::Version
1065
1095
  version: '0'
1066
1096
  requirements: []
1067
- rubygems_version: 4.0.16
1097
+ rubygems_version: 3.5.22
1098
+ signing_key:
1068
1099
  specification_version: 4
1069
1100
  summary: Parse, manipulate, and round-trip Adobe IDML files.
1070
1101
  test_files: []
data/Gemfile.lock DELETED
@@ -1,235 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- idml (0.6.1)
5
- bigdecimal
6
- lutaml-model (~> 0.8.18)
7
- pdfrb
8
- rubyzip
9
- thor
10
-
11
- PATH
12
- remote: /Users/mulgogi/src/claricle/pdfrb
13
- specs:
14
- pdfrb (0.6.0)
15
- thor
16
-
17
- GEM
18
- remote: https://rubygems.org/
19
- specs:
20
- ast (2.4.3)
21
- base64 (0.3.0)
22
- bigdecimal (4.1.2)
23
- canon (0.2.12)
24
- diff-lcs
25
- json
26
- moxml (~> 0.1.22)
27
- nokogiri
28
- paint
29
- rainbow
30
- table_tennis
31
- thor
32
- unicode-name
33
- concurrent-ruby (1.3.8)
34
- csv (3.3.6)
35
- diff-lcs (1.6.2)
36
- ffi (1.17.4-aarch64-linux-gnu)
37
- ffi (1.17.4-aarch64-linux-musl)
38
- ffi (1.17.4-arm-linux-gnu)
39
- ffi (1.17.4-arm-linux-musl)
40
- ffi (1.17.4-arm64-darwin)
41
- ffi (1.17.4-x86_64-darwin)
42
- ffi (1.17.4-x86_64-linux-gnu)
43
- ffi (1.17.4-x86_64-linux-musl)
44
- json (2.21.2)
45
- language_server-protocol (3.17.0.6)
46
- lint_roller (1.1.0)
47
- liquid (5.13.0)
48
- bigdecimal
49
- strscan (>= 3.1.1)
50
- lutaml-model (0.8.19)
51
- base64
52
- bigdecimal
53
- canon
54
- concurrent-ruby
55
- liquid (>= 4.0, < 6.0)
56
- moxml (~> 0.1.25)
57
- ostruct
58
- rubyzip (~> 2.3)
59
- thor
60
- memo_wise (1.13.0)
61
- moxml (0.1.26)
62
- nokogiri (1.19.4-aarch64-linux-gnu)
63
- racc (~> 1.4)
64
- nokogiri (1.19.4-aarch64-linux-musl)
65
- racc (~> 1.4)
66
- nokogiri (1.19.4-arm-linux-gnu)
67
- racc (~> 1.4)
68
- nokogiri (1.19.4-arm-linux-musl)
69
- racc (~> 1.4)
70
- nokogiri (1.19.4-arm64-darwin)
71
- racc (~> 1.4)
72
- nokogiri (1.19.4-x86_64-darwin)
73
- racc (~> 1.4)
74
- nokogiri (1.19.4-x86_64-linux-gnu)
75
- racc (~> 1.4)
76
- nokogiri (1.19.4-x86_64-linux-musl)
77
- racc (~> 1.4)
78
- ostruct (0.6.3)
79
- paint (2.3.0)
80
- parallel (2.1.0)
81
- parser (3.3.12.0)
82
- ast (~> 2.4.1)
83
- racc
84
- prism (1.9.0)
85
- racc (1.8.1)
86
- rainbow (3.1.1)
87
- rake (13.4.2)
88
- regexp_parser (2.12.0)
89
- rspec (3.13.2)
90
- rspec-core (~> 3.13.0)
91
- rspec-expectations (~> 3.13.0)
92
- rspec-mocks (~> 3.13.0)
93
- rspec-core (3.13.6)
94
- rspec-support (~> 3.13.0)
95
- rspec-expectations (3.13.5)
96
- diff-lcs (>= 1.2.0, < 2.0)
97
- rspec-support (~> 3.13.0)
98
- rspec-mocks (3.13.8)
99
- diff-lcs (>= 1.2.0, < 2.0)
100
- rspec-support (~> 3.13.0)
101
- rspec-support (3.13.7)
102
- rubocop (1.88.2)
103
- json (~> 2.3)
104
- language_server-protocol (~> 3.17.0.2)
105
- lint_roller (~> 1.1.0)
106
- parallel (>= 1.10)
107
- parser (>= 3.3.0.2)
108
- rainbow (>= 2.2.2, < 4.0)
109
- regexp_parser (>= 2.9.3, < 3.0)
110
- rubocop-ast (>= 1.49.0, < 2.0)
111
- ruby-progressbar (~> 1.7)
112
- unicode-display_width (>= 2.4.0, < 4.0)
113
- rubocop-ast (1.50.0)
114
- parser (>= 3.3.7.2)
115
- prism (~> 1.7)
116
- rubocop-performance (1.26.1)
117
- lint_roller (~> 1.1)
118
- rubocop (>= 1.75.0, < 2.0)
119
- rubocop-ast (>= 1.47.1, < 2.0)
120
- rubocop-rake (0.7.1)
121
- lint_roller (~> 1.1)
122
- rubocop (>= 1.72.1)
123
- rubocop-rspec (3.10.2)
124
- lint_roller (~> 1.1)
125
- regexp_parser (>= 2.0)
126
- rubocop (~> 1.86, >= 1.86.2)
127
- ruby-progressbar (1.13.0)
128
- rubyzip (2.4.1)
129
- simplecov (1.0.3)
130
- strscan (3.1.8)
131
- table_tennis (1.0.0)
132
- csv (~> 3.3)
133
- ffi (~> 1.17)
134
- memo_wise (~> 1.13)
135
- paint (~> 2.3)
136
- unicode-display_width (~> 3.2)
137
- thor (1.5.0)
138
- unicode-display_width (3.2.0)
139
- unicode-emoji (~> 4.1)
140
- unicode-emoji (4.2.0)
141
- unicode-name (1.14.0)
142
- unicode-types (~> 1.11)
143
- unicode-types (1.11.0)
144
- yard (0.9.45)
145
-
146
- PLATFORMS
147
- aarch64-linux-gnu
148
- aarch64-linux-musl
149
- arm-linux-gnu
150
- arm-linux-musl
151
- arm64-darwin
152
- x86_64-darwin
153
- x86_64-linux-gnu
154
- x86_64-linux-musl
155
-
156
- DEPENDENCIES
157
- idml!
158
- lutaml-model (~> 0.8.0)
159
- pdfrb!
160
- rake
161
- rspec
162
- rubocop
163
- rubocop-performance
164
- rubocop-rake
165
- rubocop-rspec
166
- simplecov
167
- thor
168
- yard
169
-
170
- CHECKSUMS
171
- ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
172
- base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
173
- bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
174
- canon (0.2.12) sha256=9b87514fbf6c0f9f28d1e2746ea5837b08e24e50c30751dba27a89f86e8709af
175
- concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1
176
- csv (3.3.6) sha256=aba61e7e507a66f03d45cb1f3c4b6359861c3504038b422962875dce099e4456
177
- diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
178
- ffi (1.17.4-aarch64-linux-gnu) sha256=b208f06f91ffd8f5e1193da3cae3d2ccfc27fc36fba577baf698d26d91c080df
179
- ffi (1.17.4-aarch64-linux-musl) sha256=9286b7a615f2676245283aef0a0a3b475ae3aae2bb5448baace630bb77b91f39
180
- ffi (1.17.4-arm-linux-gnu) sha256=d6dbddf7cb77bf955411af5f187a65b8cd378cb003c15c05697f5feee1cb1564
181
- ffi (1.17.4-arm-linux-musl) sha256=9d4838ded0465bef6e2426935f6bcc93134b6616785a84ffd2a3d82bc3cf6f95
182
- ffi (1.17.4-arm64-darwin) sha256=19071aaf1419251b0a46852abf960e77330a3b334d13a4ab51d58b31a937001b
183
- ffi (1.17.4-x86_64-darwin) sha256=aa70390523cf3235096cf64962b709b4cfbd5c082a2cb2ae714eb0fe2ccda496
184
- ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d
185
- ffi (1.17.4-x86_64-linux-musl) sha256=3fdf9888483de005f8ef8d1cf2d3b20d86626af206cbf780f6a6a12439a9c49e
186
- idml (0.6.1)
187
- json (2.21.2) sha256=1f1d3b7cf2b3ba1a69beca0bb6db13d5438b80bff3cd54cdaaa620b9b07c1c6a
188
- language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
189
- lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
190
- liquid (5.13.0) sha256=09d594fd96b98e19a8fd5c32aadcc6950df429b69f48c2f774c0db0ce272bf19
191
- lutaml-model (0.8.19) sha256=470a54930b463074c4112fe0abf6708c3a3fd42c460fdb8cad527978b3ddc7ae
192
- memo_wise (1.13.0) sha256=30220c38c4cef410849bc73553c58664dc2c91c6379e4a1df22aea02358b716b
193
- moxml (0.1.26) sha256=f29c2a76377f014920fbb9bec8d66acc3f162fa8a4f6a855010c3d2ac1ceeb70
194
- nokogiri (1.19.4-aarch64-linux-gnu) sha256=1269fb644a6de405057a53dd5c762b1209b43ca7424f839454d3dbc677c31a8f
195
- nokogiri (1.19.4-aarch64-linux-musl) sha256=35c65b9ce72b3bb03207bdbe7067915019dc18c1b9b59139684bd6690fdd01af
196
- nokogiri (1.19.4-arm-linux-gnu) sha256=a301313e38bb065d68239e79734bcd6f56fb6efaacebde29e9abf2a4735340ca
197
- nokogiri (1.19.4-arm-linux-musl) sha256=588923c101bcfa78869734d247d25b598674323e7f22474fc468f6e5647311eb
198
- nokogiri (1.19.4-arm64-darwin) sha256=a46db9853286e6597b36ebc6953817d15acf3a299583eb3f89fdc6f91dd63527
199
- nokogiri (1.19.4-x86_64-darwin) sha256=7fd17057d3e1f00e9954a74b3cd76595d3d4a5ef233b7ed9599047c204f70551
200
- nokogiri (1.19.4-x86_64-linux-gnu) sha256=379fae440b28915e3f19d752ce2dcf8465ed2b2fbefd2a7ca0dd497bc981a06a
201
- nokogiri (1.19.4-x86_64-linux-musl) sha256=17dfb7c1fa194ae02fbf7c51a7afc8d278045ab3fdacfd86f91d02d7b274470b
202
- ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912
203
- paint (2.3.0) sha256=327d623e4038619d5bd99ae5db07973859cd78400c7f0329eea283cef8e83be5
204
- parallel (2.1.0) sha256=b35258865c2e31134c5ecb708beaaf6772adf9d5efae28e93e99260877b09356
205
- parser (3.3.12.0) sha256=21a6d7f755d5a24dfbdc6e6b772e4e879a52e7631a88bc5a3a134606052c9828
206
- pdfrb (0.6.0)
207
- prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
208
- racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
209
- rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
210
- rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
211
- regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
212
- rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
213
- rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
214
- rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
215
- rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
216
- rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
217
- rubocop (1.88.2) sha256=8def251c90cd955feb4daa3edc0ab56893250c4ce90ef81e6c80c03f9a939bbf
218
- rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
219
- rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834
220
- rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d
221
- rubocop-rspec (3.10.2) sha256=0b3e2ecc592cd10ecbf0095bb58d1e357905276e069643523cc19eb7495f65e2
222
- ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
223
- rubyzip (2.4.1) sha256=8577c88edc1fde8935eb91064c5cb1aef9ad5494b940cf19c775ee833e075615
224
- simplecov (1.0.3) sha256=38ef0514f16ae7562f0d0f4df02610071115103d301b6de7dacbcc000082e39b
225
- strscan (3.1.8) sha256=aae2db611a225559f21ffbb71765c9a4e60fd262534a9ea84f4f11c7f32f679e
226
- table_tennis (1.0.0) sha256=955f76ca4debd42ee88682af8d4554a74d533c89de4f1581bc37855b15faa956
227
- thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
228
- unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
229
- unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
230
- unicode-name (1.14.0) sha256=b350dcdeb503748c8ad05c472e8078570fbf3231a73be53431c15db10bbedbdd
231
- unicode-types (1.11.0) sha256=81d1201273260fa89b85471e7eebb93a51bb4e5f078a525508dcae7835d176f9
232
- yard (0.9.45) sha256=52e211493f7cb8a3ebf7e104a25a1e73937a3103092545d34cb88fafebb3dc51
233
-
234
- BUNDLED WITH
235
- 4.0.16