mn-requirements 0.5.5 → 0.5.7
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/lib/metanorma/modspec/isodoc.rb +1 -1
- data/lib/metanorma/modspec/log.rb +22 -0
- data/lib/metanorma/modspec/validate.rb +28 -33
- data/lib/metanorma/requirements/version.rb +1 -1
- data/mn-requirements.gemspec +4 -4
- metadata +13 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 18e898632371c762fb1fecbf11b5746233c0b0b35c04af5f41bf0b1ead898acf
|
|
4
|
+
data.tar.gz: 6174c4750e6293ed4fea72a013836dc3bc1d6170a76ff7be42f48c8dbfcc83fa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37233d9b1276f585b410b32d43da5f34d8f44b70cdc82ec61f5248ce841247e2bdea820b7a1273545b71b62c72250d9fee2d3bff8eb93c582d3c9424f814643f
|
|
7
|
+
data.tar.gz: 4bd622188beef29a71f8d8071ebf8a28a94d087475b5ff46ae3c01c396f008ad9b4cba501160a6cdaf69b42d6b0bcd04fc54130dcbfcb43f492a5d67b4a9af9b
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Metanorma
|
|
2
|
+
class Requirements
|
|
3
|
+
class Modspec
|
|
4
|
+
MODSPEC_LOG_MESSAGES = {
|
|
5
|
+
# rubocop:disable Naming/VariableNumber
|
|
6
|
+
"MODSPEC_1": { category: "Requirements",
|
|
7
|
+
error: "Requirements linkage: %s %s has no corresponding %s",
|
|
8
|
+
severity: 2 },
|
|
9
|
+
"MODSPEC_2": { category: "Requirements",
|
|
10
|
+
error: "Requirements linkage: %s %s points to %s %s outside this document",
|
|
11
|
+
severity: 2 },
|
|
12
|
+
"MODSPEC_3": { category: "Requirements",
|
|
13
|
+
error: "Modspec identifier %s is used more than once",
|
|
14
|
+
severity: 0 },
|
|
15
|
+
"MODSPEC_4": { category: "Requirements",
|
|
16
|
+
error: "Cycle in Modspec linkages through %s: %s",
|
|
17
|
+
severity: 2 },
|
|
18
|
+
}.freeze
|
|
19
|
+
# rubocop:enable Naming/VariableNumber
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
require "tsort"
|
|
2
|
+
require_relative "log"
|
|
2
3
|
|
|
3
4
|
module Metanorma
|
|
4
5
|
class Requirements
|
|
5
6
|
class Modspec < Default
|
|
6
7
|
def validate(reqt, log)
|
|
7
8
|
@log ||= log
|
|
9
|
+
@log&.add_msg(MODSPEC_LOG_MESSAGES)
|
|
8
10
|
@ids ||= reqt_links(reqt.document)
|
|
9
11
|
reqt_cycles_validate
|
|
10
12
|
reqt_link_validate(reqt)
|
|
@@ -47,17 +49,13 @@ module Metanorma
|
|
|
47
49
|
}.freeze
|
|
48
50
|
|
|
49
51
|
def log_reqt(reqt, leftclass, rightclass)
|
|
50
|
-
@log.add("
|
|
51
|
-
|
|
52
|
-
MSG
|
|
53
|
-
)
|
|
52
|
+
@log.add("MODSPEC_1", reqt[:elem],
|
|
53
|
+
params: [CLASS2LABEL[leftclass.to_sym], reqt[:label] || reqt[:id], CLASS2LABEL[rightclass.to_sym]])
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def log_reqt2(reqt, leftclass, target, rightclass)
|
|
57
|
-
@log.add("
|
|
58
|
-
|
|
59
|
-
MSG
|
|
60
|
-
)
|
|
57
|
+
@log.add("MODSPEC_2", reqt[:elem],
|
|
58
|
+
params: [CLASS2LABEL[leftclass], reqt[:label] || reqt[:id], CLASS2LABEL[rightclass], target])
|
|
61
59
|
end
|
|
62
60
|
|
|
63
61
|
def reqt_to_dependency(reqt)
|
|
@@ -71,10 +69,11 @@ module Metanorma
|
|
|
71
69
|
|
|
72
70
|
def reqt_to_conformance(reqt, reqtclass, confclass)
|
|
73
71
|
return unless type2validate(reqt) == reqtclass
|
|
72
|
+
|
|
74
73
|
r = @ids[:id][reqt["id"]]
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
r[:label] && @ids[:class][confclass]&.any? do |x|
|
|
75
|
+
x[:subject].include?(r[:label])
|
|
76
|
+
end and return
|
|
78
77
|
log_reqt(r, reqtclass, confclass)
|
|
79
78
|
end
|
|
80
79
|
|
|
@@ -82,9 +81,9 @@ module Metanorma
|
|
|
82
81
|
return unless type2validate(reqt) == confclass
|
|
83
82
|
|
|
84
83
|
r = @ids[:id][reqt["id"]]
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
r[:subject] && @ids[:class][reqtclass]&.any? do |x|
|
|
85
|
+
r[:subject].include?(x[:label])
|
|
86
|
+
end and return
|
|
88
87
|
log_reqt(r, confclass, reqtclass)
|
|
89
88
|
end
|
|
90
89
|
|
|
@@ -97,12 +96,11 @@ module Metanorma
|
|
|
97
96
|
end
|
|
98
97
|
|
|
99
98
|
def children_to_class(reqt, childclass, parentclass)
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
type2validate(reqt) == childclass or return
|
|
102
100
|
r = @ids[:id][reqt["id"]]
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
r[:label] && @ids[:class][parentclass]&.any? do |x|
|
|
102
|
+
x[:child].include?(r[:label])
|
|
103
|
+
end and return
|
|
106
104
|
log_reqt(r, childclass, parentclass)
|
|
107
105
|
end
|
|
108
106
|
|
|
@@ -123,11 +121,9 @@ module Metanorma
|
|
|
123
121
|
end
|
|
124
122
|
|
|
125
123
|
def reqt_links1_label(reqt, hash, struct)
|
|
126
|
-
|
|
127
|
-
|
|
124
|
+
struct[:label] or return hash
|
|
128
125
|
if hash[:label][struct[:label]]
|
|
129
|
-
|
|
130
|
-
@log.add("Requirements", reqt, msg, severity: 0)
|
|
126
|
+
@log.add("MODSPEC_3", reqt, params: [struct[:label]])
|
|
131
127
|
end
|
|
132
128
|
hash[:label][struct[:label]] = reqt["id"]
|
|
133
129
|
hash
|
|
@@ -160,22 +156,21 @@ module Metanorma
|
|
|
160
156
|
end
|
|
161
157
|
|
|
162
158
|
def reqt_cycles_validate1(link)
|
|
163
|
-
arr =
|
|
164
|
-
arr.link = link
|
|
159
|
+
arr = reqt_cycles_validate1_prep(link)
|
|
165
160
|
TSort.each_strongly_connected_component(
|
|
166
161
|
lambda { |&b| arr.tsort_each_node(&b) },
|
|
167
162
|
lambda { |n, &b| arr.tsort_each_child(n, &b) },
|
|
168
|
-
) do |
|
|
169
|
-
|
|
170
|
-
|
|
163
|
+
) do |path|
|
|
164
|
+
path.size == 1 and next
|
|
165
|
+
@log.add("MODSPEC_4", nil,
|
|
166
|
+
params: [link, (path << path.first).join(" => ")])
|
|
171
167
|
end
|
|
172
168
|
end
|
|
173
169
|
|
|
174
|
-
def
|
|
175
|
-
@
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
)
|
|
170
|
+
def reqt_cycles_validate1_prep(link)
|
|
171
|
+
arr = TSHash.new(@ids[:id].values)
|
|
172
|
+
arr.link = link
|
|
173
|
+
arr
|
|
179
174
|
end
|
|
180
175
|
|
|
181
176
|
class TSHash
|
data/mn-requirements.gemspec
CHANGED
|
@@ -26,9 +26,9 @@ Gem::Specification.new do |spec|
|
|
|
26
26
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
|
27
27
|
|
|
28
28
|
# precise version is on relaton-render
|
|
29
|
-
spec.add_dependency "isodoc-i18n", ">= 1.
|
|
30
|
-
spec.add_dependency "metanorma-utils", ">= 0.
|
|
31
|
-
spec.add_dependency "relaton-render", ">= 0.
|
|
29
|
+
spec.add_dependency "isodoc-i18n", ">= 1.2.0"
|
|
30
|
+
spec.add_dependency "metanorma-utils", ">= 2.0.0"
|
|
31
|
+
spec.add_dependency "relaton-render", ">= 1.0.0"
|
|
32
32
|
|
|
33
33
|
spec.add_development_dependency "debug"
|
|
34
34
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
|
@@ -42,5 +42,5 @@ spec.add_development_dependency "rubocop-performance"
|
|
|
42
42
|
spec.add_development_dependency "sassc-embedded", "~> 1"
|
|
43
43
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
|
44
44
|
spec.add_development_dependency "timecop", "~> 0.9"
|
|
45
|
-
spec.add_development_dependency "canon"
|
|
45
|
+
spec.add_development_dependency "canon", "= 0.1.3"
|
|
46
46
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mn-requirements
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-11-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: isodoc-i18n
|
|
@@ -16,42 +16,42 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.
|
|
19
|
+
version: 1.2.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.
|
|
26
|
+
version: 1.2.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: metanorma-utils
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.
|
|
33
|
+
version: 2.0.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0.
|
|
40
|
+
version: 2.0.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: relaton-render
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.
|
|
47
|
+
version: 1.0.0
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.
|
|
54
|
+
version: 1.0.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: debug
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -224,16 +224,16 @@ dependencies:
|
|
|
224
224
|
name: canon
|
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
|
226
226
|
requirements:
|
|
227
|
-
- -
|
|
227
|
+
- - '='
|
|
228
228
|
- !ruby/object:Gem::Version
|
|
229
|
-
version:
|
|
229
|
+
version: 0.1.3
|
|
230
230
|
type: :development
|
|
231
231
|
prerelease: false
|
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
|
233
233
|
requirements:
|
|
234
|
-
- -
|
|
234
|
+
- - '='
|
|
235
235
|
- !ruby/object:Gem::Version
|
|
236
|
-
version:
|
|
236
|
+
version: 0.1.3
|
|
237
237
|
description: 'Requirements processing and rendering according to different models
|
|
238
238
|
|
|
239
239
|
'
|
|
@@ -265,6 +265,7 @@ files:
|
|
|
265
265
|
- lib/metanorma/default/xrefs.rb
|
|
266
266
|
- lib/metanorma/modspec/cleanup.rb
|
|
267
267
|
- lib/metanorma/modspec/isodoc.rb
|
|
268
|
+
- lib/metanorma/modspec/log.rb
|
|
268
269
|
- lib/metanorma/modspec/modspec.rb
|
|
269
270
|
- lib/metanorma/modspec/reqt_label.rb
|
|
270
271
|
- lib/metanorma/modspec/table_cleanup.rb
|