metanorma-itu 1.1.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,4 @@
1
1
  require "isodoc"
2
- require_relative "metadata"
3
2
  require "fileutils"
4
3
  require_relative "./ref.rb"
5
4
  require_relative "./xref.rb"
@@ -8,32 +7,14 @@ require_relative "./terms.rb"
8
7
  module IsoDoc
9
8
  module ITU
10
9
  module BaseConvert
11
- def load_yaml(lang, script)
12
- y = if @i18nyaml then YAML.load_file(@i18nyaml)
13
- elsif lang == "en"
14
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
15
- else
16
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
17
- end
18
- super.merge(y)
19
- end
20
-
21
- def metadata_init(lang, script, labels)
22
- @meta = Metadata.new(lang, script, labels)
23
- end
24
-
25
- def xref_init(lang, script, klass, labels, options)
26
- @xrefs = Xref.new(lang, script, klass, labels,
27
- options.merge(hierarchical_assets: @hierarchical_assets))
28
- end
29
-
30
10
  FRONT_CLAUSE = "//*[parent::preface]"\
31
11
  "[not(local-name() = 'abstract')]".freeze
32
12
 
33
13
  def preface(isoxml, out)
34
14
  isoxml.xpath(ns(FRONT_CLAUSE)).each do |c|
15
+ next unless is_clause?(c.name)
35
16
  title = c&.at(ns("./title"))
36
- out.div **attr_code(id: c["id"]) do |s|
17
+ out.div **attr_code(clause_attrs(c)) do |s|
37
18
  clause_name(nil, title, s, class: "IntroTitle")
38
19
  c.elements.reject { |c1| c1.name == "title" }.each do |c1|
39
20
  parse(c1, s)
@@ -52,15 +33,8 @@ module IsoDoc
52
33
  ""
53
34
  end
54
35
 
55
- def note_label(node)
56
- n = @xrefs.get[node["id"]]
57
- (n.nil? || n[:label].nil? || n[:label].empty?) and
58
- return "#{@note_lbl} – "
59
- l10n("#{@note_lbl} #{n[:label]} – ")
60
- end
61
-
62
- def prefix_container(container, linkend, _target)
63
- l10n("#{linkend} #{@labels["in"]} #{@xrefs.anchor(container, :xref)}")
36
+ def note_delim
37
+ " – "
64
38
  end
65
39
 
66
40
  def ol_depth(node)
@@ -78,12 +52,7 @@ module IsoDoc
78
52
  def annex_name(annex, name, div)
79
53
  r_a = @meta.get[:doctype_original] == "recommendation-annex"
80
54
  div.h1 **{ class: r_a ? "RecommendationAnnex" : "Annex" } do |t|
81
- t << "#{@xrefs.anchor(annex['id'], :label)} "
82
- t.br
83
- t.br
84
- t.b do |b|
85
- name&.children&.each { |c2| parse(c2, b) }
86
- end
55
+ name&.children&.each { |c2| parse(c2, t) }
87
56
  end
88
57
  annex_obligation_subtitle(annex, div)
89
58
  end
@@ -91,34 +60,26 @@ module IsoDoc
91
60
  def annex_obligation_subtitle(annex, div)
92
61
  info = annex["obligation"] == "informative"
93
62
  div.p **{class: "annex_obligation" } do |p|
94
- p << (info ? @inform_annex_lbl : @norm_annex_lbl).
63
+ p << (info ? @i18n.inform_annex : @i18n.norm_annex).
95
64
  sub(/%/, @meta.get[:doctype] || "")
96
65
  end
97
66
  end
98
67
 
99
68
  def annex(isoxml, out)
