mn-requirements 0.2.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed29bf407c16d8890bb04abf9028498f568a8d42cb2d232aab1f2312ccd045c3
4
- data.tar.gz: 7cb6924aa3b79542533047703be36e769b4e69b299c052868232ed81764b45c0
3
+ metadata.gz: ba924dc80c3e45c7164b660a0415fc57f9e504a353eef2520394e10457cdbcc4
4
+ data.tar.gz: 5e365fbe452fc974b49df62dd50f026ebf59138a4a944ae20df769c2072192ca
5
5
  SHA512:
6
- metadata.gz: bb1c844f85032d0fac0c678259ca2983debbbe55f7cbf308d155aac2f7f8169142ec2f838a57c0329dd6f9aa1d007e4040c7e3cf0bdf33205b41b6cdc737e40b
7
- data.tar.gz: 49b72dcb20a45e87f82fa0b64bdc7db99374f2cf2c1c0bb031543cef803306e17e240b015c9a6a120a9714d5f8064dc4d18d72adad71d27e4864f91d24f88778
6
+ metadata.gz: aad5df40295c9009f021eae54be6e57a0976ead82165cd1299eb55587e8d313577be4c9bf06f78a42e2d2868bc568ad3d8de904203034656e9e8902727b079f3
7
+ data.tar.gz: 9a23a9809a2f6d24a1ab1db10409a4fd232076f42e8060d5efa60789454b958f08df548a949e9e2eced622f80a8e8d30b7c34eb1d943cbf2213de5e3e89884f0
@@ -95,7 +95,9 @@ module Metanorma
95
95
  end.join("\n")
96
96
  end
97
97
 
98
- def validate(reqt, log); end
98
+ def validate(_reqt, _log)
99
+ []
100
+ end
99
101
  end
100
102
  end
101
103
  end
@@ -23,7 +23,7 @@ module Metanorma
23
23
 
24
24
  def recommendation_label_xref(elem, label, xrefs, type)
25
25
  id = @reqtlabels[label]
26
- number = xrefs.anchor(id, :xref, false)
26
+ number = xrefs.anchor(id, :modspec, false)
27
27
  number.nil? and return type
28
28
  elem.ancestors("requirement, recommendation, permission").empty? and
29
29
  return number
@@ -73,7 +73,7 @@ module Metanorma
73
73
  docxml.reqt_iter do |r, m|
74
74
  id = r.at(ns("./identifier")) or next
75
75
  m[id.text] =
76
- { id: r["id"], lbl: @xrefs.anchor(r["id"], :xref, false) }
76
+ { id: r["id"], lbl: @xrefs.anchor(r["id"], :modspec, false) }
77
77
  end
78
78
  end
79
79
 
@@ -85,7 +85,7 @@ module Metanorma
85
85
  %w(conformanceclass verification).include?(reqt["type"]) or return
86
86
  subj = reqt_extract_target(reqt)
87
87
  id = reqt.at(ns("./identifier")) or return
88
- lbl = @xrefs.anchor(@reqt_ids[id.text.strip][:id], :xref, false)
88
+ lbl = @xrefs.anchor(@reqt_ids[id.text.strip][:id], :modspec, false)
89
89
  (subj && lbl) or return
90
90
  acc[subj.text] = { lbl: lbl, id: reqt["id"] }
91
91
  end
@@ -121,7 +121,7 @@ module Metanorma
121
121
 
122
122
  def reqt_links_class1(id, parent_reqt, reqt, acc)
123
123
  id1 = reqt.at(ns("./identifier")) or return acc
124
- lbl = @xrefs.anchor(@reqt_ids[id.text.strip][:id], :xref, false)
124
+ lbl = @xrefs.anchor(@reqt_ids[id.text.strip][:id], :modspec, false)
125
125
  lbl or return acc
126
126
  acc[id1.text] = { lbl: lbl, id: parent_reqt["id"] }
127
127
  acc
@@ -4,10 +4,12 @@ module Metanorma
4
4
  class Requirements
5
5
  class Modspec < Default
6
6
  def validate(reqt, log)
7
+ @fatalerrors = []
7
8
  @log ||= log
8
9
  @ids ||= reqt_links(reqt.document)
9
10
  reqt_cycles_validate
10
11
  reqt_link_validate(reqt)
12
+ @fatalerrors
11
13
  end
12
14
 
13
15
  def nested_reqt?(reqt)
@@ -112,17 +114,26 @@ module Metanorma
112
114
  .each_with_object({ id: {}, class: {}, label: {} }) do |r, m|
113
115
  next if nested_reqt?(r)
114
116
 
115
- reqt_links1(r, m)
117
+ reqt_links1(r, m, type2validate(r), reqt_links_struct(r))
116
118
  end
117
119
  end
118
120
 
119
- def reqt_links1(reqt, hash)
120
- type = type2validate(reqt)
121
- a = reqt_links_struct(reqt)
122
- hash[:id][reqt["id"]] = a
121
+ def reqt_links1(reqt, hash, type, struct)
122
+ hash[:id][reqt["id"]] = struct
123
123
  hash[:class][type] ||= []
124
- hash[:class][type] << a
125
- hash[:label][a[:label]] = reqt["id"]
124
+ hash[:class][type] << struct
125
+ reqt_links1_label(reqt, hash, struct)
126
+ end
127
+
128
+ def reqt_links1_label(reqt, hash, struct)
129
+ return hash unless struct[:label]
130
+
131
+ if hash[:label][struct[:label]]
132
+ msg = "Modspec identifier #{struct[:label]} is used more than once"
133
+ @log.add("Requirements", reqt, msg)
134
+ @fatalerrors << msg
135
+ end
136
+ hash[:label][struct[:label]] = reqt["id"]
126
137
  hash
127
138
  end
128
139
 
@@ -72,10 +72,10 @@ module Metanorma
72
72
  def postprocess_anchor_struct(block, anchor)
73
73
  super
74
74
  anchor[:xref_bare] = anchor[:xref]
75
- if l = block.at(ns("./identifier"))&.text
75
+ l = block.at(ns("./identifier")) and
76
76
  anchor[:xref] += l10n(": ") +
77
- "<tt><xref style='id' target='#{block['id']}'>#{l}</xref></tt>"
78
- end
77
+ "<tt><xref style='id' target='#{block['id']}'>#{l.text}</xref></tt>"
78
+ anchor[:modspec] = anchor[:xref]
79
79
  anchor
80
80
  end
81
81
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  class Requirements
3
- VERSION = "0.2.3".freeze
3
+ VERSION = "0.3.1".freeze
4
4
  end
5
5
  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.2.3
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-11 00:00:00.000000000 Z
11
+ date: 2022-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: isodoc-i18n
@@ -250,7 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
250
250
  - !ruby/object:Gem::Version
251
251
  version: '0'
252
252
  requirements: []
253
- rubygems_version: 3.3.7
253
+ rubygems_version: 3.3.26
254
254
  signing_key:
255
255
  specification_version: 4
256
256
  summary: Requirements processing and rendering according to different models