metanorma-itu 1.0.13 → 1.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +8 -7
  3. data/.github/workflows/ubuntu.yml +12 -9
  4. data/.github/workflows/windows.yml +8 -8
  5. data/lib/asciidoctor/itu/biblio.rng +89 -32
  6. data/lib/asciidoctor/itu/cleanup.rb +80 -71
  7. data/lib/asciidoctor/itu/converter.rb +7 -11
  8. data/lib/asciidoctor/itu/front.rb +47 -18
  9. data/lib/asciidoctor/itu/isodoc.rng +475 -2
  10. data/lib/asciidoctor/itu/reqt.rng +23 -0
  11. data/lib/isodoc/itu/base_convert.rb +66 -16
  12. data/lib/isodoc/itu/html/_coverpage.scss +7 -3
  13. data/lib/isodoc/itu/html/header.html +8 -8
  14. data/lib/isodoc/itu/html/html_itu_titlepage.html +6 -7
  15. data/lib/isodoc/itu/html/htmlstyle.scss +9 -5
  16. data/lib/isodoc/itu/html/itu.scss +28 -1
  17. data/lib/isodoc/itu/html/scripts.html +14 -27
  18. data/lib/isodoc/itu/html/word_itu_intro.html +11 -1
  19. data/lib/isodoc/itu/html/word_itu_titlepage.html +3 -6
  20. data/lib/isodoc/itu/html/wordstyle.scss +6 -5
  21. data/lib/isodoc/itu/html_convert.rb +3 -3
  22. data/lib/isodoc/itu/i18n-en.yaml +2 -1
  23. data/lib/isodoc/itu/itu.recommendation-annex.xsl +3903 -0
  24. data/lib/isodoc/itu/itu.recommendation.xsl +3903 -0
  25. data/lib/isodoc/itu/itu.resolution.xsl +3903 -0
  26. data/lib/isodoc/itu/metadata.rb +16 -6
  27. data/lib/isodoc/itu/pdf_convert.rb +17 -44
  28. data/lib/isodoc/itu/ref.rb +48 -21
  29. data/lib/isodoc/itu/terms.rb +5 -6
  30. data/lib/isodoc/itu/word_convert.rb +10 -8
  31. data/lib/isodoc/itu/xref.rb +27 -16
  32. data/lib/metanorma/itu/processor.rb +8 -0
  33. data/lib/metanorma/itu/version.rb +1 -1
  34. data/metanorma-itu.gemspec +1 -1
  35. metadata +7 -5
  36. data/lib/isodoc/itu/html/scripts.pdf.html +0 -72
@@ -90,15 +90,6 @@ module Asciidoctor
90
90
  end
91
91
  end
92
92
 
93
- def norm_ref_parse(attrs, xml, node)
94
- @norm_ref = true
95
- xml.references **attr_code(attrs) do |xml_section|
96
- xml_section.title { |t| t << "References" }
97
- xml_section << node.content
98
- end
99
- @norm_ref = false
100
- end
101
-
102
93
  def term_def_title(toplevel, node)
103
94
  return node.title unless toplevel
104
95
  "Definitions"
@@ -131,8 +122,6 @@ module Asciidoctor
131
122
  div.next = "<p>#{@term_def_boilerplate}</p>"
132
123
  end
133
124
 
134
- NORM_REF = "//bibliography/references[title = 'References']".freeze
135
-
136
125
  def load_yaml(lang, script)
137
126
  y = if @i18nyaml then YAML.load_file(@i18nyaml)
138
127
  elsif lang == "en"
@@ -148,6 +137,13 @@ module Asciidoctor
148
137
  super
149
138
  end
150
139
 
140
+ def metadata_keywords(node, xml)
141
+ return unless node.attr("keywords")
142
+ node.attr("keywords").split(/,[ ]*/).sort.each_with_index do |kw, i|
143
+ xml.keyword (i == 0 ? kw.capitalize : kw)
144
+ end
145
+ end
146
+
151
147
  def html_extract_attributes(node)
152
148
  super.merge(hierarchical_assets: node.attr("hierarchical-object-numbering"))
153
149
  end
@@ -4,36 +4,63 @@ require "fileutils"
4
4
 
5
5
  module Asciidoctor
6
6
  module ITU