100
- isoxml.xpath(ns("//annex")).each do |c|
101
- @meta.get[:doctype_original] == "recommendation-annex" or
102
- page_break(out)
103
- out.div **attr_code(id: c["id"], class: "Section3") do |s|
104
- annex_name(c, nil, s) unless c.at(ns("./title"))
105
- c.elements.each do |c1|
106
- if c1.name == "title" then annex_name(c, c1, s)
107
- else
108
- parse(c1, s)
69
+ isoxml.xpath(ns("//annex")).each do |c|
70
+ @meta.get[:doctype_original] == "recommendation-annex" or
71
+ page_break(out)
72
+ out.div **attr_code(id: c["id"], class: "Section3") do |s|
73
+ annex_name(c, nil, s) unless c.at(ns("./title"))
74
+ c.elements.each do |c1|
75
+ if c1.name == "title" then annex_name(c, c1, s)
76
+ else
77
+ parse(c1, s)
78
+ end
109
79
  end
110
80
  end
111
81
  end
112
82
  end
113
- end
114
-
115
- def i18n_init(lang, script)
116
- super
117
- end
118
-
119
- def fileloc(loc)
120
- File.join(File.dirname(__FILE__), loc)
121
- end
122
83
 
123
84
  def cleanup(docxml)
124
85
  super
@@ -136,18 +97,26 @@ module IsoDoc
136
97
  end
137
98
 
138
99
  def term_cleanup(docxml)
100
+ term_cleanup1(docxml)
101
+ term_cleanup2(docxml)
102
+ docxml
103
+ end
104
+
105
+ def term_cleanup1(docxml)
139
106
  docxml.xpath("//p[@class = 'Terms']").each do |d|
140
107
  h2 = d.at("./preceding-sibling::*[@class = 'TermNum'][1]")
141
108
  d.children.first.previous = "<b>#{h2.children.to_xml}</b>&nbsp;"
142
109
  d["id"] = h2["id"]
143
110
  h2.remove
144
111
  end
112
+ end
113
+
114
+ def term_cleanup2(docxml)
145
115
  docxml.xpath("//p[@class = 'TermNum']").each do |d|
146
116
  d1 = d.next_element and d1.name == "p" or next
147
117
  d1.children.each { |e| e.parent = d }
148
118
  d1.remove
149
119
  end
150
- docxml
151
120
  end
152
121
 
153
122
  def refs_cleanup(docxml)
@@ -167,29 +136,6 @@ module IsoDoc
167
136
  super
168
137
  end
169
138
 
170
- def get_eref_linkend(node)
171
- l = anchor_linkend(node, docid_l10n(node["target"] || node["citeas"]))
172
- l && !/^\[.*\]$/.match(l) and l = "[#{l}]"
173
- l += eref_localities(node.xpath(ns("./locality | ./localityStack")), l)
174
- contents = node.children.select do |c|
175
- !%w{locality localityStack}.include? c.name
176
- end
177
- return l if contents.nil? || contents.empty?
178
- Nokogiri::XML::NodeSet.new(node.document, contents).to_xml
179
- end
180
-
181
- def eref_parse(node, out)
182
- linkend = get_eref_linkend(node)
183
- href = eref_target(node)
184
- if node["type"] == "footnote"
185
- out.sup do |s|
186
- s.a(**{ "href": href }) { |l| l << linkend }
187
- end
188
- else
189
- out.a(**{ "href": href }) { |l| l << linkend }
190
- end
191
- end
192
-
193
139
  def middle_title(out)
194
140
  out.p(**{ class: "zzSTDTitle1" }) do |p|
195
141
  id = @meta.get[:docnumber] and p << "#{@meta.get[:doctype]} #{id}"
@@ -221,9 +167,11 @@ module IsoDoc
221
167
  end
222
168
 
223
169
  def note_p_parse(node, div)
170
+ name = node&.at(ns("./name"))&.remove
224
171
  div.p do |p|
225
- p.span **{ class: "note_label" } do |s|
226
- s << note_label(node)
172
+ name and p.span **{ class: "note_label" } do |s|
173
+ name.children.each { |n| parse(n, s) }
174
+ s << note_delim
227
175
  end
228
176
  node.first_element_child.children.each { |n| parse(n, p) }
229
177
  end
@@ -231,9 +179,11 @@ module IsoDoc
231
179
  end
232
180
 
233
181
  def note_parse1(node, div)
182
+ name = node&.at(ns("./name"))&.remove
234
183
  div.p do |p|
