metanorma-itu 1.2.2 → 1.2.7

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/rake.yml +63 -0
  3. data/README.adoc +3 -4
  4. data/lib/asciidoctor/itu/basicdoc.rng +23 -0
  5. data/lib/asciidoctor/itu/cleanup.rb +1 -1
  6. data/lib/asciidoctor/itu/converter.rb +3 -2
  7. data/lib/asciidoctor/itu/front.rb +36 -12
  8. data/lib/asciidoctor/itu/isodoc.rng +135 -58
  9. data/lib/asciidoctor/itu/itu.rng +67 -0
  10. data/lib/isodoc/itu/base_convert.rb +1 -6
  11. data/lib/isodoc/itu/html/_coverpage.css +8 -1
  12. data/lib/isodoc/itu/html/_coverpage.scss +4 -0
  13. data/lib/isodoc/itu/html/header.html +8 -8
  14. data/lib/isodoc/itu/html/html_itu_titlepage.html +23 -0
  15. data/lib/isodoc/itu/html/htmlstyle.css +13 -2
  16. data/lib/isodoc/itu/html/itu.css +16 -4
  17. data/lib/isodoc/itu/html/itu.scss +19 -5
  18. data/lib/isodoc/itu/html/word_itu_intro.html +16 -0
  19. data/lib/isodoc/itu/html/word_itu_titlepage.html +136 -3
  20. data/lib/isodoc/itu/html_convert.rb +3 -1
  21. data/lib/isodoc/itu/i18n-en.yaml +2 -0
  22. data/lib/isodoc/itu/itu.recommendation-annex.xsl +996 -232
  23. data/lib/isodoc/itu/itu.recommendation.xsl +996 -232
  24. data/lib/isodoc/itu/itu.resolution.xsl +996 -232
  25. data/lib/isodoc/itu/metadata.rb +62 -3
  26. data/lib/isodoc/itu/presentation_xml_convert.rb +16 -0
  27. data/lib/isodoc/itu/terms.rb +7 -30
  28. data/lib/isodoc/itu/word_cleanup.rb +152 -0
  29. data/lib/isodoc/itu/word_convert.rb +1 -125
  30. data/lib/isodoc/itu/xref.rb +4 -3
  31. data/lib/metanorma/itu/version.rb +1 -1
  32. data/metanorma-itu.gemspec +3 -1
  33. metadata +34 -7
  34. data/.github/workflows/macos.yml +0 -38
  35. data/.github/workflows/ubuntu.yml +0 -56
  36. data/.github/workflows/windows.yml +0 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca92fde1a59224dabe1a60e9972946be9f5b4ee3a0ddc0b9d18b26d2ace7b070
4
- data.tar.gz: c6ca6f1c6aab657534d9eba98a60ffccf57eff743b3f8d99601aee2706c47996
3
+ metadata.gz: 2ec6ae3e4b2d44ccd7e6ab9addb0f53c6d84aa9750ceddd4e78a17db546c1714
4
+ data.tar.gz: 0e3b9e4225a67f3dfdc9c774e9a1f1bc90b5348fbec12056ae15e03baec7ef8d
5
5
  SHA512:
6
- metadata.gz: e465d057bb288694d8ebb48c2e123df2cbea58b9a434fe033d9e41c5077eb00a027ae6a7ecfa653f416403510bed79cc3d4df1d438af0e4aa6eca8501175bf4d
7
- data.tar.gz: f9c3be01cb4ade45f54f4aaba89dbdd3d4a03f53fb978c2bf1bb985587f5f4000c5dbea23042bf41a3037ec82ce6da0984b85f434c5e9f0d712017f56230819e
6
+ metadata.gz: feb1aff54a346048fbe9fe1ae0e88c2721ce9a95488c74f663942e9db84853c94fc2181eac6c2e84c74724be68108dd567b98fd0eedecaae87a9d2a6efa43e1d
7
+ data.tar.gz: a1e4f89fdbae6f567e1e310e82b4b3c36a6cad23117aa9ee5e3530eefd9a22a8fb7fd3019366a9b0d3b04046eda67c5eb4e98c8f1cfc1c26e9d67e4216ac1fe8
@@ -0,0 +1,63 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: rake
4
+
5
+ on:
6
+ push:
7
+ branches: [ master, main ]
8
+ tags: [ v* ]
9
+ pull_request:
10
+
11
+ jobs:
12
+ rake:
13
+ name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
14
+ runs-on: ${{ matrix.os }}
15
+ continue-on-error: ${{ matrix.experimental }}
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ ruby: [ '2.6', '2.5', '2.4' ]
20
+ os: [ ubuntu-latest, windows-latest, macos-latest ]
21
+ experimental: [ false ]
22
+ include:
23
+ - ruby: '2.7'
24
+ os: 'ubuntu-latest'
25
+ experimental: true
26
+ - ruby: '2.7'
27
+ os: 'windows-latest'
28
+ experimental: true
29
+ - ruby: '2.7'
30
+ os: 'macos-latest'
31
+ experimental: true
32
+ steps:
33
+ - uses: actions/checkout@master
34
+
35
+ - uses: ruby/setup-ruby@v1
36
+ with:
37
+ ruby-version: ${{ matrix.ruby }}
38
+
39
+ - uses: actions/cache@v1
40
+ with:
41
+ path: vendor/bundle
42
+ key: bundle-${{ matrix.os }}-${{ matrix.ruby }}-${{ hashFiles('**/*.gemspec') }}
43
+ restore-keys: bundle-${{ matrix.os }}-${{ matrix.ruby }}
44
+
45
+ - run: bundle config set path 'vendor/bundle'
46
+
47
+ - run: bundle install --jobs 4 --retry 3
48
+
49
+ - run: bundle exec rake
50
+
51
+ notify:
52
+ name: Trigger notify workflow
53
+ needs: rake
54
+ runs-on: ubuntu-latest
55
+ steps:
56
+ - name: Trigger notify workflow
57
+ uses: Sibz/github-status-action@v1
58
+ with:
59
+ authToken: ${{ secrets.GITHUB_TOKEN }}
60
+ context: 'tests-passed-successfully'
61
+ description: 'Tests passed successfully'
62
+ state: 'success'
63
+ sha: ${{ github.event.pull_request.head.sha || github.sha }}
@@ -1,16 +1,15 @@
1
1
  = metanorma-itu: Metanorma for ITU
2
2
 
3
3
  image:https://img.shields.io/gem/v/metanorma-itu.svg["Gem Version", link="https://rubygems.org/gems/metanorma-itu"]
4
- image:https://github.com/metanorma/metanorma-itu/workflows/macos/badge.svg["Build Status (macOS)", link="https://github.com/metanorma/metanorma-itu/actions?workflow=macos"]
5
- image:https://github.com/metanorma/metanorma-itu/workflows/ubuntu/badge.svg["Build Status (ubuntu)", link="https://github.com/metanorma/metanorma-itu/actions?workflow=ubuntu"]
6
- image:https://github.com/metanorma/metanorma-itu/workflows/windows/badge.svg["Build Status (Windows)", link="https://github.com/metanorma/metanorma-itu/actions?workflow=windows"]
4
+ image:https://github.com/metanorma/metanorma-itu/workflows/rake/badge.svg["Build Status", link="https://github.com/metanorma/metanorma-itu/actions?workflow=rake"]
7
5
  image:https://codeclimate.com/github/metanorma/metanorma-itu/badges/gpa.svg["Code Climate", link="https://codeclimate.com/github/metanorma/metanorma-itu"]
8
6
  image:https://img.shields.io/github/issues-pr-raw/metanorma/metanorma-itu.svg["Pull Requests", link="https://github.com/metanorma/metanorma-itu/pulls"]