7
-
8
- # A {Converter} implementation that generates RSD output, and a document
9
- # schema encapsulation of the document for validation
10
- #
11
7
  class Converter < Standoc::Converter
12
8
  def metadata_status(node, xml)
13
9
  xml.status do |s|
14
10
  s.stage (node.attributes.has_key?("draft") ? "draft" :
15
- (node.attr("status") || node.attr("docstage") || "published" ))
11
+ (node.attr("status") || node.attr("docstage") ||
12
+ "published" ))
16
13
  end
17
14
  end
18
15
 
19
16
  def title_english(node, xml)
20
- ["en"].each do |lang|
21
- at = { language: lang, format: "text/plain", type: "main" }
22
- a = node.attr("title") || node.attr("title-en") || node.title
23
- xml.title Asciidoctor::Standoc::Utils::asciidoc_sub(a), **attr_code(at)
24
- if a = node.attr("annextitle") || node.attr("annextitle-en")
25
- at[:type] = "annex"
26
- xml.title Asciidoctor::Standoc::Utils::asciidoc_sub(a), **attr_code(at)
17
+ at = { language: "en", format: "text/plain", type: "main" }
18
+ a = node.attr("title") || node.attr("title-en")
19
+ xml.title **attr_code(at) do |t|
20
+ t << (Asciidoctor::Standoc::Utils::asciidoc_sub(a) || node.title)
21
+ end
22
+ if a = node.attr("annextitle") || node.attr("annextitle-en")
23
+ at[:type] = "annex"
24
+ xml.title **attr_code(at) do |t|
25
+ t << Asciidoctor::Standoc::Utils::asciidoc_sub(a)
27
26
  end
28
27
  end
29
28
  end
30
29
 
31
30
  def title_otherlangs(node, xml)
32
31
  node.attributes.each do |k, v|
33
- next unless /^(annex)?title-(?<titlelang>.+)$/ =~ k
34
- next if titlelang == "en"
35
- xml.title v, { language: titlelang, format: "text/plain",
36
- type: /^annex/.match(k) ? "annex" : "main" }
32
+ next unless /^(annex)?title-(?<lang>.+)$/ =~ k
33
+ next if lang == "en"
34
+ type = /^annex/.match(k) ? "annex" : "main"
35
+ xml.title **attr_code(language: lang, format: "text/plain",
36
+ type: type) do |t|
37
+ t << v
38
+ end
39
+ end
40
+ end
41
+
42
+ def title(node, xml)
43
+ super
44
+ subtitle_english(node, xml)
45
+ subtitle_otherlangs(node, xml)
46
+ end
47
+
48
+ def subtitle_english(node, xml)
49
+ at = { language: "en", format: "text/plain", type: "subtitle" }
50
+ a = node.attr("subtitle") || node.attr("subtitle-en")
51
+ xml.title **attr_code(at) do |t|
52
+ t << Asciidoctor::Standoc::Utils::asciidoc_sub(a)
53
+ end
54
+ end
55
+
56
+ def subtitle_otherlangs(node, xml)
57
+ node.attributes.each do |k, v|
58
+ next unless /^subtitle-(?<lang>.+)$/ =~ k
59
+ next if lang == "en"
60
+ xml.title **attr_code(language: lang, format: "text/plain",
61
+ type: "subtitle") do |t|
62
+ t << v
63
+ end
37
64
  end
38
65
  end
39
66
 
@@ -89,11 +116,13 @@ module Asciidoctor
89
116
 
90
117
  def metadata_committee2(node, g, suffix, prefix)
91
118
  g.name node.attr("#{prefix}group#{suffix}")
92
- g.acronym node.attr("#{prefix}groupacronym#{suffix}") if node.attr("#{prefix}groupacronym#{suffix}")
119
+ node.attr("#{prefix}groupacronym#{suffix}") and
120
+ g.acronym node.attr("#{prefix}groupacronym#{suffix}")
93
121
  if node.attr("#{prefix}groupyearstart#{suffix}")
94
122
  g.period do |p|
95
123
  p.start node.attr("#{prefix}groupyearstart#{suffix}")
96
- p.end node.attr("#{prefix}groupyearend#{suffix}") if node.attr("#{prefix}groupacronym#{suffix}")
124
+ node.attr("#{prefix}groupacronym#{suffix}") and
125
+ p.end node.attr("#{prefix}groupyearend#{suffix}")
97
126
  end
