mn-requirements 0.1.4.1 → 0.1.6

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: d626036b19a5d6878dea7341d5d76a0dec9fdd298298517a0fc332b1045faf39
4
- data.tar.gz: 49597201b5b2b0ac782ffb5edec441011f15922aa33b095bc3fd4ed2912a194e
3
+ metadata.gz: 9e3ca9ac70068ad84544ecd69a028aa771675c790affd49f35812b2a8677ffdc
4
+ data.tar.gz: e47bf092f613aa369275f154a9937f5d32c3b88f9cfddf8492a95268c6d3d76c
5
5
  SHA512:
6
- metadata.gz: 8d013a395a330b2a03580e4035ac1970e0606ff0c9fb20efb498e6a0dc923024d89eb86667186f53302a9c37c84f89765ed14f668db7a13995787119136d3d03
7
- data.tar.gz: 1eee3937b804a2bed138fcd719fd80551ea9925eac4025269f98ca8d52e28cbc0bf5fb36c6d0fe22c87d7f0d98510e11c656ecd23d72dbea319d9b1cb74d4599
6
+ metadata.gz: aa55fdb9e247e0c5c22daa72a3ce16e5a953af35bf128cd02782e1a24b261acc0a3bc5ac8eb19db04164b0375d5c6a3d62455eac0eacbb9c1be7e14546e220a1
7
+ data.tar.gz: 58eba09e93a17784d3cf4540e0c90a6dbf8c7e44a364038d3926183acdb842d061e9375b1e07c9e28955eb768e21d4556517fc3a4caeafb6cc70187614b77db7
@@ -1,28 +1,41 @@
1
1
  module Metanorma
2
2
  class Requirements
3
3
  class Modspec < Default
4
+ REQT_TYPE_NORM = {
5
+ requirement: "general",
6
+ recommendation: "general",
7
+ permission: "general",
8
+ requirements_class: "class",
9
+ requirement_class: "class",
10
+ recommendation_class: "class",
11
+ permission_class: "class",
12
+ conformance_test: "verification",
13
+ conformance_class: "conformanceclass",
14
+ abstract_test: "abstracttest",
15
+ }.freeze
16
+
4
17
  def requirement_type_cleanup(reqt)
5
- reqt["type"] = case reqt["type"]
6
- when "requirement", "recommendation", "permission"
7
- "general"
8
- when "requirements_class" then "class"
9
- when "conformance_test" then "verification"
10
- when "conformance_class" then "conformanceclass"
11
- when "abstract_test" then "abstracttest"
12
- else reqt["type"]
13
- end
18
+ ret = REQT_TYPE_NORM[reqt["type"]&.to_sym] or return
19
+ reqt["type"] = ret
14
20
  end
15
21
 
16
22
  def requirement_metadata_component_tags
17
23
  %w(test-purpose test-method test-method-type conditions part description
18
- reference step requirement permission recommendation guidance)
24
+ reference step guidance) +
25
+ requirement_metadata_requirement_tags
26
+ end
27
+
28
+ def requirement_metadata_requirement_tags
29
+ %w(conformance-test conformance-class abstract-test requirement-class
30
+ recommendation-class permission-class requirement permission
31
+ recommendation)
19
32
  end
20
33
 
21
34
  def requirement_metadata1(reqt, dlist, ins)
22
35
  ins1 = super
23
36
  dlist.xpath("./dt").each do |e|
24
- tag = e&.text&.gsub(/ /, "-")&.downcase
25
- next unless requirement_metadata_component_tags.include? tag
37
+ tag = e.text&.gsub(/ /, "-")&.downcase
38
+ next unless requirement_metadata_component_tags.include?(tag)
26
39
 
27
40
  ins1.next = requirement_metadata1_component(e, tag)
28
41
  ins1 = ins1.next
@@ -36,9 +49,9 @@ module Metanorma
36
49
  requirement_metadata1(val, d, d)
37
50
  d.remove
38
51
  end
39
- if REQS.include?(term.text) && !val.text.empty?
52
+ requirement_metadata_requirement_tags.include?(term.text) &&
53
+ !val.text.empty? and
40
54
  val.children = "<identifier>#{val.text.strip}</identifier>"