9
7
  image:https://img.shields.io/github/commits-since/metanorma/metanorma-itu/latest.svg["Commits since latest",link="https://github.com/metanorma/metanorma-itu/releases"]
10
8
 
11
9
  == Functionality
12
10
 
13
- This gem processes Metanorma input for generating ITU (ITU-T, ITU-D) documents.
11
+ This gem processes https://www.metanorma.com[Metanorma documents] following a template for generating ITU
12
+ standards and documents.
14
13
 
15
14
  The implementation inherits from https://github.com/metanorma/metanorma-standoc.
16
15
 
@@ -402,6 +402,16 @@
402
402
  </choice>
403
403
  </attribute>
404
404
  </optional>
405
+ <optional>
406
+ <attribute name="valign">
407
+ <choice>
408
+ <value>top</value>
409
+ <value>middle</value>
410
+ <value>bottom</value>
411
+ <value>baseline</value>
412
+ </choice>
413
+ </attribute>
414
+ </optional>
405
415
  <choice>
406
416
  <zeroOrMore>
407
417
  <ref name="TextElement"/>
@@ -429,6 +439,16 @@
429
439
  </choice>
430
440
  </attribute>
431
441
  </optional>
442
+ <optional>
443
+ <attribute name="valign">
444
+ <choice>
445
+ <value>top</value>
446
+ <value>middle</value>
447
+ <value>bottom</value>
448
+ <value>baseline</value>
449
+ </choice>
450
+ </attribute>
451
+ </optional>
432
452
  <choice>
433
453
  <zeroOrMore>
434
454
  <ref name="TextElement"/>
@@ -998,6 +1018,9 @@
998
1018
  <value>alphabet_upper</value>
999
1019
  </choice>
1000
1020
  </attribute>
1021
+ <optional>
1022
+ <attribute name="start"/>
1023
+ </optional>
1001
1024
  <oneOrMore>
1002
1025
  <ref name="li"/>
1003
1026
  </oneOrMore>
@@ -11,7 +11,7 @@ module Asciidoctor
11
11
  super
12
12
  xmldoc.xpath("//thead/tr[1]/th | //thead/tr[1]/td").each do |t|
13
13
  text = t.at("./descendant::text()") or next
14
- text.replace(text.text.titlecase)
14
+ text.replace(text.text.capitalize)
15
15
  end
16
16
  end
17
17
 
@@ -60,8 +60,9 @@ module Asciidoctor
60
60
  nil, false, "#{@filename}.html")
61
61
  doc_converter(node).convert(@filename + ".presentation.xml",
62
62
  nil, false, "#{@filename}.doc")
63
- pdf_converter(node)&.convert(@filename + ".presentation.xml",
64
- nil, false, "#{@filename}.pdf")
63
+ node.attr("no-pdf") or
64
+ pdf_converter(node)&.convert(@filename + ".presentation.xml",
65
+ nil, false, "#{@filename}.pdf")
65
66
  end
66
67
 
67
68
  def validate(doc)
@@ -34,32 +34,34 @@ module Asciidoctor
34
34
  type = /^annex/.match(k) ? "annex" : "main"
35
35
  xml.title **attr_code(language: lang, format: "text/plain",
36
36
  type: type) do |t|
37
- t << v
37
+ t << Asciidoctor::Standoc::Utils::asciidoc_sub(v)
38
38
  end
39
39
  end
40
40
  end
41
41
 
42
42
  def title(node, xml)
43
43
  super
44
- subtitle_english(node, xml)
45
- subtitle_otherlangs(node, xml)
44
+ %w(subtitle amendment-title corrigendum-title).each do |t|
45
+ other_title_english(node, xml, t)
46
+ other_title_otherlangs(node, xml, t)
47
+ end
46
48
  end
47
49
 