98
127
  end
99
128
  end
@@ -53,9 +53,96 @@
53
53
  <optional>
54
54
  <attribute name="alt"/>
55
55
  </optional>
56
+ <optional>
57
+ <attribute name="case">
58
+ <choice>
59
+ <value>capital</value>
60
+ <value>lowercase</value>
61
+ </choice>
62
+ </attribute>
63
+ </optional>
56
64
  <text/>
57
65
  </element>
58
66
  </define>
67
+ <define name="ul">
68
+ <element name="ul">
69
+ <attribute name="id">
70
+ <data type="ID"/>
71
+ </attribute>
72
+ <optional>
73
+ <attribute name="keep-with-next">
74
+ <data type="boolean"/>
75
+ </attribute>
76
+ </optional>
77
+ <optional>
78
+ <attribute name="keep-lines-together">
79
+ <data type="boolean"/>
80
+ </attribute>
81
+ </optional>
82
+ <oneOrMore>
83
+ <ref name="li"/>
84
+ </oneOrMore>
85
+ <zeroOrMore>
86
+ <ref name="note"/>
87
+ </zeroOrMore>
88
+ </element>
89
+ </define>
90
+ <define name="ol">
91
+ <element name="ol">
92
+ <attribute name="id">
93
+ <data type="ID"/>
94
+ </attribute>
95
+ <optional>
96
+ <attribute name="keep-with-next">
97
+ <data type="boolean"/>
98
+ </attribute>
99
+ </optional>
100
+ <optional>
101
+ <attribute name="keep-lines-together">
102
+ <data type="boolean"/>
103
+ </attribute>
104
+ </optional>
105
+ <attribute name="type">
106
+ <choice>
107
+ <value>roman</value>
108
+ <value>alphabet</value>
109
+ <value>arabic</value>
110
+ <value>roman_upper</value>
111
+ <value>alphabet_upper</value>
112
+ </choice>
113
+ </attribute>
114
+ <oneOrMore>
115
+ <ref name="li"/>
116
+ </oneOrMore>
117
+ <zeroOrMore>
118
+ <ref name="note"/>
119
+ </zeroOrMore>
120
+ </element>
121
+ </define>
122
+ <define name="dl">
123
+ <element name="dl">
124
+ <attribute name="id">
125
+ <data type="ID"/>
126
+ </attribute>
127
+ <optional>
128
+ <attribute name="keep-with-next">
129
+ <data type="boolean"/>
130
+ </attribute>
131
+ </optional>
132
+ <optional>
133
+ <attribute name="keep-lines-together">
134
+ <data type="boolean"/>
135
+ </attribute>
136
+ </optional>
137
+ <oneOrMore>
138
+ <ref name="dt"/>
139
+ <ref name="dd"/>
140
+ </oneOrMore>
141
+ <zeroOrMore>
142
+ <ref name="note"/>
143
+ </zeroOrMore>
144
+ </element>
145
+ </define>
59
146
  <define name="example">
60
147
  <element name="example">
61
148
  <attribute name="id">
@@ -69,6 +156,19 @@
69
156
  <optional>
70
157
  <attribute name="subsequence"/>
71
158
  </optional>
159
+ <optional>
160
+ <attribute name="number"/>
161
+ </optional>
162
+ <optional>
163
+ <attribute name="keep-with-next">
164
+ <data type="boolean"/>
165
+ </attribute>
166
+ </optional>
167
+ <optional>
168
+ <attribute name="keep-lines-together">
169
+ <data type="boolean"/>
170
+ </attribute>
171
+ </optional>
72
172
  <optional>
73
173
  <ref name="tname"/>
74
174
  </optional>
@@ -89,6 +189,296 @@
89
189
  </zeroOrMore>
90
190
  </element>
91
191
  </define>
