suma 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +6 -0
- data/.rubocop.yml +8 -0
- data/Gemfile +9 -5
- data/lib/suma/cli/convert_jsdai.rb +2 -4
- data/lib/suma/express_schema.rb +2 -2
- data/lib/suma/jsdai/figure.rb +5 -10
- data/lib/suma/jsdai/figure_image.rb +1 -2
- data/lib/suma/null_cache.rb +11 -0
- data/lib/suma/schema_cache.rb +66 -0
- data/lib/suma/schema_collection.rb +9 -4
- data/lib/suma/schema_exporter.rb +38 -6
- data/lib/suma/svg_quality/formatters.rb +2 -2
- data/lib/suma/version.rb +1 -1
- data/lib/suma.rb +2 -0
- data/suma.gemspec +2 -2
- metadata +14 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: bd20e6823c86b989284cda93b4edf57c6ff7d16520e4a35fb111ee7df94c45e2
|
|
4
|
+
data.tar.gz: cd8763148b716e7ee6b226f4306fb4f33c825b9d6139978fb8f633496164b319
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ceb4f07c65cf174b04c0511d0f5cf9c0b753de5d1e55cf14c87d98276f4c11518d6c9d3367c4804eb7a7c0368f08ece16f36dc26fe07e6492ec24d07fc20ea85
|
|
7
|
+
data.tar.gz: d8f38fa09779fb06f5c8d6d0da109e6f3edf11be8dfb00b382bb0aba5a1c5e03cb4da981e8ea45a06cd6bebec093a6e50fa6acdb10d19013c94d517e5a286e1b
|
|
@@ -14,6 +14,12 @@ on:
|
|
|
14
14
|
repository_dispatch:
|
|
15
15
|
types: [ do-release ]
|
|
16
16
|
|
|
17
|
+
# Least-privilege ceiling for the called rubygems-release.yml: its release job
|
|
18
|
+
# needs contents:write (git tag push) and id-token:write (OIDC Trusted Publishing).
|
|
19
|
+
permissions:
|
|
20
|
+
contents: write
|
|
21
|
+
id-token: write
|
|
22
|
+
|
|
17
23
|
jobs:
|
|
18
24
|
release:
|
|
19
25
|
uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
|
data/.rubocop.yml
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
# See https://github.com/metanorma/cimas
|
|
3
3
|
inherit_from:
|
|
4
4
|
- https://raw.githubusercontent.com/riboseinc/oss-guides/main/ci/rubocop.yml
|
|
5
|
+
# .rubocop_todo.yml MUST be the last entry. inherit_from is last-wins:
|
|
6
|
+
# if listed before oss-guides, the shared config's stricter Metrics/
|
|
7
|
+
# (MethodLength, BlockLength, etc.) rules override the todo's per-file
|
|
8
|
+
# grandfathering, and the todo becomes inert on those cops. Empirically
|
|
9
|
+
# verified on suma 2026-07-06: with todo listed first, 34 Metrics/* offenses
|
|
10
|
+
# remained; moved last, cleared. Every gem in the metanorma-org fleet
|
|
11
|
+
# already ships a `.rubocop_todo.yml` on its live tree (audited 2026-07-06,
|
|
12
|
+
# 54/54 have it), so this reference is safe to emit unconditionally.
|
|
5
13
|
- .rubocop_todo.yml
|
|
6
14
|
|
|
7
15
|
# Rubocop plugins enabled centrally so every metanorma-org gem picks them up
|
data/Gemfile
CHANGED
|
@@ -6,13 +6,17 @@ source "https://rubygems.org"
|
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
8
|
gem "canon"
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
# metanorma resolves from the gemspec constraint (~> 2.3) to the released gem.
|
|
10
|
+
# The staged-build render options (preserve_unresolved:/artifact_store_dir:/
|
|
11
|
+
# reinflate:, metanorma#578) landed in metanorma 2.5.0, now on rubygems, so the
|
|
12
|
+
# former feature-branch override (feature/collection-incremental-resumable) is
|
|
13
|
+
# dropped: CI builds against a stable released metanorma, not a floating branch.
|
|
14
|
+
# Flavor gem needed to compile the dummy-collection integration fixture
|
|
15
|
+
# (spec/fixtures/dummy_collection, suma#107).
|
|
16
|
+
gem "metanorma-iso"
|
|
14
17
|
# gem "metanorma-plugin-lutaml", github: "metanorma/metanorma-plugin-lutaml", branch: "main"
|
|
15
18
|
# gem "metanorma-standoc", github: "metanorma/metanorma-standoc", branch: "main"
|
|
19
|
+
# gem "expressir", github: "lutaml/expressir", branch: "main"
|
|
16
20
|
gem "nokogiri"
|
|
17
21
|
gem "openssl", "~> 3.0"
|
|
18
22
|
gem "rake"
|
|
@@ -10,7 +10,7 @@ module Suma
|
|
|
10
10
|
desc "convert_jsdai XML_FILE IMAGE_FILE OUTPUT_DIR",
|
|
11
11
|
"Convert JSDAI XML and image files to SVG and EXP files"
|
|
12
12
|
|
|
13
|
-
# rubocop:disable Metrics/MethodLength
|
|
13
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
14
14
|
def convert_jsdai(xml_file, image_file, output_dir)
|
|
15
15
|
xml_file = File.expand_path(xml_file)
|
|
16
16
|
image_file = File.expand_path(image_file)
|
|
@@ -34,11 +34,10 @@ module Suma
|
|
|
34
34
|
|
|
35
35
|
run(xml_file, image_file, output_dir)
|
|
36
36
|
end
|
|
37
|
-
# rubocop:enable Metrics/MethodLength
|
|
38
37
|
|
|
39
38
|
private
|
|
40
39
|
|
|
41
|
-
# rubocop:disable Metrics/MethodLength
|
|
40
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
42
41
|
def run(xml_file, image_file, output_dir)
|
|
43
42
|
FileUtils.mkdir_p(output_dir)
|
|
44
43
|
|
|
@@ -57,7 +56,6 @@ module Suma
|
|
|
57
56
|
|
|
58
57
|
puts "Conversion complete."
|
|
59
58
|
end
|
|
60
|
-
# rubocop:enable Metrics/MethodLength
|
|
61
59
|
end
|
|
62
60
|
end
|
|
63
61
|
end
|
data/lib/suma/express_schema.rb
CHANGED
|
@@ -64,7 +64,7 @@ module Suma
|
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
def to_plain
|
|
67
|
-
parsed.to_s
|
|
67
|
+
parsed.to_s
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
def filename_plain
|
|
@@ -92,7 +92,7 @@ module Suma
|
|
|
92
92
|
|
|
93
93
|
FileUtils.mkdir_p(File.dirname(filename_plain))
|
|
94
94
|
|
|
95
|
-
content = with_annotations ? parsed.
|
|
95
|
+
content = with_annotations ? parsed.format(no_remarks: false) : to_plain
|
|
96
96
|
File.write(filename_plain, content)
|
|
97
97
|
end
|
|
98
98
|
|
data/lib/suma/jsdai/figure.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Suma
|
|
|
12
12
|
@xml_file = xml_file
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
# rubocop:disable Metrics/MethodLength
|
|
15
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
16
16
|
def to_svg
|
|
17
17
|
width, height = @image.dimensions
|
|
18
18
|
svg_parts = []
|
|
@@ -46,9 +46,8 @@ module Suma
|
|
|
46
46
|
svg_parts << "\n\t\t</svg>"
|
|
47
47
|
svg_parts.join
|
|
48
48
|
end
|
|
49
|
-
# rubocop:enable Metrics/MethodLength
|
|
50
49
|
|
|
51
|
-
# rubocop:disable Metrics/MethodLength
|
|
50
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
52
51
|
def to_exp
|
|
53
52
|
basename = File.basename(@xml_file, ".xml")
|
|
54
53
|
schema_name = extract_schema_name(basename)
|
|
@@ -73,11 +72,10 @@ module Suma
|
|
|
73
72
|
exp_parts << "\n*)\n"
|
|
74
73
|
exp_parts.join
|
|
75
74
|
end
|
|
76
|
-
# rubocop:enable Metrics/MethodLength
|
|
77
75
|
|
|
78
76
|
private
|
|
79
77
|
|
|
80
|
-
# rubocop:disable Metrics/MethodLength
|
|
78
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
81
79
|
def generate_shape_element(area)
|
|
82
80
|
shape_attrs = []
|
|
83
81
|
shape_attrs << 'onmouseout="this.style.opacity=0" '
|
|
@@ -108,7 +106,6 @@ module Suma
|
|
|
108
106
|
"<rect #{shape_attrs.join}"
|
|
109
107
|
end
|
|
110
108
|
end
|
|
111
|
-
# rubocop:enable Metrics/MethodLength
|
|
112
109
|
|
|
113
110
|
def parse_rect_coords(coords_str)
|
|
114
111
|
parts = coords_str.split(",").map(&:to_i)
|
|
@@ -140,7 +137,7 @@ module Suma
|
|
|
140
137
|
end
|
|
141
138
|
end
|
|
142
139
|
|
|
143
|
-
# rubocop:disable Metrics/MethodLength
|
|
140
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
144
141
|
def extract_schema_name(basename)
|
|
145
142
|
# For module schemas like "armexpg1" with module="activity"
|
|
146
143
|
# Result should be "Activity_arm"
|
|
@@ -159,9 +156,8 @@ module Suma
|
|
|
159
156
|
basename.sub(/expg\d+$/, "")
|
|
160
157
|
end
|
|
161
158
|
end
|
|
162
|
-
# rubocop:enable Metrics/MethodLength
|
|
163
159
|
|
|
164
|
-
# rubocop:disable Metrics/MethodLength
|
|
160
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
165
161
|
def extract_target_from_href(href)
|
|
166
162
|
# Extract the target from href
|
|
167
163
|
# Type 1: "../../resources/action_schema/action_schema.xml#action_schema.as_name_attribute_select"
|
|
@@ -201,7 +197,6 @@ module Suma
|
|
|
201
197
|
href
|
|
202
198
|
end
|
|
203
199
|
end
|
|
204
|
-
# rubocop:enable Metrics/MethodLength
|
|
205
200
|
end
|
|
206
201
|
end
|
|
207
202
|
end
|
|
@@ -58,7 +58,7 @@ module Suma
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
# rubocop:disable Metrics/MethodLength
|
|
61
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
62
62
|
def extract_jpeg_dimensions
|
|
63
63
|
# Read JPEG file to extract dimensions
|
|
64
64
|
# JPEG uses markers, we look for SOF (Start of Frame) markers
|
|
@@ -90,7 +90,6 @@ module Suma
|
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
|
-
# rubocop:enable Metrics/MethodLength
|
|
94
93
|
end
|
|
95
94
|
end
|
|
96
95
|
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Suma
|
|
4
|
+
# Null-object cache used when schema caching is disabled: every fetch misses
|
|
5
|
+
# and nothing is stored, so callers need no conditional guards around a cache.
|
|
6
|
+
class NullCache
|
|
7
|
+
def fetch(*, **) = nil
|
|
8
|
+
|
|
9
|
+
def store(*, **) = nil
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "digest"
|
|
4
|
+
require "fileutils"
|
|
5
|
+
|
|
6
|
+
module Suma
|
|
7
|
+
# Content-addressed, on-disk cache of *generated* EXPRESS schema output --
|
|
8
|
+
# the plain (annotations stripped, ISO copyright kept) or annotated `.exp`
|
|
9
|
+
# text produced from a source schema.
|
|
10
|
+
#
|
|
11
|
+
# The cache key composes the source bytes, the Expressir version, and the
|
|
12
|
+
# annotation mode. Those three fully determine the output (Expressir's
|
|
13
|
+
# serialiser is deterministic), so a hit is guaranteed byte-identical to a
|
|
14
|
+
# fresh generation -- and the store can be shared across builds and git
|
|
15
|
+
# worktrees: identical source content hits regardless of which build wrote it.
|
|
16
|
+
#
|
|
17
|
+
# Supersedes the parsed-AST `Marshal` approach of metanorma/suma#35, which was
|
|
18
|
+
# brittle across Ruby/Expressir versions and cached the wrong artifact (the
|
|
19
|
+
# parse, not the output).
|
|
20
|
+
class SchemaCache
|
|
21
|
+
def initialize(directory)
|
|
22
|
+
@directory = directory.to_s
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The cached output for +source+, or +nil+ on a miss.
|
|
26
|
+
def fetch(source, annotations:)
|
|
27
|
+
path = entry_path(source, annotations: annotations)
|
|
28
|
+
return unless File.exist?(path)
|
|
29
|
+
|
|
30
|
+
File.read(path, encoding: "UTF-8")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Cache +content+ as the output for +source+. Returns the entry path.
|
|
34
|
+
def store(source, annotations:, content:)
|
|
35
|
+
path = entry_path(source, annotations: annotations)
|
|
36
|
+
FileUtils.mkdir_p(@directory)
|
|
37
|
+
write_atomically(path, content)
|
|
38
|
+
path
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
def entry_path(source, annotations:)
|
|
44
|
+
File.join(@directory, key(source, annotations: annotations))
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def key(source, annotations:)
|
|
48
|
+
mode = annotations ? "annotated" : "plain"
|
|
49
|
+
"#{Digest::SHA256.hexdigest(source)}-#{expressir_version}-#{mode}.exp"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def expressir_version
|
|
53
|
+
@expressir_version ||= Expressir::VERSION
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Write through a sibling temp file and rename, so a concurrent reader never
|
|
57
|
+
# observes a half-written entry.
|
|
58
|
+
def write_atomically(path, content)
|
|
59
|
+
temp = "#{path}.#{Process.pid}.tmp"
|
|
60
|
+
File.write(temp, content, encoding: "UTF-8")
|
|
61
|
+
File.rename(temp, path)
|
|
62
|
+
ensure
|
|
63
|
+
File.delete(temp) if temp && File.exist?(temp)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -7,8 +7,9 @@ module Suma
|
|
|
7
7
|
attr_accessor :config, :schemas, :docs, :output_path_docs,
|
|
8
8
|
:output_path_schemas, :manifest
|
|
9
9
|
|
|
10
|
-
def initialize(config: nil, config_yaml: nil, output_path_docs: nil,
|
|
11
|
-
output_path_schemas: nil, manifest: nil
|
|
10
|
+
def initialize(config: nil, config_yaml: nil, output_path_docs: nil, # rubocop:disable Metrics/ParameterLists
|
|
11
|
+
output_path_schemas: nil, manifest: nil,
|
|
12
|
+
options: { annotations: true })
|
|
12
13
|
@schemas = {}
|
|
13
14
|
@docs = {}
|
|
14
15
|
@schema_name_to_docs = {}
|
|
@@ -19,6 +20,7 @@ module Suma
|
|
|
19
20
|
@config = config
|
|
20
21
|
@config ||= config_yaml && Expressir::SchemaManifest.from_file(config_yaml)
|
|
21
22
|
@manifest = manifest
|
|
23
|
+
@options = options
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
def doc_from_schema_name(schema_name)
|
|
@@ -42,7 +44,7 @@ module Suma
|
|
|
42
44
|
exporter = SchemaExporter.new(
|
|
43
45
|
schemas: schemas.values,
|
|
44
46
|
output_path: @output_path_schemas,
|
|
45
|
-
options:
|
|
47
|
+
options: @options,
|
|
46
48
|
)
|
|
47
49
|
exporter.export
|
|
48
50
|
|
|
@@ -58,9 +60,12 @@ module Suma
|
|
|
58
60
|
end
|
|
59
61
|
|
|
60
62
|
def process_schema(config_schema, template_class)
|
|
63
|
+
category = SchemaCategory.for_schema(
|
|
64
|
+
id: config_schema.id, path: config_schema.path.to_s,
|
|
65
|
+
)
|
|
61
66
|
express = ExpressSchema.new(
|
|
62
67
|
id: config_schema.id, path: config_schema.path.to_s,
|
|
63
|
-
output_path: @output_path_schemas.to_s
|
|
68
|
+
output_path: @output_path_schemas.join(category.directory).to_s
|
|
64
69
|
)
|
|
65
70
|
|
|
66
71
|
compiler = SchemaCompiler.new(
|
data/lib/suma/schema_exporter.rb
CHANGED
|
@@ -23,6 +23,7 @@ module Suma
|
|
|
23
23
|
@schemas = schemas
|
|
24
24
|
@output_path = Pathname.new(output_path).expand_path
|
|
25
25
|
@options = default_options.merge(options)
|
|
26
|
+
@cache = build_cache
|
|
26
27
|
end
|
|
27
28
|
|
|
28
29
|
def export
|
|
@@ -45,19 +46,51 @@ module Suma
|
|
|
45
46
|
end
|
|
46
47
|
|
|
47
48
|
def export_to_directory(schemas)
|
|
48
|
-
schemas.each
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
schemas.each { |schema| export_single_schema(schema) }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Reuse cached plain/annotated output when the schema source is unchanged,
|
|
53
|
+
# otherwise generate it via +save_exp+ and cache the result. The Expressir
|
|
54
|
+
# parse (the cost) happens only on a cache miss. Caching is an orchestration
|
|
55
|
+
# concern, so it lives here in the service rather than in the ExpressSchema
|
|
56
|
+
# data model.
|
|
57
|
+
def export_single_schema(schema)
|
|
58
|
+
source = File.read(schema.path.to_s, encoding: "UTF-8")
|
|
59
|
+
cached = @cache.fetch(source, annotations: options[:annotations])
|
|
60
|
+
cached ? write_cached(schema, cached) : generate_and_cache(schema, source)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def generate_and_cache(schema, source)
|
|
64
|
+
schema.save_exp(with_annotations: options[:annotations])
|
|
65
|
+
content = File.read(schema.filename_plain)
|
|
66
|
+
@cache.store(source, annotations: options[:annotations], content: content)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def write_cached(schema, content)
|
|
70
|
+
relative = Pathname.new(schema.filename_plain).relative_path_from(Dir.pwd)
|
|
71
|
+
Utils.log "Save schema (cached): #{relative}"
|
|
72
|
+
FileUtils.mkdir_p(File.dirname(schema.filename_plain))
|
|
73
|
+
File.write(schema.filename_plain, content)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# A shared, content-addressed cache when a cache directory is configured
|
|
77
|
+
# (via the +:cache_dir+ option or the SUMA_SCHEMA_CACHE_DIR environment
|
|
78
|
+
# variable), otherwise a null cache (caching disabled).
|
|
79
|
+
def build_cache
|
|
80
|
+
directory = options[:cache_dir] || ENV.fetch("SUMA_SCHEMA_CACHE_DIR", nil)
|
|
81
|
+
return NullCache.new if directory.nil? || directory.empty?
|
|
82
|
+
|
|
83
|
+
SchemaCache.new(directory)
|
|
51
84
|
end
|
|
52
85
|
|
|
53
|
-
# rubocop:disable Metrics/MethodLength
|
|
86
|
+
# rubocop:disable-next Metrics/MethodLength
|
|
54
87
|
def create_zip_archive
|
|
55
88
|
require "zip"
|
|
56
89
|
|
|
57
90
|
zip_path = "#{output_path}.zip"
|
|
58
91
|
Utils.log "Creating ZIP archive: #{zip_path}"
|
|
59
92
|
|
|
60
|
-
Zip::File.open(zip_path,
|
|
93
|
+
Zip::File.open(zip_path, create: true) do |zipfile|
|
|
61
94
|
Dir.glob("#{output_path}/**/*").each do |file|
|
|
62
95
|
next if File.directory?(file)
|
|
63
96
|
|
|
@@ -68,6 +101,5 @@ module Suma
|
|
|
68
101
|
|
|
69
102
|
Utils.log "ZIP archive created: #{zip_path}"
|
|
70
103
|
end
|
|
71
|
-
# rubocop:enable Metrics/MethodLength
|
|
72
104
|
end
|
|
73
105
|
end
|
|
@@ -5,8 +5,8 @@ module Suma
|
|
|
5
5
|
module Formatters
|
|
6
6
|
autoload :TerminalFormatter,
|
|
7
7
|
"suma/svg_quality/formatters/terminal_formatter"
|
|
8
|
-
autoload :JsonFormatter,
|
|
9
|
-
autoload :YamlFormatter,
|
|
8
|
+
autoload :JsonFormatter, "suma/svg_quality/formatters/json_formatter"
|
|
9
|
+
autoload :YamlFormatter, "suma/svg_quality/formatters/yaml_formatter"
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
end
|
data/lib/suma/version.rb
CHANGED
data/lib/suma.rb
CHANGED
|
@@ -17,7 +17,9 @@ module Suma
|
|
|
17
17
|
autoload :LinkValidator, "suma/link_validator"
|
|
18
18
|
autoload :ManifestTraverser, "suma/manifest_traverser"
|
|
19
19
|
autoload :NoteProcessor, "suma/note_processor"
|
|
20
|
+
autoload :NullCache, "suma/null_cache"
|
|
20
21
|
autoload :RegisterManifestGenerator, "suma/register_manifest_generator"
|
|
22
|
+
autoload :SchemaCache, "suma/schema_cache"
|
|
21
23
|
autoload :SchemaCategory, "suma/schema_category"
|
|
22
24
|
autoload :SchemaCollection, "suma/schema_collection"
|
|
23
25
|
autoload :SchemaComparer, "suma/schema_comparer"
|
data/suma.gemspec
CHANGED
|
@@ -33,13 +33,13 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
|
|
|
33
33
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
34
34
|
spec.require_paths = ["lib"]
|
|
35
35
|
|
|
36
|
-
spec.add_dependency "expressir"
|
|
36
|
+
spec.add_dependency "expressir"
|
|
37
37
|
spec.add_dependency "glossarist", "~> 2.8", ">= 2.8.7"
|
|
38
38
|
spec.add_dependency "lutaml-model", "~> 0.8.0"
|
|
39
39
|
spec.add_dependency "metanorma", "~> 2.3"
|
|
40
40
|
spec.add_dependency "plurimath"
|
|
41
41
|
spec.add_dependency "ruby-progressbar"
|
|
42
|
-
spec.add_dependency "rubyzip"
|
|
42
|
+
spec.add_dependency "rubyzip"
|
|
43
43
|
spec.add_dependency "svg_conform", "~> 0.1.0"
|
|
44
44
|
spec.add_dependency "table_tennis"
|
|
45
45
|
spec.add_dependency "thor", ">= 0.20"
|
metadata
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: suma
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: exe
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2026-09-18 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
14
|
name: expressir
|
|
@@ -15,20 +16,14 @@ dependencies:
|
|
|
15
16
|
requirements:
|
|
16
17
|
- - ">="
|
|
17
18
|
- !ruby/object:Gem::Version
|
|
18
|
-
version:
|
|
19
|
-
- - "~>"
|
|
20
|
-
- !ruby/object:Gem::Version
|
|
21
|
-
version: '2.1'
|
|
19
|
+
version: '0'
|
|
22
20
|
type: :runtime
|
|
23
21
|
prerelease: false
|
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
23
|
requirements:
|
|
26
24
|
- - ">="
|
|
27
25
|
- !ruby/object:Gem::Version
|
|
28
|
-
version:
|
|
29
|
-
- - "~>"
|
|
30
|
-
- !ruby/object:Gem::Version
|
|
31
|
-
version: '2.1'
|
|
26
|
+
version: '0'
|
|
32
27
|
- !ruby/object:Gem::Dependency
|
|
33
28
|
name: glossarist
|
|
34
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -109,16 +104,16 @@ dependencies:
|
|
|
109
104
|
name: rubyzip
|
|
110
105
|
requirement: !ruby/object:Gem::Requirement
|
|
111
106
|
requirements:
|
|
112
|
-
- - "
|
|
107
|
+
- - ">="
|
|
113
108
|
- !ruby/object:Gem::Version
|
|
114
|
-
version: '
|
|
109
|
+
version: '0'
|
|
115
110
|
type: :runtime
|
|
116
111
|
prerelease: false
|
|
117
112
|
version_requirements: !ruby/object:Gem::Requirement
|
|
118
113
|
requirements:
|
|
119
|
-
- - "
|
|
114
|
+
- - ">="
|
|
120
115
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: '
|
|
116
|
+
version: '0'
|
|
122
117
|
- !ruby/object:Gem::Dependency
|
|
123
118
|
name: svg_conform
|
|
124
119
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -216,8 +211,10 @@ files:
|
|
|
216
211
|
- lib/suma/link_validator/step.rb
|
|
217
212
|
- lib/suma/manifest_traverser.rb
|
|
218
213
|
- lib/suma/note_processor.rb
|
|
214
|
+
- lib/suma/null_cache.rb
|
|
219
215
|
- lib/suma/processor.rb
|
|
220
216
|
- lib/suma/register_manifest_generator.rb
|
|
217
|
+
- lib/suma/schema_cache.rb
|
|
221
218
|
- lib/suma/schema_category.rb
|
|
222
219
|
- lib/suma/schema_collection.rb
|
|
223
220
|
- lib/suma/schema_comparer.rb
|
|
@@ -253,6 +250,7 @@ licenses:
|
|
|
253
250
|
- BSD-2-Clause
|
|
254
251
|
metadata:
|
|
255
252
|
rubygems_mfa_required: 'true'
|
|
253
|
+
post_install_message:
|
|
256
254
|
rdoc_options: []
|
|
257
255
|
require_paths:
|
|
258
256
|
- lib
|
|
@@ -267,7 +265,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
267
265
|
- !ruby/object:Gem::Version
|
|
268
266
|
version: '0'
|
|
269
267
|
requirements: []
|
|
270
|
-
rubygems_version:
|
|
268
|
+
rubygems_version: 3.5.22
|
|
269
|
+
signing_key:
|
|
271
270
|
specification_version: 4
|
|
272
271
|
summary: Utility for SUMA (STEP Unified Model-Based Standards Architecture)
|
|
273
272
|
test_files: []
|