mn-requirements 0.5.8 → 0.5.10
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/lib/metanorma/default/cleanup.rb +1 -1
- data/lib/metanorma/default/default.rb +2 -0
- data/lib/metanorma/default/isodoc.rb +35 -31
- data/lib/metanorma/requirements/selector.rb +10 -2
- data/lib/metanorma/requirements/version.rb +1 -1
- data/mn-requirements.gemspec +5 -3
- metadata +46 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e446f52e8a55fc21a99df29ce798a2a7ea84d987d07aceb23d64b5c1c77be7e3
|
|
4
|
+
data.tar.gz: f1142726f55149df21ff127df360b656cd14b9c376f7d13844ba04451239b5b1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2617c33c902c0caddd8ac9f47f4b9fd497ce04482ef53195d50e13776e3f2a165ec1c13f3891efb67cfdbfc11b891dcff9a598894bf344d6f97a3b538bc171b8
|
|
7
|
+
data.tar.gz: dba9959bd392290b870c539410f8d50b55203308d96b3ec786c1c6a9532bcbc7e650f89a614390425f2fe21d52853109dfd63f792729de68aab92b20345ab684
|
|
@@ -3,6 +3,7 @@ require_relative "cleanup"
|
|
|
3
3
|
require_relative "utils"
|
|
4
4
|
require_relative "isodoc"
|
|
5
5
|
require_relative "xrefs"
|
|
6
|
+
require "metanorma-core"
|
|
6
7
|
|
|
7
8
|
module Metanorma
|
|
8
9
|
class Requirements
|
|
@@ -12,6 +13,7 @@ module Metanorma
|
|
|
12
13
|
@parent = options[:parent]
|
|
13
14
|
@i18n = @parent.i18n
|
|
14
15
|
@labels = @parent.labels
|
|
16
|
+
@isodoc = options[:isodoc]
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def reqt_subpart?(name)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require "isodoc"
|
|
2
|
+
|
|
1
3
|
module Metanorma
|
|
2
4
|
class Requirements
|
|
3
5
|
class Default
|
|
@@ -5,34 +7,9 @@ module Metanorma
|
|
|
5
7
|
@i18n.l10n(text)
|
|
6
8
|
end
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
elem["id"] ||= "_#{UUIDTools::UUID.random_create}"
|
|
11
|
-
new = Nokogiri::XML(<<~XML).root
|
|
12
|
-
<semx xmlns='#{elem.namespace.href}' element='#{elem.name}' source='#{elem['original-id'] || elem['id']}'>#{to_xml(elem.children)}</semx>
|
|
13
|
-
XML
|
|
14
|
-
strip_duplicate_ids(nil, elem, new)
|
|
15
|
-
new
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def gather_all_ids(elem)
|
|
19
|
-
elem.xpath(".//*[@id]").each_with_object([]) do |i, m|
|
|
20
|
-
m << i["id"]
|
|
10
|
+
def semx_fmt_dup(elem)
|
|
11
|
+
@isodoc.semx_fmt_dup(elem)
|
|
21
12
|
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# remove ids duplicated between sem_title and pres_title
|
|
25
|
-
# index terms are assumed transferred to pres_title from sem_title
|
|
26
|
-
def strip_duplicate_ids(_node, sem_title, pres_title)
|
|
27
|
-
sem_title && pres_title or return
|
|
28
|
-
ids = gather_all_ids(pres_title)
|
|
29
|
-
sem_title.xpath(".//*[@id]").each do |x|
|
|
30
|
-
ids.include?(x["id"]) or next
|
|
31
|
-
x["original-id"] = x["id"]
|
|
32
|
-
x.delete("id")
|
|
33
|
-
end
|
|
34
|
-
sem_title.xpath(ns(".//index")).each(&:remove)
|
|
35
|
-
end
|
|
36
13
|
|
|
37
14
|
def recommendation_label(elem, type, xrefs)
|
|
38
15
|
label, title = recommendation_labels(elem)
|
|
@@ -40,7 +17,8 @@ def semx_fmt_dup(elem)
|
|
|
40
17
|
num = xrefs.anchor(elem["id"], :label, false)
|
|
41
18
|
num &&= "<semx element='autonum' source='#{elem['id']}'>#{num}</semx>"
|
|
42
19
|
ret = num
|
|
43
|
-
|
|
20
|
+
ret&.include?("<span class='fmt-element-name'>") or
|
|
21
|
+
ret = "#{type} #{num}".strip
|
|
44
22
|
label || title and
|
|
45
23
|
ret += recommendation_label_add(elem, label, title)
|
|
46
24
|
ret
|
|
@@ -66,6 +44,34 @@ def semx_fmt_dup(elem)
|
|
|
66
44
|
end
|
|
67
45
|
|
|
68
46
|
def requirement_render1(node)
|
|
47
|
+
case node["render"]
|
|
48
|
+
when "inline" then requirement_render1_inline(node)
|
|
49
|
+
else requirement_render1_default(node)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def requirement_render1_inline(node)
|
|
54
|
+
out = recommendation_base(node, "fmt-provision")
|
|
55
|
+
lbl, body = requirement_render1_inline_prep(node)
|
|
56
|
+
if ins = body&.at(ns(".//p"))
|
|
57
|
+
ins.children.first.previous = lbl
|
|
58
|
+
out << body
|
|
59
|
+
else
|
|
60
|
+
lbl and out << lbl
|
|
61
|
+
body and out << body
|
|
62
|
+
end
|
|
63
|
+
requirement_presentation(node, out)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def requirement_render1_inline_prep(node)
|
|
67
|
+
ident = node.at(ns("./identifier")) and
|
|
68
|
+
lbl = "[#{to_xml(semx_fmt_dup(ident))}] "
|
|
69
|
+
body = node.at(ns("./title | ./specification | ./description"))
|
|
70
|
+
body &&= semx_fmt_dup(body)
|
|
71
|
+
[lbl, body]
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def requirement_render1_default(node)
|
|
69
75
|
out = recommendation_base(node, "fmt-provision")
|
|
70
76
|
ins = recommendation_header(node, out)
|
|
71
77
|
ins = recommendation_attributes(node, ins)
|
|
@@ -99,7 +105,7 @@ def semx_fmt_dup(elem)
|
|
|
99
105
|
def recommendation_labels(node)
|
|
100
106
|
[node.at(ns("./identifier")), node.at(ns("./title"))]
|
|
101
107
|
.map do |n|
|
|
102
|
-
|
|
108
|
+
to_xml(n&.children)
|
|
103
109
|
end
|
|
104
110
|
end
|
|
105
111
|
|
|
@@ -107,7 +113,6 @@ def semx_fmt_dup(elem)
|
|
|
107
113
|
oblig = node["obligation"] and
|
|
108
114
|
out << l10n("#{@labels['default']['obligation']}: #{oblig}")
|
|
109
115
|
node.xpath(ns("./subject")).each do |subj|
|
|
110
|
-
#out << l10n("#{@labels['default']['subject']}: #{subj.text}")
|
|
111
116
|
out << l10n("#{@labels['default']['subject']}: #{to_xml(semx_fmt_dup(subj))}")
|
|
112
117
|
end
|
|
113
118
|
node.xpath(ns("./inherit")).each do |i|
|
|
@@ -120,7 +125,6 @@ def semx_fmt_dup(elem)
|
|
|
120
125
|
end
|
|
121
126
|
|
|
122
127
|
def recommendation_attr_parse(node, label)
|
|
123
|
-
#l10n("#{label}: #{to_xml(node.children)}")
|
|
124
128
|
l10n("#{label}: #{to_xml(semx_fmt_dup(node))}")
|
|
125
129
|
end
|
|
126
130
|
|
|
@@ -18,10 +18,18 @@ module Metanorma
|
|
|
18
18
|
# @labels = @i18n.get.deep_merge(options[:labels] || {})["requirements"]
|
|
19
19
|
@labels = @i18n.get["requirements"]
|
|
20
20
|
@modspecidentifierbase = options[:modspecidentifierbase]
|
|
21
|
+
init_isodoc(options)
|
|
21
22
|
@models =
|
|
22
23
|
model_names.each_with_object({}) { |k, m| m[k] = create(k) }
|
|
23
24
|
end
|
|
24
25
|
|
|
26
|
+
def init_isodoc(options)
|
|
27
|
+
@isodoc = Metanorma::Core::Isodoc
|
|
28
|
+
.init(options[:conv], lang: options[:lang], script: options[:script],
|
|
29
|
+
locale: options[:locale],
|
|
30
|
+
i18nyaml: options[:labels])
|
|
31
|
+
end
|
|
32
|
+
|
|
25
33
|
def model_names
|
|
26
34
|
%i[default ogc]
|
|
27
35
|
end
|
|
@@ -50,8 +58,8 @@ module Metanorma
|
|
|
50
58
|
def create(type)
|
|
51
59
|
case type
|
|
52
60
|
when :modspec, :ogc
|
|
53
|
-
Metanorma::Requirements::Modspec.new(parent: self)
|
|
54
|
-
else Metanorma::Requirements::Default.new(parent: self)
|
|
61
|
+
Metanorma::Requirements::Modspec.new(parent: self, isodoc: @isodoc)
|
|
62
|
+
else Metanorma::Requirements::Default.new(parent: self, isodoc: @isodoc)
|
|
55
63
|
end
|
|
56
64
|
end
|
|
57
65
|
|
data/mn-requirements.gemspec
CHANGED
|
@@ -28,19 +28,21 @@ Gem::Specification.new do |spec|
|
|
|
28
28
|
# precise version is on relaton-render
|
|
29
29
|
spec.add_dependency "isodoc-i18n", ">= 1.2.0"
|
|
30
30
|
spec.add_dependency "metanorma-utils", ">= 2.0.0"
|
|
31
|
+
spec.add_dependency "metanorma-core", ">= 0.1.0"
|
|
31
32
|
spec.add_dependency "relaton-render", ">= 1.0.0"
|
|
32
33
|
|
|
34
|
+
spec.add_development_dependency "benchmark"
|
|
35
|
+
spec.add_development_dependency "canon"
|
|
33
36
|
spec.add_development_dependency "debug"
|
|
34
37
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
|
35
38
|
spec.add_development_dependency "guard", "~> 2.14"
|
|
36
39
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
|
37
|
-
spec.add_development_dependency "metanorma-standoc", ">=
|
|
40
|
+
spec.add_development_dependency "metanorma-standoc", ">= 3.4.1"
|
|
38
41
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
39
42
|
spec.add_development_dependency "rspec", "~> 3.6"
|
|
40
43
|
spec.add_development_dependency "rubocop", "~> 1"
|
|
41
|
-
spec.add_development_dependency "rubocop-performance"
|
|
44
|
+
spec.add_development_dependency "rubocop-performance"
|
|
42
45
|
spec.add_development_dependency "sassc-embedded", "~> 1"
|
|
43
46
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
|
44
47
|
spec.add_development_dependency "timecop", "~> 0.9"
|
|
45
|
-
spec.add_development_dependency "canon", "= 0.1.3"
|
|
46
48
|
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.5.
|
|
4
|
+
version: 0.5.10
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-04-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: isodoc-i18n
|
|
@@ -38,6 +38,20 @@ dependencies:
|
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: 2.0.0
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: metanorma-core
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: 0.1.0
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: 0.1.0
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: relaton-render
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +66,34 @@ dependencies:
|
|
|
52
66
|
- - ">="
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
68
|
version: 1.0.0
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: benchmark
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: canon
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
55
97
|
- !ruby/object:Gem::Dependency
|
|
56
98
|
name: debug
|
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -114,14 +156,14 @@ dependencies:
|
|
|
114
156
|
requirements:
|
|
115
157
|
- - ">="
|
|
116
158
|
- !ruby/object:Gem::Version
|
|
117
|
-
version:
|
|
159
|
+
version: 3.4.1
|
|
118
160
|
type: :development
|
|
119
161
|
prerelease: false
|
|
120
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
163
|
requirements:
|
|
122
164
|
- - ">="
|
|
123
165
|
- !ruby/object:Gem::Version
|
|
124
|
-
version:
|
|
166
|
+
version: 3.4.1
|
|
125
167
|
- !ruby/object:Gem::Dependency
|
|
126
168
|
name: rake
|
|
127
169
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -220,20 +262,6 @@ dependencies:
|
|
|
220
262
|
- - "~>"
|
|
221
263
|
- !ruby/object:Gem::Version
|
|
222
264
|
version: '0.9'
|
|
223
|
-
- !ruby/object:Gem::Dependency
|
|
224
|
-
name: canon
|
|
225
|
-
requirement: !ruby/object:Gem::Requirement
|
|
226
|
-
requirements:
|
|
227
|
-
- - '='
|
|
228
|
-
- !ruby/object:Gem::Version
|
|
229
|
-
version: 0.1.3
|
|
230
|
-
type: :development
|
|
231
|
-
prerelease: false
|
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
233
|
-
requirements:
|
|
234
|
-
- - '='
|
|
235
|
-
- !ruby/object:Gem::Version
|
|
236
|
-
version: 0.1.3
|
|
237
265
|
description: 'Requirements processing and rendering according to different models
|
|
238
266
|
|
|
239
267
|
'
|