235
- p.span **{ class: "note_label" } do |s|
236
- s << note_label(node)
184
+ name and p.span **{ class: "note_label" } do |s|
185
+ name.children.each { |n| parse(n, s) }
186
+ #s << note_delim
237
187
  end
238
188
  end
239
189
  node.children.each { |n| parse(n, div) }
@@ -0,0 +1,349 @@
1
+ html, body, div, span, applet, object, iframe,
2
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
3
+ a, abbr, acronym, address, big, cite, code,
4
+ del, dfn, em, img, ins, kbd, q, s, samp,
5
+ small, strike, strong, sub, sup, tt, var,
6
+ b, u, i, center,
7
+ ol, ul, li,
8
+ fieldset, form, label, legend,
9
+ table, caption, tbody, tfoot, thead, tr, th, td,
10
+ article, aside, canvas, details, embed,
11
+ figure, figcaption, footer, header, hgroup,
12
+ menu, nav, output, ruby, section, summary,
13
+ time, mark, audio, video {
14
+ margin: 0;
15
+ padding: 0; }
16
+
17
+ html, body, div, span, applet, object, iframe,
18
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
19
+ a, abbr, acronym, address, big, cite, code,
20
+ del, dfn, em, img, ins, kbd, q, s, samp,
21
+ small, strike, strong, sub, sup, tt, var,
22
+ b, u, i, center,
23
+ dl, dt, dd, ol, ul, li,
24
+ fieldset, form, label, legend,
25
+ table, caption, tbody, tfoot, thead, tr, th, td,
26
+ article, aside, canvas, details, embed,
27
+ figure, figcaption, footer, header, hgroup,
28
+ menu, nav, output, ruby, section, summary,
29
+ time, mark, audio, video {
30
+ border: 0;
31
+ font-size: 100%; }
32
+
33
+ html, body, div, span, applet, object, iframe,
34
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
35
+ a, abbr, acronym, address, big, cite, code,
36
+ del, dfn, em, img, ins, kbd, q, s, samp,
37
+ small, strike, strong, tt, var,
38
+ b, u, i, center,
39
+ dl, dd, ol, ul, li,
40
+ fieldset, form, label, legend,
41
+ table, caption, tbody, tfoot, thead, tr, th, td,
42
+ article, aside, canvas, details, embed,
43
+ figure, figcaption, footer, header, hgroup,
44
+ menu, nav, output, ruby, section, summary,
45
+ time, mark, audio, video {
46
+ vertical-align: baseline; }
47
+
48
+ html, body, div, span, applet, object, iframe,
49
+ p, blockquote,
50
+ a, abbr, acronym, address, big, cite,
51
+ del, dfn, em, img, ins, q, s,
52
+ small, strike, strong, sub, sup, var,
53
+ b, u, i, center,
54
+ dl, dt, dd, ol, ul, li,
55
+ fieldset, form, label, legend,
56
+ table, caption, tbody, tfoot, thead, tr, th, td,
57
+ article, aside, canvas, details, embed,
58
+ figure, figcaption, footer, header, hgroup,
59
+ menu, nav, output, ruby, section, summary,
60
+ time, mark, audio, video {
61
+ font-family: {{bodyfont}}; }
62
+
63
+ code, pre, tt, kbd, samp {
64
+ font-family: {{monospacefont}};
65
+ font-variant-ligatures: none; }
66
+
67
+ code *, pre *, tt *, kbd *, samp * {
68
+ font-family: {{monospacefont}} !important;
69
+ font-variant-ligatures: none; }
70
+
71
+ article, aside, details, figcaption, figure,
72
+ footer, header, hgroup, menu, nav, section {
73
+ display: block; }
74
+
75
+ table {
76
+ border-collapse: collapse;
77
+ border-spacing: 0; }
78
+
79
+ h1, h2, h3, h4, h5, h6 {
80
+ font-family: {{headerfont}}; }
81
+
82
+ blockquote, q {
83
+ quotes: none; }
84
+ blockquote:before, blockquote:after, q:before, q:after {
85
+ content: '';
86
+ content: none; }
87
+
88
+ .h2Annex {
89
+ font-family: {{headerfont}}; }
90
+
91
+ dl {
92
+ display: grid;
93
+ grid-template-columns: max-content auto; }
94
+ dl dt p, dl dd p {
95
+ margin-top: 0; }
96
+ dl dt {
97
+ grid-column-start: 1; }
98
+ dl dd {
99
+ grid-column-start: 2; }
100
+
101
+ b, strong {
102
+ font-weight: bold; }
103
+
104
+ div.document-stage-band, div.document-type-band {
105
+ background-color: #333333; }
106
+
107
+ #standard-band {
108
+ background-color: #0AC442; }
109
+
110
+ #standard {
111
+ border-bottom: solid 3px #0AC442; }
112
+
113
+ #directive-band {
114
+ background-color: #540D6E; }
115
+
116
+ #directive {
117
+ border-bottom: solid 3px #540D6E; }
118
+
119
+ #guide-band {
120
+ background-color: #D183C9; }
121
+
122
+ #guide {
123
+ border-bottom: solid 3px #D183C9; }
124
+
125
+ #specification-band {
126
+ background-color: #65AFFF; }
127
+
128
+ #specification {
129
+ border-bottom: solid 3px #65AFFF; }
130
+
131
+ #report-band {
132
+ background-color: #3A405A; }
133
+
134
+ #report {
135
+ border-bottom: solid 3px #3A405A; }
136
+
137
+ #amendment-band {
138
+ background-color: #F26430; }
139
+
140
+ #amendment {
141
+ border-bottom: solid 3px #F26430; }
142
+
143
+ #corrigendum-band {
144
+ background-color: #C84630; }
145
+
146
+ #corrigendum {
147
+ border-bottom: solid 3px #C84630; }
148
+
149
+ #administrative-band {
150
+ background-color: #BFAE48; }
151
+
152
+ #administrative {
153
+ border-bottom: solid 3px #BFAE48; }
154
+
155
+ #advisory-band {
156
+ background-color: #BD9391; }
157
+
158
+ #advisory {
159
+ border-bottom: solid 3px #BD9391; }
160
+
161
+ #proposal-band {
162
+ background-color: #39A0ED; }
163
+
164
+ #proposal {
165
+ border-bottom: solid 3px #39A0ED; }
166
+
167
+ #working-draft-band {
168
+ background-color: #2D7393; }
169
+
170
+ #working-draft {
171
+ border-bottom: solid 3px #2D7393; }
172
+
173
+ #committee-draft-band {
174
+ background-color: #2A6B7C; }
175
+
176
+ #committee-draft {
177
+ border-bottom: solid 3px #2A6B7C; }
178
+
179
+ #draft-standard-band {
180
+ background-color: #1C7F7A; }
181
+
182
+ #draft-standard {
183
+ border-bottom: solid 3px #1C7F7A; }
184
+
185
+ #final-draft-band {
186
+ background-color: #53C170; }
187
+
188
+ #final-draft {
189
+ border-bottom: solid 3px #53C170; }
190
+
191
+ #published-band {
192
+ background-color: #069E2D; }
193
+
194
+ #published {
195
+ border-bottom: solid 3px #069E2D; }
196
+
197
+ #withdrawn-band {
198
+ background-color: #004E64; }
199
+
200
+ #withdrawn {
201
+ border-bottom: solid 3px #004E64; }
202
+
203
+ #cancelled-band {
204
+ background-color: #2E382E; }
205
+
206
+ #cancelled {
207
+ border-bottom: solid 3px #2E382E; }
208
+
209
+ .icon-svg {
210
+ width: 100%;
211
+ color: #5ecf86; }
212
+
213
+ .wrapper-top {
214
+ background: #fff;
215
+ color: #141115;
216
+ padding: 3em 0 6em 10em;
217
+ margin-left: 0em;
218
+ background: url(data:image/png;base64,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);
219
+ background-repeat: repeat-y;
220
+ background-size: 100px; }
221
+
222
+ .doc-type {
223
+ font-size: 18px;
224
+ letter-spacing: 4px;
225
+ color: #797979;
226
+ margin-bottom: 42px; }
227
+
228
+ .ITU-sector, .doc-identifier {
229
+ font-size: 42px;
230
+ font-weight: 800;
231
+ display: inline; }
232
+
233
+ .doc-info-left {
234
+ float: right;
235
+ padding-right: 42px; }
236
+
237
+ .doc-identifier, .publication-month {
238
+ display: block;
239
+ text-align: right; }
240
+
241
+ .publication-month {
242
+ font-size: 18px;
243
+ padding-top: 10px;
244
+ line-height: 1; }
245
+
246
+ .doc-category {
247
+ text-transform: uppercase;
248
+ font-size: 16px;
249
+ line-height: 1.2; }
250
+
251
+ .coverpage-title {
252
+ margin-top: 42px; }
253
+ .coverpage-title span {
254
+ display: block;
255
+ font-size: 20px;
256
+ line-height: 1.5; }
257
+
258
+ .coverpage-maturity,
259
+ .coverpage-stage {
260
+ font-family: {{bodyfont}};
261
+ font-weight: 400;
262
+ font-size: 1em;
263
+ margin: 0 0 2em 0;
264
+ text-transform: uppercase; }
265
+
266
+ span.doc-title, span.doc-annextitle {
267
+ font-size: 26px;
268
+ font-weight: 800;
269
+ margin-top: 20px;
270
+ margin-right: 42px; }
271
+
272
+ span.doc-title {
273
+ border-top: 2px solid #DA1D52; }
274
+
275
+ .doc-footer {
276
+ margin-top: 100px; }
277
+ .doc-footer .keywords {
278
+ display: block; }
279
+ .doc-footer div {
280
+ clear: both; }
281
+ .doc-footer span, .doc-footer .keywords {
282
+ font-size: 18px;
283
+ font-weight: 400;
284
+ letter-spacing: 0;
285
+ color: black;
286
+ float: left;
287
+ padding-right: 10px; }
288
+
289
+ .WordSection11 {
290
+ padding: 0 2em 0 3em; }
291
+
292
+ .info-section {
293
+ padding: 0; }
294
+ @media print {
295
+ .info-section {
296
+ display: none; } }
297
+ .prefatory-section {
298
+ padding: 0 3em 0 6em; }
299
+
300
+ .zzSTDTitle1, .zzSTDTitle2, .zzSTDTitle3, .MsoCommentText {
301
+ display: none; }
302
+
303
+ .coverpage {
304
+ text-align: left;
305
+ padding-left: 1.5em; }
306
+ @media print {
307
+ .coverpage {
308
+ height: 23cm; } }
309
+ /* Document Identity */
310
+ .coverpage-doc-identity {
311
+ font-size: 2em;
312
+ line-height: 2em; }
313
+
314
+ .coverpage-title .title-second {
315
+ display: none; }
316
+
317
+ .coverpage-stage-block {
318
+ font-family: {{bodyfont}};
319
+ font-weight: 600;
320
+ font-size: 1.25em;
321
+ margin: 2em 0em 2em 0em;
322
+ text-transform: uppercase; }
323
+
324
+ /* Draft Warning */
325
+ .coverpage-warning {
326
+ border: #f36f36 solid 2px;
327
+ color: #f36f36 !important;
328
+ margin: 1em 2em;
329
+ color: #2e81c2;
330
+ padding: 2em 1em 1em 1em;
331
+ border-radius: 25px; }
332
+
333
+ .coverpage-warning h1 {
334
+ margin-top: 0em; }
335
+
336
+ .coverpage-warning .title {
337
+ font-family: {{bodyfont}};
338
+ font-weight: 300;
339
+ text-transform: uppercase;
340
+ font-size: 1.2em; }
341
+
342
+ /* Copyright */
343
+ .copyright {
344
+ padding: 1em;
345
+ font-size: 0.9em;
346
+ text-align: left; }
347
+ @media print {
348
+ .copyright {
349
+ page-break-before: always; } }