48
- def subtitle_english(node, xml)
49
- at = { language: "en", format: "text/plain", type: "subtitle" }
50
- a = node.attr("subtitle") || node.attr("subtitle-en")
50
+ def other_title_english(node, xml, type)
51
+ at = { language: "en", format: "text/plain", type: type.sub(/-title/, "") }
52
+ a = node.attr(type) || node.attr("#{type}-en")
51
53
  xml.title **attr_code(at) do |t|
52
54
  t << Asciidoctor::Standoc::Utils::asciidoc_sub(a)
53
55
  end
54
56
  end
55
57
 
56
- def subtitle_otherlangs(node, xml)
58
+ def other_title_otherlangs(node, xml, type)
57
59
  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
60
+ next unless m = /^#{type}-(?<lang>.+)$/.match(k)
61
+ next if m[:lang] == "en"
62
+ xml.title **attr_code(language: m[:lang], format: "text/plain",
63
+ type: type.sub(/-title/, "")) do |t|
64
+ t << Asciidoctor::Standoc::Utils::asciidoc_sub(v)
63
65
  end
64
66
  end
65
67
  end
@@ -171,6 +173,27 @@ module Asciidoctor
171
173
  i.bureau node.attr("bureau") || "T"
172
174
  i.docnumber node.attr("docnumber")
173
175
  a = node.attr("annexid") and i.annexid a
176
+ a = node.attr("amendment-number") and i.amendment a
177
+ a = node.attr("corrigendum-number") and i.corrigendum a
178
+ end
179
+ end
180
+
181
+ def metadata_techreport(node, xml)
182
+ a = node.attr("meeting") and xml.meeting a
183
+ a = node.attr("meeting-date") and metadata_meeting_date(a, xml)
184
+ a = node.attr("intended-type") and xml.intended_type a
185
+ a = node.attr("source") and xml.source a
186
+ end
187
+
188
+ def metadata_meeting_date(a, xml)
189
+ xml.meeting_date do |m|
190
+ d = a.split("/")
191
+ if d.size > 1
192
+ m.from d[0]
193
+ m.to d[1]
194
+ else
195
+ m.on d[0]
196
+ end
174
197
  end
175
198
  end
176
199
 
@@ -180,6 +203,7 @@ module Asciidoctor
180
203
  metadata_ics(node, xml)
181
204
  metadata_recommendationstatus(node, xml)
182
205
  metadata_ip_notice(node, xml)
206
+ metadata_techreport(node, xml)
183
207
  structured_id(node, xml)
184
208
  end
185
209
  end
@@ -24,6 +24,14 @@
24
24
  <start>
25
25
  <ref name="standard-document"/>
26
26
  </start>
27
+ <define name="doctype">
28
+ <element name="doctype">
29
+ <optional>
30
+ <attribute name="abbreviation"/>
31
+ </optional>
32
+ <ref name="DocumentType"/>
33
+ </element>
34
+ </define>
27
35
  <define name="hyperlink">
28
36
  <element name="link">
29
37
  <attribute name="target">
@@ -42,7 +50,6 @@
42
50
  </define>
43
51
  <define name="xref">
44
52
  <element name="xref">
45
- <!-- attribute target { xsd:IDREF }, -->
46
53
  <attribute name="target">
47
54
  <data type="string">
48
55
  <param name="pattern">\i\c*|\c+#\c+</param>
@@ -64,6 +71,11 @@
64
71
  </choice>
65
72
  </attribute>
66
73
  </optional>
74
+ <optional>
75
+ <attribute name="droploc">
76
+ <data type="boolean"/>
77
+ </attribute>
78
+ </optional>
67
79
  <text/>
68
80
  </element>
69
81
  </define>
@@ -137,6 +149,11 @@
137
149
  <data type="boolean"/>
138
150
  </attribute>
139
151
  </optional>
152
+ <optional>
153
+ <attribute name="key">
154
+ <data type="boolean"/>
155
+ </attribute>
156
+ </optional>
140
157
  <oneOrMore>
