metanorma-ogc 2.0.2 → 2.0.5
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/base_convert.rb +8 -6
- data/lib/isodoc/ogc/html/ogc.css +1 -2
- data/lib/isodoc/ogc/html/ogc.scss +0 -1
- data/lib/isodoc/ogc/html/ogc_wp.css +1 -2
- data/lib/isodoc/ogc/html/ogc_wp.scss +0 -1
- data/lib/isodoc/ogc/html_convert.rb +6 -6
- data/lib/isodoc/ogc/ogc.abstract-specification-topic.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.best-practice.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.change-request-supporting-document.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.community-practice.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.community-standard.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.discussion-paper.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.engineering-report.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.other.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.policy.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.reference-model.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.release-notes.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.standard.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.test-suite.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.user-guide.xsl +1258 -513
- data/lib/isodoc/ogc/ogc.white-paper.xsl +1120 -397
- data/lib/isodoc/ogc/presentation_xml_convert.rb +25 -34
- data/lib/isodoc/ogc/reqt.rb +2 -1
- data/lib/isodoc/ogc/word_convert.rb +2 -78
- data/lib/isodoc/ogc/xref.rb +13 -6
- data/lib/metanorma/ogc/basicdoc.rng +5 -3
- data/lib/metanorma/ogc/biblio.rng +5 -3
- data/lib/metanorma/ogc/converter.rb +7 -0
- data/lib/metanorma/ogc/isodoc.rng +73 -3
- data/lib/metanorma/ogc/processor.rb +10 -10
- data/lib/metanorma/ogc/version.rb +1 -1
- metadata +2 -2
@@ -12,11 +12,16 @@ module IsoDoc
|
|
12
12
|
super
|
13
13
|
end
|
14
14
|
|
15
|
-
def insert_preface_sections(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
def insert_preface_sections(doc)
|
16
|
+
preface_insert(doc&.at(ns("//preface/clause"\
|
17
|
+
"[@type = 'executivesummary']")),
|
18
|
+
doc.at(ns("//preface/abstract")), doc)
|
19
|
+
preface_insert(doc&.at(ns("//preface//submitters")),
|
20
|
+
submit_orgs_append_pt(doc), doc)
|
21
|
+
insert_submitting_orgs(doc)
|
22
|
+
preface_insert(doc&.at(ns("//preface/clause[@type = 'security']")),
|
23
|
+
submit_orgs_append_pt(doc), doc)
|
24
|
+
insert_keywords(doc)
|
20
25
|
end
|
21
26
|
|
22
27
|
def preface_init_insert_pt(docxml)
|
@@ -25,31 +30,22 @@ module IsoDoc
|
|
25
30
|
.add_previous_sibling("<preface> </preface>").first
|
26
31
|
end
|
27
32
|
|
28
|
-
def
|
29
|
-
|
30
|
-
docxml.at(ns("//foreword")) ||
|
31
|
-
docxml.at(ns("//preface/clause[@type = 'keywords']")) ||
|
32
|
-
docxml.at(ns("//preface/abstract"))
|
33
|
-
end
|
33
|
+
def preface_insert(clause, after, docxml)
|
34
|
+
return unless clause
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
return
|
38
|
-
if a = submit_orgs_append_pt(docxml) then a.next = s
|
36
|
+
clause.remove
|
37
|
+
if after then after.next = clause
|
39
38
|
else
|
40
39
|
preface_init_insert_pt(docxml)&.children&.first
|
41
|
-
&.add_previous_sibling(
|
40
|
+
&.add_previous_sibling(clause)
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
preface_init_insert_pt(docxml)&.children&.first
|
51
|
-
&.add_previous_sibling(s)
|
52
|
-
end
|
44
|
+
def submit_orgs_append_pt(docxml)
|
45
|
+
docxml.at(ns("//foreword")) ||
|
46
|
+
docxml.at(ns("//preface/clause[@type = 'keywords']")) ||
|
47
|
+
docxml.at(ns("//preface/clause[@type = 'executivesummary']")) ||
|
48
|
+
docxml.at(ns("//preface/abstract"))
|
53
49
|
end
|
54
50
|
|
55
51
|
def insert_submitting_orgs(docxml)
|
@@ -166,7 +162,6 @@ module IsoDoc
|
|
166
162
|
def block(docxml)
|
167
163
|
super
|
168
164
|
recommendation_to_table(docxml)
|
169
|
-
ol docxml
|
170
165
|
end
|
171
166
|
|
172
167
|
def section(docxml)
|
@@ -213,16 +208,12 @@ module IsoDoc
|
|
213
208
|
doctype.children = "technical-paper"
|
214
209
|
end
|
215
210
|
|
216
|
-
def
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
def ol1(elem)
|
221
|
-
return unless elem["class"] == "steps"
|
211
|
+
def ol_depth(node)
|
212
|
+
return super unless node["class"] == "steps" ||
|
213
|
+
node.at(".//ancestor::xmlns:ol[@class = 'steps']")
|
222
214
|
|
223
|
-
idx =
|
224
|
-
|
225
|
-
roman_upper)[(idx - 1) % 5]
|
215
|
+
idx = node.xpath("./ancestor-or-self::xmlns:ol[@class = 'steps']").size
|
216
|
+
%i(arabic alphabet roman alphabet_upper roman_upper)[(idx - 1) % 5]
|
226
217
|
end
|
227
218
|
|
228
219
|
def termsource1(elem)
|
data/lib/isodoc/ogc/reqt.rb
CHANGED
@@ -48,6 +48,7 @@ module IsoDoc
|
|
48
48
|
label.xpath(ns(".//concept")).each { |f| concept1(f) }
|
49
49
|
b = out.add_child("<tr><td colspan='2'><p></p></td></tr>")
|
50
50
|
p = b.at(ns(".//p"))
|
51
|
+
p["class"] = "RecommendationLabel"
|
51
52
|
p << label.children.to_xml
|
52
53
|
end
|
53
54
|
|
@@ -103,7 +104,7 @@ module IsoDoc
|
|
103
104
|
def recommendation_attr_keyvalue(node, key, value)
|
104
105
|
tag = node&.at(ns("./#{key}"))&.remove
|
105
106
|
value = node.at(ns("./#{value}"))&.remove
|
106
|
-
tag && value or return nil
|
107
|
+
(tag && value) or return nil
|
107
108
|
node.remove
|
108
109
|
[tag.text.capitalize, value.children]
|
109
110
|
end
|
@@ -64,87 +64,11 @@ module IsoDoc
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
def
|
68
|
-
|
69
|
-
toc += make_WordToC(docxml, level)
|
70
|
-
if docxml.at("//p[@class = 'TableTitle']")
|
71
|
-
toc += %{<p class="TOCTitle">List of Tables</p>}
|
72
|
-
toc += make_TableWordToC(docxml)
|
73
|
-
end
|
74
|
-
if docxml.at("//p[@class = 'FigureTitle']")
|
75
|
-
toc += %{<p class="TOCTitle">List of Figures</p>}
|
76
|
-
toc += make_FigureWordToC(docxml)
|
77
|
-
end
|
78
|
-
if docxml.at("//p[@class = 'RecommendationTitle']")
|
79
|
-
toc += %{<p class="TOCTitle">List of Recommendations</p>}
|
80
|
-
toc += make_RecommendationWordToC(docxml)
|
81
|
-
end
|
82
|
-
intro.sub(/WORDTOC/, toc)
|
83
|
-
end
|
84
|
-
|
85
|
-
WORD_TOC_RECOMMENDATION_PREFACE1 = <<~TOC.freeze
|
86
|
-
<span lang="EN-GB"><span
|
87
|
-
style='mso-element:field-begin'></span><span
|
88
|
-
style='mso-spacerun:yes'> </span>TOC
|
89
|
-
\\h \\z \\t "RecommendationTitle,RecommendationTestTitle,recommendationtitle,recommendationtesttitle"#{' '}
|
90
|
-
<span style='mso-element:field-separator'></span></span>
|
91
|
-
TOC
|
92
|
-
|
93
|
-
WORD_TOC_TABLE_PREFACE1 = <<~TOC.freeze
|
94
|
-
<span lang="EN-GB"><span
|
95
|
-
style='mso-element:field-begin'></span><span
|
96
|
-
style='mso-spacerun:yes'> </span>TOC
|
97
|
-
\\h \\z \\t "TableTitle,tabletitle" <span
|
98
|
-
style='mso-element:field-separator'></span></span>
|
99
|
-
TOC
|
100
|
-
|
101
|
-
WORD_TOC_FIGURE_PREFACE1 = <<~TOC.freeze
|
102
|
-
<span lang="EN-GB"><span
|
103
|
-
style='mso-element:field-begin'></span><span
|
104
|
-
style='mso-spacerun:yes'> </span>TOC
|
105
|
-
\\h \\z \\t "FigureTitle,figuretitle" <span
|
106
|
-
style='mso-element:field-separator'></span></span>
|
107
|
-
TOC
|
108
|
-
|
109
|
-
def header_strip(h)
|
110
|
-
h = h.to_s.gsub(/<\/?p[^>]*>/, "")
|
67
|
+
def header_strip(hdr)
|
68
|
+
hdr = hdr.to_s.gsub(/<\/?p[^>]*>/, "")
|
111
69
|
super
|
112
70
|
end
|
113
71
|
|
114
|
-
def make_TableWordToC(docxml)
|
115
|
-
toc = ""
|
116
|
-
docxml.xpath("//p[@class = 'TableTitle']").each do |h|
|
117
|
-
toc += word_toc_entry(1, header_strip(h))
|
118
|
-
end
|
119
|
-
toc.sub(/(<p class="MsoToc1">)/,
|
120
|
-
%{\\1#{WORD_TOC_TABLE_PREFACE1}}) + WORD_TOC_SUFFIX1
|
121
|
-
end
|
122
|
-
|
123
|
-
def make_FigureWordToC(docxml)
|
124
|
-
toc = ""
|
125
|
-
docxml.xpath("//p[@class = 'FigureTitle']").each do |h|
|
126
|
-
toc += word_toc_entry(1, header_strip(h))
|
127
|
-
end
|
128
|
-
toc.sub(/(<p class="MsoToc1">)/,
|
129
|
-
%{\\1#{WORD_TOC_FIGURE_PREFACE1}}) + WORD_TOC_SUFFIX1
|
130
|
-
end
|
131
|
-
|
132
|
-
def make_RecommendationWordToC(docxml)
|
133
|
-
toc = ""
|
134
|
-
docxml.xpath("//p[@class = 'RecommendationTitle' or @class = 'RecommendationTestTitle']").sort_by do |h|
|
135
|
-
recommmendation_sort_key(h.text)
|
136
|
-
end.each do |h|
|
137
|
-
toc += word_toc_entry(1, header_strip(h))
|
138
|
-
end
|
139
|
-
toc.sub(/(<p class="MsoToc1">)/,
|
140
|
-
%{\\1#{WORD_TOC_RECOMMENDATION_PREFACE1}}) + WORD_TOC_SUFFIX1
|
141
|
-
end
|
142
|
-
|
143
|
-
def recommmendation_sort_key(header)
|
144
|
-
m = /^([^0-9]+) (\d+)/.match(header) || /^([^:]+)/.match(header)
|
145
|
-
"#{recommmendation_sort_key1(m[1])}::#{'%04d' % m[2].to_i}"
|
146
|
-
end
|
147
|
-
|
148
72
|
def recommmendation_sort_key1(type)
|
149
73
|
case type.downcase
|
150
74
|
when "requirements class" then "01"
|
data/lib/isodoc/ogc/xref.rb
CHANGED
@@ -23,7 +23,7 @@ module IsoDoc
|
|
23
23
|
id = c.increment(t).print
|
24
24
|
@anchors[t["id"]] = anchor_struct(id, t, label, klass,
|
25
25
|
t["unnumbered"])
|
26
|
-
|
26
|
+
reqt_suffix_label(t)
|
27
27
|
permission_parts(t, label, klass)
|
28
28
|
sequential_permission_children(t, id)
|
29
29
|
end
|
@@ -41,6 +41,13 @@ module IsoDoc
|
|
41
41
|
"conformanceclass" => "@type = 'conformanceclass'" }
|
42
42
|
end
|
43
43
|
|
44
|
+
def reqt_suffix_label(reqt)
|
45
|
+
if l = reqt.at(ns("./label"))&.text
|
46
|
+
@reqtlabels[l] = reqt["id"]
|
47
|
+
@anchors[reqt["id"]][:xref] += ": <tt>#{l}</tt>"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
44
51
|
def permission_parts(block, label, klass)
|
45
52
|
block.xpath(ns("./component[@class = 'part']"))
|
46
53
|
.each_with_index do |c, i|
|
@@ -116,7 +123,7 @@ module IsoDoc
|
|
116
123
|
lbl = "#{num}#{hiersep}#{c.increment(t).print}"
|
117
124
|
@anchors[t["id"]] = anchor_struct(lbl, t, label, klass,
|
118
125
|
t["unnumbered"])
|
119
|
-
|
126
|
+
reqt_suffix_label(t)
|
120
127
|
permission_parts(t, label, klass)
|
121
128
|
sequential_permission_children(t, lbl)
|
122
129
|
end
|
@@ -143,9 +150,9 @@ module IsoDoc
|
|
143
150
|
@prefacenum = 0
|
144
151
|
["//preface/abstract", "//preface/clause[@type = 'executivesummary']",
|
145
152
|
"//preface/clause[@type = 'keywords']",
|
146
|
-
"//foreword", "//
|
147
|
-
"//preface/clause[@type = 'submitting_orgs']",
|
148
|
-
"//
|
153
|
+
"//foreword", "//preface/clause[@type = 'security']",
|
154
|
+
"//preface/clause[@type = 'submitting_orgs']", "//submitters",
|
155
|
+
"//introduction"].each do |path|
|
149
156
|
preface_names_numbered(doc.at(ns(path)))
|
150
157
|
end
|
151
158
|
doc.xpath(ns("//preface/clause[not(@type = 'keywords' or "\
|
@@ -185,7 +192,7 @@ module IsoDoc
|
|
185
192
|
def preface_names_numbered1(clause, num, level)
|
186
193
|
@anchors[clause["id"]] =
|
187
194
|
{ label: num, level: level, xref: l10n("#{@labels['clause']} #{num}"),
|
188
|
-
type: "clause" }
|
195
|
+
type: "clause", elem: @labels["clause"] }
|
189
196
|
clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
|
190
197
|
lbl = "#{num}.#{preface_number(i + 1, level + 1)}"
|
191
198
|
preface_names_numbered1(c, lbl, level + 1)
|
@@ -173,9 +173,11 @@
|
|
173
173
|
<data type="dateTime"/>
|
174
174
|
</attribute>
|
175
175
|
</optional>
|
176
|
-
<
|
177
|
-
<
|
178
|
-
|
176
|
+
<optional>
|
177
|
+
<attribute name="from">
|
178
|
+
<data type="IDREF"/>
|
179
|
+
</attribute>
|
180
|
+
</optional>
|
179
181
|
<optional>
|
180
182
|
<attribute name="to">
|
181
183
|
<data type="IDREF"/>
|
@@ -209,9 +209,6 @@
|
|
209
209
|
<zeroOrMore>
|
210
210
|
<ref name="contact"/>
|
211
211
|
</zeroOrMore>
|
212
|
-
<zeroOrMore>
|
213
|
-
<ref name="uri"/>
|
214
|
-
</zeroOrMore>
|
215
212
|
</element>
|
216
213
|
</define>
|
217
214
|
<define name="fullname">
|
@@ -828,6 +825,11 @@
|
|
828
825
|
<optional>
|
829
826
|
<attribute name="scope"/>
|
830
827
|
</optional>
|
828
|
+
<optional>
|
829
|
+
<attribute name="primary">
|
830
|
+
<data type="boolean"/>
|
831
|
+
</attribute>
|
832
|
+
</optional>
|
831
833
|
<text/>
|
832
834
|
</element>
|
833
835
|
</define>
|
@@ -152,9 +152,7 @@
|
|
152
152
|
<data type="boolean"/>
|
153
153
|
</attribute>
|
154
154
|
</optional>
|
155
|
-
<
|
156
|
-
<ref name="PureTextElement"/>
|
157
|
-
</oneOrMore>
|
155
|
+
<ref name="XrefBody"/>
|
158
156
|
</element>
|
159
157
|
</define>
|
160
158
|
<define name="erefType">
|
@@ -188,6 +186,42 @@
|
|
188
186
|
<ref name="PureTextElement"/>
|
189
187
|
</oneOrMore>
|
190
188
|
</define>
|
189
|
+
<define name="localityStack">
|
190
|
+
<element name="localityStack">
|
191
|
+
<optional>
|
192
|
+
<attribute name="connective">
|
193
|
+
<choice>
|
194
|
+
<value>and</value>
|
195
|
+
<value>or</value>
|
196
|
+
<value>from</value>
|
197
|
+
<value>to</value>
|
198
|
+
<value/>
|
199
|
+
</choice>
|
200
|
+
</attribute>
|
201
|
+
</optional>
|
202
|
+
<zeroOrMore>
|
203
|
+
<ref name="locality"/>
|
204
|
+
</zeroOrMore>
|
205
|
+
</element>
|
206
|
+
</define>
|
207
|
+
<define name="sourceLocalityStack">
|
208
|
+
<element name="sourceLocalityStack">
|
209
|
+
<optional>
|
210
|
+
<attribute name="connective">
|
211
|
+
<choice>
|
212
|
+
<value>and</value>
|
213
|
+
<value>or</value>
|
214
|
+
<value>from</value>
|
215
|
+
<value>to</value>
|
216
|
+
<value/>
|
217
|
+
</choice>
|
218
|
+
</attribute>
|
219
|
+
</optional>
|
220
|
+
<zeroOrMore>
|
221
|
+
<ref name="sourceLocality"/>
|
222
|
+
</zeroOrMore>
|
223
|
+
</element>
|
224
|
+
</define>
|
191
225
|
<define name="ul">
|
192
226
|
<element name="ul">
|
193
227
|
<attribute name="id">
|
@@ -1098,6 +1132,16 @@
|
|
1098
1132
|
</define>
|
1099
1133
|
</include>
|
1100
1134
|
<!-- end overrides -->
|
1135
|
+
<define name="image" combine="choice">
|
1136
|
+
<element name="svg">
|
1137
|
+
<oneOrMore>
|
1138
|
+
<choice>
|
1139
|
+
<text/>
|
1140
|
+
<ref name="AnyElement"/>
|
1141
|
+
</choice>
|
1142
|
+
</oneOrMore>
|
1143
|
+
</element>
|
1144
|
+
</define>
|
1101
1145
|
<define name="MultilingualRenderingType">
|
1102
1146
|
<choice>
|
1103
1147
|
<value>common</value>
|
@@ -2631,4 +2675,30 @@
|
|
2631
2675
|
</zeroOrMore>
|
2632
2676
|
</element>
|
2633
2677
|
</define>
|
2678
|
+
<define name="XrefBody">
|
2679
|
+
<zeroOrMore>
|
2680
|
+
<ref name="XrefTarget"/>
|
2681
|
+
</zeroOrMore>
|
2682
|
+
<oneOrMore>
|
2683
|
+
<ref name="PureTextElement"/>
|
2684
|
+
</oneOrMore>
|
2685
|
+
</define>
|
2686
|
+
<define name="XrefTarget">
|
2687
|
+
<element name="location">
|
2688
|
+
<attribute name="target">
|
2689
|
+
<data type="string">
|
2690
|
+
<param name="pattern">\i\c*|\c+#\c+</param>
|
2691
|
+
</data>
|
2692
|
+
</attribute>
|
2693
|
+
<attribute name="connective">
|
2694
|
+
<choice>
|
2695
|
+
<value>and</value>
|
2696
|
+
<value>or</value>
|
2697
|
+
<value>from</value>
|
2698
|
+
<value>to</value>
|
2699
|
+
<value/>
|
2700
|
+
</choice>
|
2701
|
+
</attribute>
|
2702
|
+
</element>
|
2703
|
+
</define>
|
2634
2704
|
</grammar>
|
@@ -4,7 +4,7 @@ module Metanorma
|
|
4
4
|
module Ogc
|
5
5
|
class Processor < Metanorma::Processor
|
6
6
|
|
7
|
-
def initialize
|
7
|
+
def initialize # rubocop:disable Lint/MissingSuper
|
8
8
|
@short = :ogc
|
9
9
|
@input_format = :asciidoc
|
10
10
|
@asciidoctor_backend = :ogc
|
@@ -14,7 +14,7 @@ module Metanorma
|
|
14
14
|
super.merge(
|
15
15
|
html: "html",
|
16
16
|
doc: "doc",
|
17
|
-
pdf: "pdf"
|
17
|
+
pdf: "pdf",
|
18
18
|
)
|
19
19
|
end
|
20
20
|
|
@@ -41,14 +41,14 @@ module Metanorma
|
|
41
41
|
|
42
42
|
def output(isodoc_node, inname, outname, format, options={})
|
43
43
|
case format
|
44
|
-
when :html
|
45
|
-
|
46
|
-
when :doc
|
47
|
-
|
48
|
-
when :pdf
|
49
|
-
|
50
|
-
when :presentation
|
51
|
-
|
44
|
+
when :html then IsoDoc::Ogc::HtmlConvert.new(options)
|
45
|
+
.convert(inname, isodoc_node, nil, outname)
|
46
|
+
when :doc then IsoDoc::Ogc::WordConvert.new(options)
|
47
|
+
.convert(inname, isodoc_node, nil, outname)
|
48
|
+
when :pdf then IsoDoc::Ogc::PdfConvert.new(options)
|
49
|
+
.convert(inname, isodoc_node, nil, outname)
|
50
|
+
when :presentation then IsoDoc::Ogc::PresentationXMLConvert.new(options)
|
51
|
+
.convert(inname, isodoc_node, nil, outname)
|
52
52
|
else
|
53
53
|
super
|
54
54
|
end
|
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.5
|
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-
|
11
|
+
date: 2022-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: iso-639
|