192
+ <define name="table">
193
+ <element name="table">
194
+ <attribute name="id">
195
+ <data type="ID"/>
196
+ </attribute>
197
+ <optional>
198
+ <attribute name="unnumbered">
199
+ <data type="boolean"/>
200
+ </attribute>
201
+ </optional>
202
+ <optional>
203
+ <attribute name="number"/>
204
+ </optional>
205
+ <optional>
206
+ <attribute name="subsequence"/>
207
+ </optional>
208
+ <optional>
209
+ <attribute name="alt"/>
210
+ </optional>
211
+ <optional>
212
+ <attribute name="summary"/>
213
+ </optional>
214
+ <optional>
215
+ <attribute name="uri">
216
+ <data type="anyURI"/>
217
+ </attribute>
218
+ </optional>
219
+ <optional>
220
+ <attribute name="keep-with-next">
221
+ <data type="boolean"/>
222
+ </attribute>
223
+ </optional>
224
+ <optional>
225
+ <attribute name="keep-lines-together">
226
+ <data type="boolean"/>
227
+ </attribute>
228
+ </optional>
229
+ <optional>
230
+ <ref name="tname"/>
231
+ </optional>
232
+ <optional>
233
+ <ref name="thead"/>
234
+ </optional>
235
+ <ref name="tbody"/>
236
+ <optional>
237
+ <ref name="tfoot"/>
238
+ </optional>
239
+ <zeroOrMore>
240
+ <ref name="table-note"/>
241
+ </zeroOrMore>
242
+ <optional>
243
+ <ref name="dl"/>
244
+ </optional>
245
+ </element>
246
+ </define>
247
+ <define name="figure">
248
+ <element name="figure">
249
+ <attribute name="id">
250
+ <data type="ID"/>
251
+ </attribute>
252
+ <optional>
253
+ <attribute name="unnumbered">
254
+ <data type="boolean"/>
255
+ </attribute>
256
+ </optional>
257
+ <optional>
258
+ <attribute name="number"/>
259
+ </optional>
260
+ <optional>
261
+ <attribute name="subsequence"/>
262
+ </optional>
263
+ <optional>
264
+ <attribute name="keep-with-next">
265
+ <data type="boolean"/>
266
+ </attribute>
267
+ </optional>
268
+ <optional>
269
+ <attribute name="keep-lines-together">
270
+ <data type="boolean"/>
271
+ </attribute>
272
+ </optional>
273
+ <optional>
274
+ <attribute name="class"/>
275
+ </optional>
276
+ <optional>
277
+ <ref name="source"/>
278
+ </optional>
279
+ <optional>
280
+ <ref name="tname"/>
281
+ </optional>
282
+ <choice>
283
+ <ref name="image"/>
284
+ <ref name="video"/>
285
+ <ref name="audio"/>
286
+ <ref name="pre"/>
287
+ <oneOrMore>
288
+ <ref name="paragraph-with-footnote"/>
289
+ </oneOrMore>
290
+ <zeroOrMore>
291
+ <ref name="figure"/>
292
+ </zeroOrMore>
293
+ </choice>
294
+ <zeroOrMore>
295
+ <ref name="fn"/>
296
+ </zeroOrMore>
297
+ <optional>
298
+ <ref name="dl"/>
299
+ </optional>
300
+ <zeroOrMore>
301
+ <ref name="note"/>
302
+ </zeroOrMore>
303
+ </element>
304
+ </define>
305
+ <define name="sourcecode">
306
+ <element name="sourcecode">
307
+ <attribute name="id">
308
+ <data type="ID"/>
309
+ </attribute>
310
+ <optional>
311
+ <attribute name="unnumbered">
312
+ <data type="boolean"/>
313
+ </attribute>
314
+ </optional>
315
+ <optional>
316
+ <attribute name="number"/>
317
+ </optional>
318
+ <optional>
319
+ <attribute name="subsequence"/>
320
+ </optional>
321
+ <optional>
322
+ <attribute name="keep-with-next">
323
+ <data type="boolean"/>
324
+ </attribute>
325
+ </optional>
326
+ <optional>
327
+ <attribute name="keep-lines-together">
328
+ <data type="boolean"/>
329
+ </attribute>
330
+ </optional>
331
+ <optional>
332
+ <attribute name="lang"/>
333
+ </optional>
334
+ <optional>
335
+ <ref name="tname"/>
336
+ </optional>
337
+ <oneOrMore>
338
+ <choice>
339
+ <text/>
340
+ <ref name="callout"/>
341
+ </choice>
342
+ </oneOrMore>
343
+ <zeroOrMore>
344
+ <ref name="annotation"/>
345
+ </zeroOrMore>
346
+ <zeroOrMore>
347
+ <ref name="note"/>
348
+ </zeroOrMore>
349
+ </element>
350
+ </define>
351
+ <define name="formula">
352
+ <element name="formula">
353
+ <attribute name="id">
354
+ <data type="ID"/>
355
+ </attribute>
356
+ <optional>
357
+ <attribute name="unnumbered">
358
+ <data type="boolean"/>
359
+ </attribute>
360
+ </optional>
361
+ <optional>
362
+ <attribute name="number"/>
363
+ </optional>
364
+ <optional>
365
+ <attribute name="subsequence"/>
366
+ </optional>
367
+ <optional>
368
+ <attribute name="keep-with-next">
369
+ <data type="boolean"/>
370
+ </attribute>
371
+ </optional>
372
+ <optional>
373
+ <attribute name="keep-lines-together">
374
+ <data type="boolean"/>
375
+ </attribute>
376
+ </optional>
377
+ <optional>
378
+ <attribute name="inequality">
379
+ <data type="boolean"/>
380
+ </attribute>
381
+ </optional>
382
+ <ref name="stem"/>
383
+ <optional>
384
+ <ref name="dl"/>
385
+ </optional>
386
+ <zeroOrMore>
387
+ <ref name="note"/>
388
+ </zeroOrMore>
389
+ </element>
390
+ </define>
391
+ <define name="ParagraphType">
392
+ <attribute name="id">
393
+ <data type="ID"/>
394
+ </attribute>
395
+ <optional>
396
+ <attribute name="align">
397
+ <ref name="Alignments"/>
398
+ </attribute>
399
+ </optional>
400
+ <optional>
401
+ <attribute name="keep-with-next">
402
+ <data type="boolean"/>
403
+ </attribute>
404
+ </optional>
405
+ <optional>
406
+ <attribute name="keep-lines-together">
407
+ <data type="boolean"/>
408
+ </attribute>
409
+ </optional>
410
+ <zeroOrMore>
411
+ <ref name="TextElement"/>
412
+ </zeroOrMore>
413
+ <zeroOrMore>
414
+ <ref name="note"/>
415
+ </zeroOrMore>
416
+ </define>
417
+ <define name="paragraph-with-footnote">
418
+ <element name="p">
419
+ <attribute name="id">
420
+ <data type="ID"/>
421
+ </attribute>
422
+ <optional>
423
+ <attribute name="align">
424
+ <ref name="Alignments"/>
425
+ </attribute>
426
+ </optional>
427
+ <optional>
428
+ <attribute name="keep-with-next">
429
+ <data type="boolean"/>
430
+ </attribute>
431
+ </optional>
432
+ <optional>
433
+ <attribute name="keep-lines-together">
434
+ <data type="boolean"/>
435
+ </attribute>
436
+ </optional>
437
+ <zeroOrMore>
438
+ <choice>
439
+ <ref name="TextElement"/>
440
+ <ref name="fn"/>
441
+ </choice>
442
+ </zeroOrMore>
443
+ <zeroOrMore>
444
+ <ref name="note"/>
445
+ </zeroOrMore>
446
+ </element>
447
+ </define>
448
+ <define name="quote">
449
+ <element name="quote">
450
+ <attribute name="id">
451
+ <data type="ID"/>
452
+ </attribute>
453
+ <optional>
454
+ <attribute name="alignment">
455
+ <ref name="Alignments"/>
456
+ </attribute>
457
+ </optional>
458
+ <optional>
459
+ <attribute name="keep-with-next">
460
+ <data type="boolean"/>
461
+ </attribute>
462
+ </optional>
463
+ <optional>
464
+ <attribute name="keep-lines-together">
465
+ <data type="boolean"/>
466
+ </attribute>
467
+ </optional>
468
+ <optional>
469
+ <ref name="quote-source"/>
470
+ </optional>
471
+ <optional>
472
+ <ref name="quote-author"/>
473
+ </optional>
474
+ <oneOrMore>
475
+ <ref name="paragraph-with-footnote"/>
476
+ </oneOrMore>
477
+ <zeroOrMore>
478
+ <ref name="note"/>
479
+ </zeroOrMore>
480
+ </element>
481
+ </define>
92
482
  <define name="BibDataExtensionType">
