metanorma-iso 1.5.1 → 1.5.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ubuntu.yml +1 -1
- data/lib/asciidoctor/iso/base.rb +1 -1
- data/lib/asciidoctor/iso/basicdoc.rng +31 -1
- data/lib/asciidoctor/iso/front.rb +6 -6
- data/lib/asciidoctor/iso/front_id.rb +5 -5
- data/lib/asciidoctor/iso/isodoc.rng +112 -9
- data/lib/asciidoctor/iso/section.rb +0 -7
- data/lib/asciidoctor/iso/validate_section.rb +10 -0
- data/lib/isodoc/iso/html/isodoc.css +16 -4
- data/lib/isodoc/iso/html/isodoc.scss +18 -4
- data/lib/isodoc/iso/html/wordstyle.css +10 -9
- data/lib/isodoc/iso/html/wordstyle.scss +15 -9
- data/lib/isodoc/iso/i18n-en.yaml +0 -1
- data/lib/isodoc/iso/iso.amendment.xsl +761 -259
- data/lib/isodoc/iso/iso.international-standard.xsl +761 -259
- data/lib/isodoc/iso/word_convert.rb +17 -13
- data/lib/isodoc/iso/xref.rb +7 -11
- data/lib/metanorma/iso/processor.rb +4 -1
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +1 -1
- data/spec/asciidoctor-iso/amd_spec.rb +0 -32
- data/spec/asciidoctor-iso/base_spec.rb +3 -11
- data/spec/asciidoctor-iso/cleanup_spec.rb +57 -33
- data/spec/asciidoctor-iso/inline_spec.rb +7 -1
- data/spec/asciidoctor-iso/table_spec.rb +118 -112
- data/spec/asciidoctor-iso/validate_spec.rb +87 -0
- data/spec/isodoc/amd_spec.rb +13 -13
- data/spec/isodoc/iso_spec.rb +3 -3
- data/spec/isodoc/postproc_spec.rb +76 -1
- data/spec/isodoc/ref_spec.rb +1 -1
- data/spec/metanorma/processor_spec.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af5b522de99b45f3bfe7f85160164adef26c76fd3422589d47309fa9e45086b3
|
4
|
+
data.tar.gz: 99305967e4efd098f560a968e290ed45f687841f3246995b73e472a1776e29be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 277da3d65b6fb4b0de530d152ef7c3f02cdd8aca331f8b0b8d201fd9ce99c245f80556ad9f5465d7aba7a47b0cfba3823ce98b6afb11dd8df2ef3ced774c2232
|
7
|
+
data.tar.gz: 767a3e807f6f26548c1535e297063a73c9b04e45c62b9f7c97929c4bde1917b33027b05a50625ee45b5fb9983f40d9e6337016978db94319bd2ce9f834c28860
|
@@ -39,7 +39,7 @@ jobs:
|
|
39
39
|
polling_interval_seconds: 5
|
40
40
|
timeout_minutes: 5
|
41
41
|
max_attempts: 3
|
42
|
-
command: sudo bash -c "curl -L https://github.com/metanorma/plantuml-install/raw/master/ubuntu.sh | bash"
|
42
|
+
command: sudo apt-get update -y && sudo bash -c "curl -L https://github.com/metanorma/plantuml-install/raw/master/ubuntu.sh | bash"
|
43
43
|
- name: Run specs
|
44
44
|
run: |
|
45
45
|
bundle exec rake
|
data/lib/asciidoctor/iso/base.rb
CHANGED
@@ -158,7 +158,17 @@
|
|
158
158
|
<data type="ID"/>
|
159
159
|
</attribute>
|
160
160
|
<oneOrMore>
|
161
|
-
<
|
161
|
+
<choice>
|
162
|
+
<ref name="formula"/>
|
163
|
+
<ref name="ul"/>
|
164
|
+
<ref name="ol"/>
|
165
|
+
<ref name="dl"/>
|
166
|
+
<ref name="quote"/>
|
167
|
+
<ref name="sourcecode"/>
|
168
|
+
<ref name="paragraph"/>
|
169
|
+
<ref name="table"/>
|
170
|
+
<ref name="figure"/>
|
171
|
+
</choice>
|
162
172
|
</oneOrMore>
|
163
173
|
</element>
|
164
174
|
</define>
|
@@ -402,6 +412,16 @@
|
|
402
412
|
</choice>
|
403
413
|
</attribute>
|
404
414
|
</optional>
|
415
|
+
<optional>
|
416
|
+
<attribute name="valign">
|
417
|
+
<choice>
|
418
|
+
<value>top</value>
|
419
|
+
<value>middle</value>
|
420
|
+
<value>bottom</value>
|
421
|
+
<value>baseline</value>
|
422
|
+
</choice>
|
423
|
+
</attribute>
|
424
|
+
</optional>
|
405
425
|
<choice>
|
406
426
|
<zeroOrMore>
|
407
427
|
<ref name="TextElement"/>
|
@@ -429,6 +449,16 @@
|
|
429
449
|
</choice>
|
430
450
|
</attribute>
|
431
451
|
</optional>
|
452
|
+
<optional>
|
453
|
+
<attribute name="valign">
|
454
|
+
<choice>
|
455
|
+
<value>top</value>
|
456
|
+
<value>middle</value>
|
457
|
+
<value>bottom</value>
|
458
|
+
<value>baseline</value>
|
459
|
+
</choice>
|
460
|
+
</attribute>
|
461
|
+
</optional>
|
432
462
|
<choice>
|
433
463
|
<zeroOrMore>
|
434
464
|
<ref name="TextElement"/>
|
@@ -13,7 +13,7 @@ module Asciidoctor
|
|
13
13
|
super
|
14
14
|
structured_id(node, xml)
|
15
15
|
xml.stagename stage_name(get_stage(node), get_substage(node),
|
16
|
-
node
|
16
|
+
doctype(node), node.attr("iteration"))
|
17
17
|
@amd && a = node.attr("updates-document-type") and
|
18
18
|
xml.updates_document_type a
|
19
19
|
end
|
@@ -34,7 +34,7 @@ module Asciidoctor
|
|
34
34
|
|
35
35
|
def metadata_author(node, xml)
|
36
36
|
publishers = node.attr("publisher") || "ISO"
|
37
|
-
publishers
|
37
|
+
csv_split(publishers).each do |p|
|
38
38
|
xml.contributor do |c|
|
39
39
|
c.role **{ type: "author" }
|
40
40
|
c.organization { |a| organization(a, p) }
|
@@ -44,7 +44,7 @@ module Asciidoctor
|
|
44
44
|
|
45
45
|
def metadata_publisher(node, xml)
|
46
46
|
publishers = node.attr("publisher") || "ISO"
|
47
|
-
publishers
|
47
|
+
csv_split(publishers).each do |p|
|
48
48
|
xml.contributor do |c|
|
49
49
|
c.role **{ type: "publisher" }
|
50
50
|
c.organization { |a| organization(a, p) }
|
@@ -53,8 +53,8 @@ module Asciidoctor
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def metadata_copyright(node, xml)
|
56
|
-
publishers = node.attr("publisher") || "ISO"
|
57
|
-
publishers
|
56
|
+
publishers = node.attr("copyright-holder") || node.attr("publisher") || "ISO"
|
57
|
+
csv_split(publishers).each do |p|
|
58
58
|
xml.copyright do |c|
|
59
59
|
c.from (node.attr("copyright-year") || Date.today.year)
|
60
60
|
c.owner do |owner|
|
@@ -68,7 +68,7 @@ module Asciidoctor
|
|
68
68
|
stage = get_stage(node)
|
69
69
|
substage = get_substage(node)
|
70
70
|
xml.status do |s|
|
71
|
-
s.stage stage, **attr_code(abbreviation: stage_abbr(stage, substage, node
|
71
|
+
s.stage stage, **attr_code(abbreviation: stage_abbr(stage, substage, doctype(node)))
|
72
72
|
s.substage substage
|
73
73
|
node.attr("iteration") && (s.iteration node.attr("iteration"))
|
74
74
|
end
|
@@ -95,7 +95,7 @@ module Asciidoctor
|
|
95
95
|
def add_amd_parts(dn, node)
|
96
96
|
a = node.attr("amendment-number")
|
97
97
|
c = node.attr("corrigendum-number")
|
98
|
-
case node
|
98
|
+
case doctype(node)
|
99
99
|
when "amendment"
|
100
100
|
"#{dn}/Amd #{node.attr('amendment-number')}"
|
101
101
|
when "technical-corrigendum"
|
@@ -134,11 +134,11 @@ module Asciidoctor
|
|
134
134
|
|
135
135
|
def id_stage_abbr(stage, substage, node)
|
136
136
|
ret = IsoDoc::Iso::Metadata.new("en", "Latn", @i18n).
|
137
|
-
status_abbrev(stage_abbr(stage, substage, node
|
137
|
+
status_abbrev(stage_abbr(stage, substage, doctype(node)),
|
138
138
|
substage, node.attr("iteration"),
|
139
|
-
node.attr("draft"), node
|
139
|
+
node.attr("draft"), doctype(node))
|
140
140
|
if %w(amendment technical-corrigendum amendment
|
141
|
-
technical-corrigendum).include?(node
|
141
|
+
technical-corrigendum).include?(doctype(node))
|
142
142
|
ret = ret + " " unless %w(40 50).include?(stage)
|
143
143
|
end
|
144
144
|
ret
|
@@ -184,7 +184,7 @@ module Asciidoctor
|
|
184
184
|
end
|
185
185
|
|
186
186
|
def get_typeabbr(node)
|
187
|
-
case node
|
187
|
+
case doctype(node)
|
188
188
|
when "technical-report" then "TR "
|
189
189
|
when "technical-specification" then "TS "
|
190
190
|
else
|
@@ -42,8 +42,11 @@
|
|
42
42
|
</define>
|
43
43
|
<define name="xref">
|
44
44
|
<element name="xref">
|
45
|
+
<!-- attribute target { xsd:IDREF }, -->
|
45
46
|
<attribute name="target">
|
46
|
-
<data type="
|
47
|
+
<data type="string">
|
48
|
+
<param name="pattern">\i\c*|\c+#\c+</param>
|
49
|
+
</data>
|
47
50
|
</attribute>
|
48
51
|
<optional>
|
49
52
|
<attribute name="type">
|
@@ -578,6 +581,8 @@
|
|
578
581
|
<ref name="ol"/>
|
579
582
|
<ref name="dl"/>
|
580
583
|
<ref name="formula"/>
|
584
|
+
<ref name="quote"/>
|
585
|
+
<ref name="sourcecode"/>
|
581
586
|
</choice>
|
582
587
|
</oneOrMore>
|
583
588
|
</element>
|
@@ -661,6 +666,16 @@
|
|
661
666
|
</choice>
|
662
667
|
</attribute>
|
663
668
|
</optional>
|
669
|
+
<optional>
|
670
|
+
<attribute name="valign">
|
671
|
+
<choice>
|
672
|
+
<value>top</value>
|
673
|
+
<value>middle</value>
|
674
|
+
<value>bottom</value>
|
675
|
+
<value>baseline</value>
|
676
|
+
</choice>
|
677
|
+
</attribute>
|
678
|
+
</optional>
|
664
679
|
<choice>
|
665
680
|
<zeroOrMore>
|
666
681
|
<choice>
|
@@ -697,6 +712,16 @@
|
|
697
712
|
</choice>
|
698
713
|
</attribute>
|
699
714
|
</optional>
|
715
|
+
<optional>
|
716
|
+
<attribute name="valign">
|
717
|
+
<choice>
|
718
|
+
<value>top</value>
|
719
|
+
<value>middle</value>
|
720
|
+
<value>bottom</value>
|
721
|
+
<value>baseline</value>
|
722
|
+
</choice>
|
723
|
+
</attribute>
|
724
|
+
</optional>
|
700
725
|
<choice>
|
701
726
|
<zeroOrMore>
|
702
727
|
<choice>
|
@@ -1049,14 +1074,17 @@
|
|
1049
1074
|
<ref name="section-title"/>
|
1050
1075
|
</optional>
|
1051
1076
|
<group>
|
1052
|
-
<
|
1053
|
-
<
|
1054
|
-
<
|
1055
|
-
|
1056
|
-
|
1057
|
-
<
|
1058
|
-
|
1059
|
-
|
1077
|
+
<choice>
|
1078
|
+
<group>
|
1079
|
+
<zeroOrMore>
|
1080
|
+
<ref name="BasicBlock"/>
|
1081
|
+
</zeroOrMore>
|
1082
|
+
<zeroOrMore>
|
1083
|
+
<ref name="note"/>
|
1084
|
+
</zeroOrMore>
|
1085
|
+
</group>
|
1086
|
+
<ref name="amend"/>
|
1087
|
+
</choice>
|
1060
1088
|
<zeroOrMore>
|
1061
1089
|
<choice>
|
1062
1090
|
<ref name="clause-subsection"/>
|
@@ -1507,4 +1535,79 @@
|
|
1507
1535
|
<ref name="CitationType"/>
|
1508
1536
|
</element>
|
1509
1537
|
</define>
|
1538
|
+
<define name="amend">
|
1539
|
+
<element name="amend">
|
1540
|
+
<optional>
|
1541
|
+
<attribute name="id">
|
1542
|
+
<data type="ID"/>
|
1543
|
+
</attribute>
|
1544
|
+
</optional>
|
1545
|
+
<attribute name="change">
|
1546
|
+
<choice>
|
1547
|
+
<value>add</value>
|
1548
|
+
<value>modify</value>
|
1549
|
+
<value>delete</value>
|
1550
|
+
</choice>
|
1551
|
+
</attribute>
|
1552
|
+
<optional>
|
1553
|
+
<attribute name="path"/>
|
1554
|
+
</optional>
|
1555
|
+
<optional>
|
1556
|
+
<attribute name="path_end"/>
|
1557
|
+
</optional>
|
1558
|
+
<optional>
|
1559
|
+
<attribute name="title"/>
|
1560
|
+
</optional>
|
1561
|
+
<optional>
|
1562
|
+
<element name="location">
|
1563
|
+
<zeroOrMore>
|
1564
|
+
<ref name="locality"/>
|
1565
|
+
</zeroOrMore>
|
1566
|
+
</element>
|
1567
|
+
</optional>
|
1568
|
+
<zeroOrMore>
|
1569
|
+
<ref name="autonumber"/>
|
1570
|
+
</zeroOrMore>
|
1571
|
+
<optional>
|
1572
|
+
<element name="description">
|
1573
|
+
<zeroOrMore>
|
1574
|
+
<ref name="BasicBlock"/>
|
1575
|
+
</zeroOrMore>
|
1576
|
+
</element>
|
1577
|
+
</optional>
|
1578
|
+
<optional>
|
1579
|
+
<element name="newcontent">
|
1580
|
+
<zeroOrMore>
|
1581
|
+
<ref name="BasicBlock"/>
|
1582
|
+
</zeroOrMore>
|
1583
|
+
</element>
|
1584
|
+
</optional>
|
1585
|
+
<optional>
|
1586
|
+
<element name="description">
|
1587
|
+
<zeroOrMore>
|
1588
|
+
<ref name="BasicBlock"/>
|
1589
|
+
</zeroOrMore>
|
1590
|
+
</element>
|
1591
|
+
</optional>
|
1592
|
+
</element>
|
1593
|
+
</define>
|
1594
|
+
<define name="autonumber">
|
1595
|
+
<element name="autonumber">
|
1596
|
+
<attribute name="type">
|
1597
|
+
<choice>
|
1598
|
+
<value>requirement</value>
|
1599
|
+
<value>recommendation</value>
|
1600
|
+
<value>permission</value>
|
1601
|
+
<value>table</value>
|
1602
|
+
<value>figure</value>
|
1603
|
+
<value>admonition</value>
|
1604
|
+
<value>formula</value>
|
1605
|
+
<value>sourcecode</value>
|
1606
|
+
<value>example</value>
|
1607
|
+
<value>note</value>
|
1608
|
+
</choice>
|
1609
|
+
</attribute>
|
1610
|
+
<text/>
|
1611
|
+
</element>
|
1612
|
+
</define>
|
1510
1613
|
</grammar>
|
@@ -30,13 +30,6 @@ module Asciidoctor
|
|
30
30
|
xml << node.content
|
31
31
|
end
|
32
32
|
|
33
|
-
def section_attributes(node)
|
34
|
-
super.merge(
|
35
|
-
change: @amd ? node.attr("change") : nil,
|
36
|
-
locality: @amd ? node.attr("locality") : nil,
|
37
|
-
)
|
38
|
-
end
|
39
|
-
|
40
33
|
def sectiontype(node, level = true)
|
41
34
|
return nil if @amd
|
42
35
|
super
|
@@ -7,6 +7,7 @@ module Asciidoctor
|
|
7
7
|
foreword_validate(doc.root)
|
8
8
|
normref_validate(doc.root)
|
9
9
|
symbols_validate(doc.root)
|
10
|
+
sections_presence_validate(doc.root)
|
10
11
|
sections_sequence_validate(doc.root)
|
11
12
|
section_style(doc.root)
|
12
13
|
subclause_validate(doc.root)
|
@@ -55,6 +56,15 @@ module Asciidoctor
|
|
55
56
|
names
|
56
57
|
end
|
57
58
|
|
59
|
+
def sections_presence_validate(root)
|
60
|
+
root.at("//sections/clause[@type = 'scope']") or
|
61
|
+
@log.add("Style", nil, "Scope clause missing")
|
62
|
+
root.at("//references[@normative = 'true']") or
|
63
|
+
@log.add("Style", nil, "Normative references missing")
|
64
|
+
root.at("//terms") or
|
65
|
+
@log.add("Style", nil, "Terms & definitions missing")
|
66
|
+
end
|
67
|
+
|
58
68
|
# spec of permissible section sequence
|
59
69
|
# we skip normative references, it goes to end of list
|
60
70
|
SEQ =
|
@@ -652,7 +652,7 @@ div.figdl p, table.figdl p {
|
|
652
652
|
table.formula_dl {
|
653
653
|
margin-left: 20.15pt; }
|
654
654
|
|
655
|
-
table.MsoISOTable {
|
655
|
+
table.MsoISOTable, table.MsoISOTableBig {
|
656
656
|
mso-style-name: "Table ISO";
|
657
657
|
mso-tstyle-rowband-size: 0;
|
658
658
|
mso-tstyle-colband-size: 0;
|
@@ -673,17 +673,17 @@ table.MsoISOTable {
|
|
673
673
|
font-size: 10.0pt;
|
674
674
|
font-family: {{bodyfont}}; }
|
675
675
|
|
676
|
-
table.MsoISOTable th {
|
676
|
+
table.MsoISOTable th, table.MsoISOTableBig th {
|
677
677
|
border: solid windowtext 1pt;
|
678
678
|
mso-border-alt: solid windowtext 1pt;
|
679
679
|
padding: 0cm 2.85pt 0cm 2.85pt; }
|
680
680
|
|
681
|
-
table.MsoISOTable td {
|
681
|
+
table.MsoISOTable td, table.MsoISOTableBig td {
|
682
682
|
border: solid windowtext 1pt;
|
683
683
|
mso-border-alt: solid windowtext 1pt;
|
684
684
|
padding: 0cm 2.85pt 0cm 2.85pt; }
|
685
685
|
|
686
|
-
table.MsoISOTable p {
|
686
|
+
table.MsoISOTable p, table.MsoISOTableBig p {
|
687
687
|
font-size: 10.0pt; }
|
688
688
|
|
689
689
|
table.MsoTableGrid {
|
@@ -855,8 +855,20 @@ div.example p.MsoListParagraph {
|
|
855
855
|
font-size: 10.0pt; }
|
856
856
|
|
857
857
|
div.Note p.MsoListParagraph {
|
858
|
+
font-size: 10.0pt;
|
859
|
+
margin-left: 1.0cm; }
|
860
|
+
|
861
|
+
div.Note span.stem {
|
858
862
|
font-size: 10.0pt; }
|
859
863
|
|
864
|
+
div.Note p.Sourcecode, div.Note pre.Sourcecode {
|
865
|
+
font-size: 8.0pt;
|
866
|
+
margin-left: 1.0cm; }
|
867
|
+
|
868
|
+
div.Note table.dl {
|
869
|
+
font-size: 10.0pt;
|
870
|
+
margin-left: 1.0cm; }
|
871
|
+
|
860
872
|
span.note_label, span.example_label, td.example_label, td.note_label {
|
861
873
|
font-size: 10.0pt;
|
862
874
|
font-family: {{bodyfont}}; }
|
@@ -627,7 +627,7 @@ table.formula_dl {
|
|
627
627
|
margin-left:20.15pt;
|
628
628
|
}
|
629
629
|
|
630
|
-
table.MsoISOTable
|
630
|
+
table.MsoISOTable, table.MsoISOTableBig
|
631
631
|
{mso-style-name:"Table ISO";
|
632
632
|
mso-tstyle-rowband-size:0;
|
633
633
|
mso-tstyle-colband-size:0;
|
@@ -647,15 +647,15 @@ table.MsoISOTable
|
|
647
647
|
mso-border-insidev:.75pt solid windowtext;
|
648
648
|
font-size:10.0pt;
|
649
649
|
font-family:$bodyfont;}
|
650
|
-
table.MsoISOTable th
|
650
|
+
table.MsoISOTable th, table.MsoISOTableBig th
|
651
651
|
{border:solid windowtext 1pt;
|
652
652
|
mso-border-alt:solid windowtext 1pt;
|
653
653
|
padding:0cm 2.85pt 0cm 2.85pt;}
|
654
|
-
table.MsoISOTable td
|
654
|
+
table.MsoISOTable td, table.MsoISOTableBig td
|
655
655
|
{border:solid windowtext 1pt;
|
656
656
|
mso-border-alt:solid windowtext 1pt;
|
657
657
|
padding:0cm 2.85pt 0cm 2.85pt;}
|
658
|
-
table.MsoISOTable p
|
658
|
+
table.MsoISOTable p, table.MsoISOTableBig p
|
659
659
|
{font-size:10.0pt; }
|
660
660
|
table.MsoTableGrid
|
661
661
|
{mso-style-name:"Table Grid";
|
@@ -842,6 +842,20 @@ div.example p.MsoListParagraph {
|
|
842
842
|
|
843
843
|
div.Note p.MsoListParagraph {
|
844
844
|
font-size: 10.0pt;
|
845
|
+
margin-left: 1.0cm;
|
846
|
+
}
|
847
|
+
|
848
|
+
div.Note span.stem {
|
849
|
+
font-size: 10.0pt; }
|
850
|
+
|
851
|
+
div.Note p.Sourcecode, div.Note pre.Sourcecode {
|
852
|
+
font-size: 8.0pt;
|
853
|
+
margin-left: 1.0cm;
|
854
|
+
}
|
855
|
+
|
856
|
+
div.Note table.dl {
|
857
|
+
font-size: 10.0pt;
|
858
|
+
margin-left: 1.0cm;
|
845
859
|
}
|
846
860
|
|
847
861
|
span.note_label, span.example_label, td.example_label, td.note_label
|