41
- end
42
55
  val
43
56
  end
44
57
 
@@ -59,8 +72,8 @@ module Metanorma
59
72
  end
60
73
 
61
74
  def requirement_metadata_to_component(reqt)
62
- xpath = requirement_metadata_component_tags -
63
- %w(description requirement permission recommendation)
75
+ xpath = requirement_metadata_component_tags - %w(description) -
76
+ requirement_metadata_requirement_tags
64
77
  reqt.xpath(xpath.map { |x| ".//#{x}" }.join(" | ")).each do |c|
65
78
  c["class"] = c.name
66
79
  c.name = "component"
@@ -68,13 +81,25 @@ module Metanorma
68
81
  end
69
82
 
70
83
  def requirement_metadata_to_requirement(reqt)
71
- reqt.xpath("./requirement | ./permission | ./recommendation")
72
- .each do |c|
84
+ xpath = requirement_metadata_requirement_tags
85
+ reqt.xpath(xpath.map { |x| "./#{x}" }.join(" | ")).each do |c|
73
86
  c["id"] = Metanorma::Utils::anchor_or_uuid
74
87
  c["model"] = reqt["model"] # all requirements must have a model
88
+ requirement_metadata_to_requirement1(c)
75
89
  end
76
90
  end
77
91
 
92
+ def requirement_metadata_to_requirement1(reqt)
93
+ reqt["type"] = reqt.name.sub(/-/, "_")
94
+ reqt.name =
95
+ case reqt.name
96
+ when "recommendation-class", "recommendation" then "recommendation"
97
+ when "permission-class", "permission" then "permission"
98
+ else "requirement"
99
+ end
100
+ requirement_type_cleanup(reqt)
101
+ end
102
+
78
103
  def requirement_subparts_to_blocks(reqt)
79
104
  reqt.xpath(".//component | .//description").each do |c|
80
105
  next if %w(p ol ul dl table component description)
@@ -198,8 +198,6 @@ module Metanorma
198
198
  end
199
199
 
200
200
  def requirement_table_cleanup(table)
201
- return table unless table["type"] == "recommendclass"
202
-
203
201
  table.xpath(ns("./tbody/tr/td/table")).each do |t|
204
202
  x = t.at(ns("./thead/tr")) or next
205
203
  t.parent.parent.replace(x)
@@ -7,14 +7,14 @@ module Metanorma
7
7
 
8
8
  label = elem.at(ns("./identifier"))&.text
9
9
  if inject_crossreference_reqt?(elem, label)
10
- recommendation_label_xref(elem, label, xrefs)
10
+ recommendation_label_xref(elem, label, xrefs, type)
11
11
  else
12
12
  type = recommendation_class_label(elem)
13
13
  super
14
14
  end
15
15
  end
16
16
 
17
- def recommendation_label_xref(elem, label, xrefs)
17
+ def recommendation_label_xref(elem, label, xrefs, type)
18
18
  id = @reqtlabels[label]
19
19
  number = xrefs.anchor(id, :xref, false)
20
20
  number.nil? and return type
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  class Requirements
3
- VERSION = "0.1.4.1".freeze
3
+ VERSION = "0.1.6".freeze
4
4
  end
5
5
  end
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "equivalent-xml", "~> 0.6"
32
32
  spec.add_development_dependency "guard", "~> 2.14"
33
33
  spec.add_development_dependency "guard-rspec", "~> 4.7"
34
+ spec.add_development_dependency "metanorma-standoc"
34
35
  spec.add_development_dependency "rake", "~> 13.0"
35
36
  spec.add_development_dependency "rspec", "~> 3.6"
36
37
  spec.add_development_dependency "rubocop", "~> 1.5.2"
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.1.4.1
4
+ version: 0.1.6
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-09-13 00:00:00.000000000 Z
11
+ date: 2022-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: isodoc-i18n
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '4.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: metanorma-standoc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rake
99
113
  requirement: !ruby/object:Gem::Requirement