93
483
  <ref name="doctype"/>
94
484
  <optional>
@@ -129,6 +519,9 @@
129
519
  </choice>
130
520
  </attribute>
131
521
  </optional>
522
+ <attribute name="normative">
523
+ <data type="boolean"/>
524
+ </attribute>
132
525
  <optional>
133
526
  <ref name="section-title"/>
134
527
  </optional>
@@ -154,6 +547,30 @@
154
547
  <attribute name="id">
155
548
  <data type="ID"/>
156
549
  </attribute>
550
+ <optional>
551
+ <attribute name="unnumbered">
552
+ <data type="boolean"/>
553
+ </attribute>
554
+ </optional>
555
+ <optional>
556
+ <attribute name="number"/>
557
+ </optional>
558
+ <optional>
559
+ <attribute name="subsequence"/>
560
+ </optional>
561
+ <optional>
562
+ <attribute name="keep-with-next">
563
+ <data type="boolean"/>
564
+ </attribute>
565
+ </optional>
566
+ <optional>
567
+ <attribute name="keep-lines-together">
568
+ <data type="boolean"/>
569
+ </attribute>
570
+ </optional>
571
+ <optional>
572
+ <attribute name="type"/>
573
+ </optional>
157
574
  <oneOrMore>
158
575
  <choice>
