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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58cdfecc41db4908d909bbea682bbc79c298c16841018e58fb76c0d92d8183fc
4
- data.tar.gz: a9a57c6fa6ae5fec7f6f14b7b7d3d7948fed1f4da9b4df71df9f9a8e4bff0fa7
3
+ metadata.gz: 18e898632371c762fb1fecbf11b5746233c0b0b35c04af5f41bf0b1ead898acf
4
+ data.tar.gz: 6174c4750e6293ed4fea72a013836dc3bc1d6170a76ff7be42f48c8dbfcc83fa
5
5
  SHA512:
6
- metadata.gz: a3e95d50c33122bda50a4535d62646131a8a42a270a9c4a8ad1e5604471d4ae3b31cdac269989557a659c4bff7a5ce603a698d51c7abe7e8a60b943df79bd17a
7
- data.tar.gz: a407485c15d7cef0e0e0ffe0f94bfa8c88ce567f900865836f6d26788875239f5fc7210e5fa33f9f44b8a416cdecc2781db5e4b34e5683409bc0c9cb85b41b66
6
+ metadata.gz: 37233d9b1276f585b410b32d43da5f34d8f44b70cdc82ec61f5248ce841247e2bdea820b7a1273545b71b62c72250d9fee2d3bff8eb93c582d3c9424f814643f
7
+ data.tar.gz: 4bd622188beef29a71f8d8071ebf8a28a94d087475b5ff46ae3c01c396f008ad9b4cba501160a6cdaf69b42d6b0bcd04fc54130dcbfcb43f492a5d67b4a9af9b
@@ -27,7 +27,7 @@ module Metanorma
27
27
  out[x] = node[x] if node[x]
28
28
  end
29
29
  node["original-id"] = node["id"]
30
- node.delete("id")
30
+ node["id"] = "_#{UUIDTools::UUID.random_create}"
31
31
  out["type"] = recommend_class(node)
32
32
  recommendation_component_labels(node)
33
33
  out
@@ -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("Requirements", reqt[:elem], <<~MSG
51
- #{CLASS2LABEL[leftclass.to_sym]} #{reqt[:label] || reqt[:id]} has no corresponding #{CLASS2LABEL[rightclass.to_sym]}
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("Requirements", reqt[:elem], <<~MSG
58
- #{CLASS2LABEL[leftclass]} #{reqt[:label] || reqt[:id]} points to #{CLASS2LABEL[rightclass]} #{target} outside this document
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
- (r[:label] && @ids[:class][confclass]&.any? do |x|
76
- x[:subject].include?(r[:label])
77
- end) and return
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
- (r[:subject] && @ids[:class][reqtclass]&.any? do |x|
86
- r[:subject].include?(x[:label])
87
- end) and return
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
- return unless type2validate(reqt) == childclass
101
-
99
+ type2validate(reqt) == childclass or return
102
100
  r = @ids[:id][reqt["id"]]
103
- (r[:label] && @ids[:class][parentclass]&.any? do |x|
104
- x[:child].include?(r[:label])
105
- end) and return
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
- return hash unless struct[:label]
127
-
124
+ struct[:label] or return hash
128
125
  if hash[:label][struct[:label]]
129
- msg = "Modspec identifier #{struct[:label]} is used more than once"
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 = TSHash.new(@ids[:id].values)
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 |c|
169
- c.size == 1 and next
170
- log_cycle(link, c)
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 log_cycle(link, path)
175
- @log.add("Requirements", nil, <<~MSG
176
- Cycle in Modspec linkages through #{link}: #{(path << path.first).join(' => ')}
177
- MSG
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
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  class Requirements
3
- VERSION = "0.5.5".freeze
3
+ VERSION = "0.5.7".freeze
4
4
  end
5
5
  end
@@ -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.1.0"
30
- spec.add_dependency "metanorma-utils", ">= 0.10.0"
31
- spec.add_dependency "relaton-render", ">= 0.9.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.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-09-30 00:00:00.000000000 Z
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.1.0
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.1.0
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.10.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.10.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.9.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.9.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: '0'
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: '0'
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