mn-requirements 0.1.4.1 → 0.1.6
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e3ca9ac70068ad84544ecd69a028aa771675c790affd49f35812b2a8677ffdc
|
4
|
+
data.tar.gz: e47bf092f613aa369275f154a9937f5d32c3b88f9cfddf8492a95268c6d3d76c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
6
|
-
|
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
|
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
|
25
|
-
next unless requirement_metadata_component_tags.include?
|
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
|
-
|
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
|
-
|
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
|
-
|
72
|
-
|
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
|
data/mn-requirements.gemspec
CHANGED
@@ -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
|
+
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-
|
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
|