159
576
  <ref name="paragraph"/>
@@ -305,6 +722,21 @@
305
722
  </define>
306
723
  </include>
307
724
  <!-- end overrides -->
725
+ <define name="TextElement" combine="choice">
726
+ <ref name="concept"/>
727
+ </define>
728
+ <define name="concept">
729
+ <element name="concept">
730
+ <optional>
731
+ <attribute name="term"/>
732
+ </optional>
733
+ <choice>
734
+ <ref name="eref"/>
735
+ <ref name="xref"/>
736
+ <ref name="termref"/>
737
+ </choice>
738
+ </element>
739
+ </define>
308
740
  <define name="BasicBlock" combine="choice">
309
741
  <choice>
310
742
  <ref name="requirement"/>
@@ -884,7 +1316,36 @@
884
1316
  <attribute name="id">
885
1317
  <data type="ID"/>
886
1318
  </attribute>
887
- <ref name="paragraph"/>
1319
+ <optional>
1320
+ <attribute name="unnumbered">
1321
+ <data type="boolean"/>
1322
+ </attribute>
1323
+ </optional>
1324
+ <optional>
1325
+ <attribute name="number"/>
1326
+ </optional>
1327
+ <optional>
1328
+ <attribute name="subsequence"/>
1329
+ </optional>
1330
+ <optional>
1331
+ <attribute name="keep-with-next">
1332
+ <data type="boolean"/>
1333
+ </attribute>
1334
+ </optional>
1335
+ <optional>
1336
+ <attribute name="keep-lines-together">
1337
+ <data type="boolean"/>
1338
+ </attribute>
1339
+ </optional>
1340
+ <oneOrMore>
1341
+ <choice>
1342
+ <ref name="paragraph"/>
1343
+ <ref name="ul"/>
1344
+ <ref name="ol"/>
1345
+ <ref name="dl"/>
1346
+ <ref name="formula"/>
1347
+ </choice>
1348
+ </oneOrMore>
888
1349
  </element>
889
1350
  </define>
890
1351
  <define name="termexample">
@@ -911,7 +1372,10 @@
911
1372
  </define>
912
1373
  <define name="origin">
913
1374
  <element name="origin">
914
- <ref name="erefType"/>
1375
+ <choice>
1376
+ <ref name="erefType"/>
1377
+ <ref name="termref"/>
1378
+ </choice>
915
1379
  </element>
916
1380
  </define>
917
1381
  <define name="modification">
@@ -919,6 +1383,15 @@
919
1383
  <ref name="paragraph"/>
920
1384
  </element>
921
1385
  </define>
1386
+ <define name="termref">
1387
+ <element name="termref">
1388
+ <attribute name="base"/>
1389
+ <attribute name="target"/>
1390
+ <optional>
1391
+ <text/>
1392
+ </optional>
1393
+ </element>
1394
+ </define>
922
1395
  <define name="structuredidentifier">
923
1396
  <element name="structuredidentifier">
924
1397
  <optional>