141
158
  <ref name="dt"/>
142
159
  <ref name="dd"/>
@@ -581,6 +598,8 @@
581
598
  <ref name="ol"/>
582
599
  <ref name="dl"/>
583
600
  <ref name="formula"/>
601
+ <ref name="quote"/>
602
+ <ref name="sourcecode"/>
584
603
  </choice>
585
604
  </oneOrMore>
586
605
  </element>
@@ -664,6 +683,16 @@
664
683
  </choice>
665
684
  </attribute>
666
685
  </optional>
686
+ <optional>
687
+ <attribute name="valign">
688
+ <choice>
689
+ <value>top</value>
690
+ <value>middle</value>
691
+ <value>bottom</value>
692
+ <value>baseline</value>
693
+ </choice>
694
+ </attribute>
695
+ </optional>
667
696
  <choice>
668
697
  <zeroOrMore>
669
698
  <choice>
@@ -700,6 +729,16 @@
700
729
  </choice>
701
730
  </attribute>
702
731
  </optional>
732
+ <optional>
733
+ <attribute name="valign">
734
+ <choice>
735
+ <value>top</value>
736
+ <value>middle</value>
737
+ <value>bottom</value>
738
+ <value>baseline</value>
739
+ </choice>
740
+ </attribute>
741
+ </optional>
703
742
  <choice>
704
743
  <zeroOrMore>
705
744
  <choice>
@@ -837,6 +876,13 @@
837
876
  </define>
838
877
  <define name="standard-document">
839
878
  <element name="standard-document">
879
+ <attribute name="version"/>
880
+ <attribute name="type">
881
+ <choice>
882
+ <value>semantic</value>
883
+ <value>presentation</value>
884
+ </choice>
885
+ </attribute>
840
886
  <ref name="bibdata"/>
841
887
  <optional>
842
888
  <ref name="boilerplate"/>
@@ -858,7 +904,7 @@
858
904
  <oneOrMore>
859
905
  <choice>
860
906
  <ref name="content"/>
861
- <ref name="preface_abstract"/>
907
+ <ref name="abstract"/>
862
908
  <ref name="foreword"/>
863
909
  <ref name="introduction"/>
864
910
  <ref name="acknowledgements"/>
@@ -1052,14 +1098,17 @@
1052
1098
  <ref name="section-title"/>
1053
1099
  </optional>
1054
1100
  <group>
1055
- <group>
1056
- <zeroOrMore>
1057
- <ref name="BasicBlock"/>
1058
- </zeroOrMore>
1059
- <zeroOrMore>
1060
- <ref name="note"/>
1061
- </zeroOrMore>
1062
- </group>
1101
+ <choice>
1102
+ <group>
1103
+ <zeroOrMore>
1104
+ <ref name="BasicBlock"/>
1105
+ </zeroOrMore>
1106
+ <zeroOrMore>
1107
+ <ref name="note"/>
1108
+ </zeroOrMore>
1109
+ </group>
1110
+ <ref name="amend"/>
1111
+ </choice>
1063
1112
  <zeroOrMore>
1064
1113
  <choice>
1065
1114
  <ref name="clause-subsection"/>
@@ -1128,49 +1177,7 @@
1128
1177
  </define>
1129
1178
  <define name="annex">
1130
1179
  <element name="annex">
