mn-requirements 0.1.5 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +3 -0
- data/Gemfile +1 -0
- data/lib/metanorma/default/isodoc.rb +1 -1
- data/lib/metanorma/modspec/cleanup.rb +43 -18
- data/lib/metanorma/requirements/selector.rb +4 -2
- data/lib/metanorma/requirements/version.rb +1 -1
- data/mn-requirements.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2e26c223fccd1addd079ca0f89fe9fad9f81e7fa1e43c4607245cb95e5c3292
|
4
|
+
data.tar.gz: f6765320c97a6a49b164973d39084b72b57206f4a8b3e9eeb86a3835df1cbad0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4eb0f1c8d3782eea7066f71809ee2ac05d5cc7d6fa470dee2054c4a4154cb08eda814b5fcc2241cdbe345b3f149b15a0152a2daa76d5fb5df4c1ce41b26cb6e4
|
7
|
+
data.tar.gz: 76b1638cdc8a99eb7d6ff2fdfd321fff08fe64bf40b07a2b5ec46aecc7a1110a2feee171b25b334a6b468ab4636056511ad002aec3e78ba67c63d1d3f4ee3cc7
|
@@ -18,6 +18,9 @@ jobs:
|
|
18
18
|
uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
|
19
19
|
with:
|
20
20
|
next_version: ${{ github.event.inputs.next_version }}
|
21
|
+
release_command: rake release
|
22
|
+
bundler_cache: false
|
23
|
+
post_install: gem install bundler rake rspec
|
21
24
|
secrets:
|
22
25
|
rubygems-api-key: ${{ secrets.METANORMA_CI_RUBYGEMS_API_KEY }}
|
23
26
|
pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
|
data/Gemfile
CHANGED
@@ -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)
|
@@ -13,6 +13,7 @@ module Metanorma
|
|
13
13
|
@default = options[:default]
|
14
14
|
@i18n = i18n_klass(options[:lang] || "en",
|
15
15
|
options[:script] || "Latn",
|
16
|
+
options[:locale],
|
16
17
|
options[:i18nhash])
|
17
18
|
@labels = @i18n.get.deep_merge(options[:labels] || {})["requirements"]
|
18
19
|
@models =
|
@@ -23,8 +24,9 @@ module Metanorma
|
|
23
24
|
%i[default ogc]
|
24
25
|
end
|
25
26
|
|
26
|
-
def i18n_klass(lang
|
27
|
-
::IsoDoc::MnRequirementsI18n.new(lang, script,
|
27
|
+
def i18n_klass(lang, script, locale = nil, i18nhash = nil)
|
28
|
+
::IsoDoc::MnRequirementsI18n.new(lang, script, locale: locale,
|
29
|
+
i18nhash: i18nhash)
|
28
30
|
end
|
29
31
|
|
30
32
|
# all roles that can be assigned to an example to make it a reqt,
|
data/mn-requirements.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.require_paths = ["lib"]
|
25
25
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
26
26
|
|
27
|
-
spec.add_dependency "isodoc-i18n", "~> 1.0
|
27
|
+
spec.add_dependency "isodoc-i18n", "~> 1.1.0"
|
28
28
|
spec.add_dependency "metanorma-utils", "~> 1.4.0"
|
29
29
|
|
30
30
|
spec.add_development_dependency "debug"
|
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.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: 2022-09-
|
11
|
+
date: 2022-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: isodoc-i18n
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.0
|
19
|
+
version: 1.1.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.0
|
26
|
+
version: 1.1.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: metanorma-utils
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|