mn-requirements 0.1.5 → 0.1.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 +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
|