1131
- <optional>
1132
- <attribute name="id">
1133
- <data type="ID"/>
1134
- </attribute>
1135
- </optional>
1136
- <optional>
1137
- <attribute name="language"/>
1138
- </optional>
1139
- <optional>
1140
- <attribute name="script"/>
1141
- </optional>
1142
- <optional>
1143
- <attribute name="inline-header">
1144
- <data type="boolean"/>
1145
- </attribute>
1146
- </optional>
1147
- <attribute name="obligation">
1148
- <choice>
1149
- <value>normative</value>
1150
- <value>informative</value>
1151
- </choice>
1152
- </attribute>
1153
- <optional>
1154
- <ref name="section-title"/>
1155
- </optional>
1156
- <group>
1157
- <group>
1158
- <zeroOrMore>
1159
- <ref name="BasicBlock"/>
1160
- </zeroOrMore>
1161
- <zeroOrMore>
1162
- <ref name="note"/>
1163
- </zeroOrMore>
1164
- </group>
1165
- <zeroOrMore>
1166
- <choice>
1167
- <ref name="annex-subsection"/>
1168
- <ref name="terms"/>
1169
- <ref name="definitions"/>
1170
- <ref name="references"/>
1171
- </choice>
1172
- </zeroOrMore>
1173
- </group>
1180
+ <ref name="Annex-Section"/>
1174
1181
  </element>
1175
1182
  </define>
1176
1183
  <define name="terms">
@@ -1456,11 +1463,6 @@
1456
1463
  </optional>
1457
1464
  </element>
1458
1465
  </define>
1459
- <define name="preface_abstract">
1460
- <element name="abstract">
1461
- <ref name="Basic-Section"/>
1462
- </element>
1463
- </define>
1464
1466
  <define name="term-clause">
1465
1467
  <element name="clause">
1466
1468
  <optional>
@@ -1510,4 +1512,79 @@
1510
1512
  <ref name="CitationType"/>
1511
1513
  </element>
1512
1514
  </define>
1515
+ <define name="amend">
1516
+ <element name="amend">
1517
+ <optional>
1518
+ <attribute name="id">
1519
+ <data type="ID"/>
1520
+ </attribute>
1521
+ </optional>
1522
+ <attribute name="change">
1523
+ <choice>
1524
+ <value>add</value>
1525
+ <value>modify</value>
1526
+ <value>delete</value>
1527
+ </choice>
1528
+ </attribute>
1529
+ <optional>
1530
+ <attribute name="path"/>
1531
+ </optional>
1532
+ <optional>
1533
+ <attribute name="path_end"/>
1534
+ </optional>
1535
+ <optional>
1536
+ <attribute name="title"/>
1537
+ </optional>
1538
+ <optional>
1539
+ <element name="location">
1540
+ <zeroOrMore>
1541
+ <ref name="locality"/>
1542
+ </zeroOrMore>
1543
+ </element>
1544
+ </optional>
1545
+ <zeroOrMore>
1546
+ <ref name="autonumber"/>
1547
+ </zeroOrMore>
1548
+ <optional>
1549
+ <element name="description">
1550
+ <zeroOrMore>
1551
+ <ref name="BasicBlock"/>
1552
+ </zeroOrMore>
1553
+ </element>
1554
+ </optional>
1555
+ <optional>
1556
+ <element name="newcontent">
1557
+ <zeroOrMore>
1558
+ <ref name="BasicBlock"/>
1559
+ </zeroOrMore>
1560
+ </element>
1561
+ </optional>
1562
+ <optional>
1563
+ <element name="description">
1564
+ <zeroOrMore>
1565
+ <ref name="BasicBlock"/>
1566
+ </zeroOrMore>
1567
+ </element>
1568
+ </optional>
1569
+ </element>
1570
+ </define>
1571
+ <define name="autonumber">
1572
+ <element name="autonumber">
1573
+ <attribute name="type">
1574
+ <choice>
1575
+ <value>requirement</value>
1576
+ <value>recommendation</value>
1577
+ <value>permission</value>
1578
+ <value>table</value>
1579
+ <value>figure</value>
1580
+ <value>admonition</value>
1581
+ <value>formula</value>
1582
+ <value>sourcecode</value>
1583
+ <value>example</value>
1584
+ <value>note</value>
1585
+ </choice>
1586
+ </attribute>
1587
+ <text/>
1588
+ </element>
1589
+ </define>
1513
1590
  </grammar>