metanorma-ogc 2.0.0 → 2.0.1
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/isodoc/ogc/ogc.abstract-specification-topic.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.best-practice.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.change-request-supporting-document.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.community-practice.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.community-standard.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.discussion-paper.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.engineering-report.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.other.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.policy.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.reference-model.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.release-notes.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.standard.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.test-suite.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.user-guide.xsl +1303 -1224
- data/lib/isodoc/ogc/ogc.white-paper.xsl +1270 -1203
- data/lib/isodoc/ogc/reqt.rb +17 -3
- data/lib/metanorma/ogc/cleanup.rb +15 -0
- data/lib/metanorma/ogc/validate.rb +38 -0
- data/lib/metanorma/ogc/version.rb +1 -1
- metadata +2 -2
data/lib/isodoc/ogc/reqt.rb
CHANGED
@@ -33,9 +33,8 @@ module IsoDoc
|
|
33
33
|
|
34
34
|
def recommendation_name(node, out)
|
35
35
|
b = out.add_child("<p class='#{recommendation_class(node)}'></p>").first
|
36
|
-
|
36
|
+
name = node&.at(ns("./name"))&.remove and
|
37
37
|
name.children.each { |n| b << n }
|
38
|
-
end
|
39
38
|
if title = node&.at(ns("./title"))&.remove
|
40
39
|
b << l10n(": ") if name
|
41
40
|
title.children.each { |n| b << n }
|
@@ -64,6 +63,9 @@ module IsoDoc
|
|
64
63
|
oblig = node["obligation"] and out << ["Obligation", oblig]
|
65
64
|
subj = node&.at(ns("./subject"))&.remove&.children and
|
66
65
|
out << [rec_subj(node), subj]
|
66
|
+
%w(general class).include?(node["type_original"]) and
|
67
|
+
test = @reqt_links[node["id"]] and
|
68
|
+
out << ["Conformance test", "<xref target='#{test}'/>"]
|
67
69
|
node.xpath(ns("./inherit")).each do |i|
|
68
70
|
out << ["Dependency", i.remove.children]
|
69
71
|
end
|
@@ -75,7 +77,8 @@ module IsoDoc
|
|
75
77
|
return node unless node.at(ns("./component[@class = 'step']"))
|
76
78
|
|
77
79
|
d = node.at(ns("./component[@class = 'step']"))
|
78
|
-
d = d.replace("<ol class='steps'><li>#{d.children.to_xml}</li></ol>")
|
80
|
+
d = d.replace("<ol class='steps'><li>#{d.children.to_xml}</li></ol>")
|
81
|
+
.first
|
79
82
|
node.xpath(ns("./component[@class = 'step']")).each do |f|
|
80
83
|
f = f.replace("<li>#{f.children.to_xml}</li>").first
|
81
84
|
d << f
|
@@ -177,6 +180,7 @@ module IsoDoc
|
|
177
180
|
end
|
178
181
|
|
179
182
|
def recommendation_to_table(docxml)
|
183
|
+
@reqt_links = reqt_links(docxml)
|
180
184
|
docxml.xpath(ns("//recommendation")).each do |r|
|
181
185
|
recommendation_parse1(r, "recommendation")
|
182
186
|
end
|
@@ -189,6 +193,16 @@ module IsoDoc
|
|
189
193
|
requirement_table_cleanup(docxml)
|
190
194
|
end
|
191
195
|
|
196
|
+
def reqt_links(docxml)
|
197
|
+
docxml.xpath(ns("//requirement | //recommendation | //permission"))
|
198
|
+
.each_with_object({}) do |r, m|
|
199
|
+
next unless %w(conformanceclass verification).include?(r["type"])
|
200
|
+
next unless subject = r&.at(ns("./subject/xref/@target"))&.text
|
201
|
+
|
202
|
+
m[subject] = r["id"]
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
192
206
|
# table nested in table: merge label and caption into a single row
|
193
207
|
def requirement_table_cleanup1(outer, inner)
|
194
208
|
outer.delete("colspan")
|
@@ -211,6 +211,21 @@ module Metanorma
|
|
211
211
|
o = r&.at("./ancestor::*/@obligation")&.text and r["obligation"] = o
|
212
212
|
end
|
213
213
|
end
|
214
|
+
|
215
|
+
def sections_order_cleanup(xml)
|
216
|
+
super
|
217
|
+
sort_annexes(xml)
|
218
|
+
end
|
219
|
+
|
220
|
+
def sort_annexes(xml)
|
221
|
+
last = xml.at("//annex[last()]") or return
|
222
|
+
last.next = "<sentinel/>" and last = last.next_element
|
223
|
+
gl = xml.at("//annex[.//term]") and last.previous = gl.remove
|
224
|
+
rev = xml.at("//annex[title[normalize-space(.) = 'Revision history']]") ||
|
225
|
+
xml.at("//annex[title[normalize-space(.) = 'Revision History']]") and
|
226
|
+
last.previous = rev.remove
|
227
|
+
last.remove
|
228
|
+
end
|
214
229
|
end
|
215
230
|
end
|
216
231
|
end
|
@@ -14,6 +14,44 @@ module Metanorma
|
|
14
14
|
def content_validate(doc)
|
15
15
|
super
|
16
16
|
bibdata_validate(doc.root)
|
17
|
+
reqt_link_validate(doc.root)
|
18
|
+
end
|
19
|
+
|
20
|
+
def reqt_link_validate(docxml)
|
21
|
+
ids = reqt_links(docxml)
|
22
|
+
reqt_to_conformance(ids, "general", "verification", "Requirement",
|
23
|
+
"Conformance test")
|
24
|
+
reqt_to_conformance(ids, "class", "conformanceclass",
|
25
|
+
"Requirement class", "Conformance class test")
|
26
|
+
conformance_to_reqt(ids, "general", "verification", "Requirement",
|
27
|
+
"Conformance test")
|
28
|
+
conformance_to_reqt(ids, "class", "conformanceclass",
|
29
|
+
"Requirement class", "Conformance class test")
|
30
|
+
end
|
31
|
+
|
32
|
+
def reqt_to_conformance(ids, reqtclass, confclass, reqtlabel, conflabel)
|
33
|
+
ids[reqtclass]&.each do |r|
|
34
|
+
ids[confclass]&.any? { |x| x[:subject] == r[:id] } or
|
35
|
+
@log.add("Requirements", r[:elem],
|
36
|
+
"#{reqtlabel} #{r[:id]} has no corresponding #{conflabel}")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def conformance_to_reqt(ids, reqtclass, confclass, reqtlabel, conflabel)
|
41
|
+
ids[confclass]&.each do |x|
|
42
|
+
ids[reqtclass]&.any? { |r| x[:subject] == r[:id] } or
|
43
|
+
@log.add("Requirements", x[:elem],
|
44
|
+
"#{conflabel} #{x[:id]} has no corresponding #{reqtlabel}")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def reqt_links(docxml)
|
49
|
+
docxml.xpath("//requirement | //recommendation | //permission")
|
50
|
+
.each_with_object({}) do |r, m|
|
51
|
+
m[r["type"]] ||= []
|
52
|
+
m[r["type"]] << { id: r["id"], elem: r,
|
53
|
+
subject: r&.at("./subject/xref/@target")&.text }
|
54
|
+
end
|
17
55
|
end
|
18
56
|
|
19
57
|
def bibdata_validate(doc)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-ogc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
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-01-
|
11
|
+
date: 2022-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: iso-639
|