metanorma-generic 1.4.6 → 1.5.0
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/.github/workflows/macos.yml +8 -7
- data/.github/workflows/ubuntu.yml +12 -9
- data/.github/workflows/windows.yml +8 -8
- data/lib/asciidoctor/generic/biblio.rng +143 -38
- data/lib/asciidoctor/generic/converter.rb +79 -36
- data/lib/asciidoctor/generic/isodoc.rng +475 -2
- data/lib/asciidoctor/generic/reqt.rng +23 -0
- data/lib/isodoc/generic.rb +1 -0
- data/lib/isodoc/generic/base_convert.rb +11 -1
- data/lib/isodoc/generic/html/scripts.html +14 -27
- data/lib/isodoc/generic/html_convert.rb +2 -4
- data/lib/isodoc/generic/metadata.rb +10 -0
- data/lib/isodoc/generic/presentation_xml_convert.rb +10 -0
- data/lib/isodoc/generic/xref.rb +6 -0
- data/lib/metanorma/generic.rb +21 -1
- data/lib/metanorma/generic/processor.rb +27 -6
- data/lib/metanorma/generic/version.rb +1 -1
- data/metanorma-generic.gemspec +2 -2
- data/metanorma.yml.example +42 -0
- metadata +12 -12
- data/lib/isodoc/generic/html/scripts.pdf.html +0 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c86f4ec6164879c4e3240c59509762dd17bec3198e6ca291fab12cc31d3a66e
|
4
|
+
data.tar.gz: 9242bc948011576c68c2dcecd7aacb9ee4f10a3839bf105fe23b327203d816ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 575d6d49b0fae89903776a157e5774029b60ee6049e158b1f6c0410b32edb21ed6908c3a30c089195dcda864ea16636f23c38ec038120ec674956e8610184946
|
7
|
+
data.tar.gz: 455b421535ade823b2ecb128848238bf2ae386d00680daa2bc946f6d87a2bb66afd70dd595b969f37a65bd9b1282707c0f53280be3f740161d28a4704de78ffb
|
data/.github/workflows/macos.yml
CHANGED
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/ubuntu.yml
|
11
|
+
- .github/workflows/windows.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-macos:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} macOS
|
13
16
|
runs-on: macos-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -26,13 +34,6 @@ jobs:
|
|
26
34
|
run: |
|
27
35
|
sudo gem install bundler --force
|
28
36
|
bundle install --jobs 4 --retry 3
|
29
|
-
- name: Use Node
|
30
|
-
uses: actions/setup-node@v1
|
31
|
-
with:
|
32
|
-
node-version: '8'
|
33
|
-
- name: Install Puppeteer
|
34
|
-
run: |
|
35
|
-
npm install -g puppeteer
|
36
37
|
- name: Run specs
|
37
38
|
run: |
|
38
39
|
bundle exec rake
|
@@ -5,16 +5,26 @@ name: ubuntu
|
|
5
5
|
on:
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
|
+
tags:
|
9
|
+
- '*'
|
8
10
|
pull_request:
|
11
|
+
paths-ignore:
|
12
|
+
- .github/workflows/macos.yml
|
13
|
+
- .github/workflows/windows.yml
|
9
14
|
|
10
15
|
jobs:
|
11
16
|
test-linux:
|
12
17
|
name: Test on Ruby ${{ matrix.ruby }} Ubuntu
|
13
18
|
runs-on: ubuntu-latest
|
19
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
20
|
strategy:
|
15
21
|
fail-fast: false
|
16
22
|
matrix:
|
17
23
|
ruby: [ '2.6', '2.5', '2.4' ]
|
24
|
+
experimental: [false]
|
25
|
+
include:
|
26
|
+
- ruby: '2.7'
|
27
|
+
experimental: true
|
18
28
|
steps:
|
19
29
|
- uses: actions/checkout@master
|
20
30
|
- name: Use Ruby
|
@@ -26,18 +36,11 @@ jobs:
|
|
26
36
|
run: |
|
27
37
|
gem install bundler
|
28
38
|
bundle install --jobs 4 --retry 3
|
29
|
-
- name: Use Node
|
30
|
-
uses: actions/setup-node@v1
|
31
|
-
with:
|
32
|
-
node-version: '8'
|
33
|
-
- name: Install Puppeteer
|
34
|
-
run: |
|
35
|
-
npm install -g puppeteer
|
36
39
|
- name: Run specs
|
37
40
|
run: |
|
38
41
|
bundle exec rake
|
39
42
|
- name: Trigger dependent repositories
|
40
|
-
if: github.ref == 'refs/heads/master'
|
43
|
+
if: github.ref == 'refs/heads/master' && matrix.ruby == '2.6'
|
41
44
|
env:
|
42
45
|
GH_USERNAME: ${{ secrets.PAT_USERNAME }}
|
43
46
|
GH_ACCESS_TOKEN: ${{ secrets.PAT_TOKEN }}
|
@@ -46,5 +49,5 @@ jobs:
|
|
46
49
|
[[ -f ".github/workflows/dependent_repos.env" ]] && source .github/workflows/dependent_repos.env
|
47
50
|
for repo in $DEPENDENT_REPOS
|
48
51
|
do
|
49
|
-
sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY
|
52
|
+
sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "{ \"ref\": \"${GITHUB_REF}\" }"
|
50
53
|
done
|
@@ -6,15 +6,23 @@ on:
|
|
6
6
|
push:
|
7
7
|
branches: [ master ]
|
8
8
|
pull_request:
|
9
|
+
paths-ignore:
|
10
|
+
- .github/workflows/macos.yml
|
11
|
+
- .github/workflows/ubuntu.yml
|
9
12
|
|
10
13
|
jobs:
|
11
14
|
test-windows:
|
12
15
|
name: Test on Ruby ${{ matrix.ruby }} Windows
|
13
16
|
runs-on: windows-latest
|
17
|
+
continue-on-error: ${{ matrix.experimental }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
21
|
ruby: [ '2.6', '2.5', '2.4' ]
|
22
|
+
experimental: [false]
|
23
|
+
include:
|
24
|
+
- ruby: '2.7'
|
25
|
+
experimental: true
|
18
26
|
steps:
|
19
27
|
- uses: actions/checkout@master
|
20
28
|
- name: Use Ruby
|
@@ -27,15 +35,7 @@ jobs:
|
|
27
35
|
run: |
|
28
36
|
gem install bundler
|
29
37
|
bundle config --local path vendor/bundle
|
30
|
-
bundle update
|
31
38
|
bundle install --jobs 4 --retry 3
|
32
|
-
- name: Use Node
|
33
|
-
uses: actions/setup-node@v1
|
34
|
-
with:
|
35
|
-
node-version: '8'
|
36
|
-
- name: Install Puppeteer
|
37
|
-
run: |
|
38
|
-
npm install -g puppeteer
|
39
39
|
- name: Run specs
|
40
40
|
run: |
|
41
41
|
bundle exec rake
|
@@ -49,11 +49,17 @@
|
|
49
49
|
</define>
|
50
50
|
<define name="stage">
|
51
51
|
<element name="stage">
|
52
|
+
<optional>
|
53
|
+
<attribute name="abbreviation"/>
|
54
|
+
</optional>
|
52
55
|
<text/>
|
53
56
|
</element>
|
54
57
|
</define>
|
55
58
|
<define name="substage">
|
56
59
|
<element name="substage">
|
60
|
+
<optional>
|
61
|
+
<attribute name="abbreviation"/>
|
62
|
+
</optional>
|
57
63
|
<text/>
|
58
64
|
</element>
|
59
65
|
</define>
|
@@ -82,7 +88,7 @@
|
|
82
88
|
<text/>
|
83
89
|
</element>
|
84
90
|
</define>
|
85
|
-
<define name="
|
91
|
+
<define name="LocalizedString1">
|
86
92
|
<optional>
|
87
93
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
88
94
|
<attribute name="language"/>
|
@@ -92,6 +98,16 @@
|
|
92
98
|
</optional>
|
93
99
|
<text/>
|
94
100
|
</define>
|
101
|
+
<define name="LocalizedString">
|
102
|
+
<choice>
|
103
|
+
<ref name="LocalizedString1"/>
|
104
|
+
<oneOrMore>
|
105
|
+
<element name="variant">
|
106
|
+
<ref name="LocalizedString1"/>
|
107
|
+
</element>
|
108
|
+
</oneOrMore>
|
109
|
+
</choice>
|
110
|
+
</define>
|
95
111
|
<!--
|
96
112
|
Unlike UML, change type to format: type is overloaded
|
97
113
|
Would be need if plain were default value and could omit the attribute
|
@@ -115,7 +131,7 @@
|
|
115
131
|
</optional>
|
116
132
|
<ref name="LocalizedStringOrXsAny"/>
|
117
133
|
</define>
|
118
|
-
<define name="
|
134
|
+
<define name="LocalizedStringOrXsAny1">
|
119
135
|
<optional>
|
120
136
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
121
137
|
<attribute name="language"/>
|
@@ -130,6 +146,16 @@
|
|
130
146
|
</choice>
|
131
147
|
</oneOrMore>
|
132
148
|
</define>
|
149
|
+
<define name="LocalizedStringOrXsAny">
|
150
|
+
<choice>
|
151
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
152
|
+
<oneOrMore>
|
153
|
+
<element name="variant">
|
154
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
155
|
+
</element>
|
156
|
+
</oneOrMore>
|
157
|
+
</choice>
|
158
|
+
</define>
|
133
159
|
<define name="contributor">
|
134
160
|
<element name="contributor">
|
135
161
|
<zeroOrMore>
|
@@ -452,9 +478,14 @@
|
|
452
478
|
<attribute name="bibitemid">
|
453
479
|
<data type="IDREF"/>
|
454
480
|
</attribute>
|
455
|
-
<
|
456
|
-
<
|
457
|
-
|
481
|
+
<choice>
|
482
|
+
<zeroOrMore>
|
483
|
+
<ref name="locality"/>
|
484
|
+
</zeroOrMore>
|
485
|
+
<zeroOrMore>
|
486
|
+
<ref name="localityStack"/>
|
487
|
+
</zeroOrMore>
|
488
|
+
</choice>
|
458
489
|
<optional>
|
459
490
|
<ref name="date"/>
|
460
491
|
</optional>
|
@@ -469,6 +500,25 @@
|
|
469
500
|
<ref name="BibItemLocality"/>
|
470
501
|
</element>
|
471
502
|
</define>
|
503
|
+
<define name="localityStack">
|
504
|
+
<element name="localityStack">
|
505
|
+
<zeroOrMore>
|
506
|
+
<ref name="locality"/>
|
507
|
+
</zeroOrMore>
|
508
|
+
</element>
|
509
|
+
</define>
|
510
|
+
<define name="sourceLocality">
|
511
|
+
<element name="sourceLocality">
|
512
|
+
<ref name="BibItemLocality"/>
|
513
|
+
</element>
|
514
|
+
</define>
|
515
|
+
<define name="sourceLocalityStack">
|
516
|
+
<element name="sourceLocalityStack">
|
517
|
+
<zeroOrMore>
|
518
|
+
<ref name="sourceLocality"/>
|
519
|
+
</zeroOrMore>
|
520
|
+
</element>
|
521
|
+
</define>
|
472
522
|
<define name="BibItemLocality">
|
473
523
|
<attribute name="type">
|
474
524
|
<ref name="LocalityType"/>
|
@@ -482,7 +532,7 @@
|
|
482
532
|
</define>
|
483
533
|
<define name="LocalityType">
|
484
534
|
<data type="string">
|
485
|
-
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|locality:[a-zA-Z0-9_]+</param>
|
535
|
+
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
|
486
536
|
</data>
|
487
537
|
</define>
|
488
538
|
<define name="referenceFrom">
|
@@ -611,9 +661,9 @@
|
|
611
661
|
<optional>
|
612
662
|
<ref name="status"/>
|
613
663
|
</optional>
|
614
|
-
<
|
664
|
+
<zeroOrMore>
|
615
665
|
<ref name="copyright"/>
|
616
|
-
</
|
666
|
+
</zeroOrMore>
|
617
667
|
<zeroOrMore>
|
618
668
|
<ref name="docrelation"/>
|
619
669
|
</zeroOrMore>
|
@@ -737,6 +787,8 @@
|
|
737
787
|
<value>unchanged</value>
|
738
788
|
<value>circulated</value>
|
739
789
|
<value>adapted</value>
|
790
|
+
<value>vote-started</value>
|
791
|
+
<value>vote-ended</value>
|
740
792
|
</choice>
|
741
793
|
</define>
|
742
794
|
<define name="bdate">
|
@@ -969,7 +1021,17 @@
|
|
969
1021
|
<optional>
|
970
1022
|
<ref name="to"/>
|
971
1023
|
</optional>
|
972
|
-
<
|
1024
|
+
<oneOrMore>
|
1025
|
+
<ref name="owner"/>
|
1026
|
+
</oneOrMore>
|
1027
|
+
<optional>
|
1028
|
+
<ref name="copyright_scope"/>
|
1029
|
+
</optional>
|
1030
|
+
</element>
|
1031
|
+
</define>
|
1032
|
+
<define name="copyright_scope">
|
1033
|
+
<element name="scope">
|
1034
|
+
<text/>
|
973
1035
|
</element>
|
974
1036
|
</define>
|
975
1037
|
<define name="from">
|
@@ -989,38 +1051,63 @@
|
|
989
1051
|
</define>
|
990
1052
|
<define name="DocRelationType">
|
991
1053
|
<choice>
|
992
|
-
<value>obsoletes</value>
|
993
|
-
<value>obsoletedBy</value>
|
994
|
-
<value>supersedes</value>
|
995
|
-
<value>supersededBy</value>
|
996
|
-
<value>updates</value>
|
997
|
-
<value>updatedBy</value>
|
998
|
-
<value>complements</value>
|
999
|
-
<value>derivedFrom</value>
|
1000
|
-
<value>translatedFrom</value>
|
1001
|
-
<value>hasTranslation</value>
|
1002
|
-
<value>adoptedFrom</value>
|
1003
|
-
<value>equivalent</value>
|
1004
|
-
<value>identical</value>
|
1005
|
-
<value>nonequivalent</value>
|
1006
|
-
<value>includedIn</value>
|
1007
1054
|
<value>includes</value>
|
1008
|
-
<value>
|
1009
|
-
<value>instanceOf</value>
|
1010
|
-
<value>partOf</value>
|
1055
|
+
<value>includedIn</value>
|
1011
1056
|
<value>hasPart</value>
|
1012
|
-
<value>
|
1013
|
-
<value>draftOf</value>
|
1057
|
+
<value>partOf</value>
|
1014
1058
|
<value>merges</value>
|
1059
|
+
<value>mergedInto</value>
|
1015
1060
|
<value>splits</value>
|
1016
|
-
<value>
|
1017
|
-
<value>
|
1018
|
-
<value>
|
1019
|
-
<value>
|
1020
|
-
<value>
|
1021
|
-
<value>
|
1061
|
+
<value>splitInto</value>
|
1062
|
+
<value>instance</value>
|
1063
|
+
<value>hasInstance</value>
|
1064
|
+
<value>exemplarOf</value>
|
1065
|
+
<value>hasExemplar</value>
|
1066
|
+
<value>manifestationOf</value>
|
1067
|
+
<value>hasManifestation</value>
|
1068
|
+
<value>reproductionOf</value>
|
1069
|
+
<value>hasReproduction</value>
|
1070
|
+
<value>reprintOf</value>
|
1071
|
+
<value>hasReprint</value>
|
1072
|
+
<value>expressionOf</value>
|
1073
|
+
<value>hasExpression</value>
|
1074
|
+
<value>translatedFrom</value>
|
1075
|
+
<value>hasTranslation</value>
|
1076
|
+
<value>arrangementOf</value>
|
1077
|
+
<value>hasArrangement</value>
|
1078
|
+
<value>abridgementOf</value>
|
1079
|
+
<value>hasAbridgement</value>
|
1080
|
+
<value>annotationOf</value>
|
1081
|
+
<value>hasAnnotation</value>
|
1082
|
+
<value>draftOf</value>
|
1083
|
+
<value>hasDraft</value>
|
1084
|
+
<value>editionOf</value>
|
1085
|
+
<value>hasEdition</value>
|
1086
|
+
<value>updates</value>
|
1087
|
+
<value>updatedBy</value>
|
1088
|
+
<value>derivedFrom</value>
|
1089
|
+
<value>derives</value>
|
1022
1090
|
<value>describes</value>
|
1023
1091
|
<value>describedBy</value>
|
1092
|
+
<value>catalogues</value>
|
1093
|
+
<value>cataloguedBy</value>
|
1094
|
+
<value>hasSuccessor</value>
|
1095
|
+
<value>successorOf</value>
|
1096
|
+
<value>adaptedFrom</value>
|
1097
|
+
<value>hasAdaptation</value>
|
1098
|
+
<value>adoptedFrom</value>
|
1099
|
+
<value>adoptedAs</value>
|
1100
|
+
<value>reviewOf</value>
|
1101
|
+
<value>hasReview</value>
|
1102
|
+
<value>commentaryOf</value>
|
1103
|
+
<value>hasCommentary</value>
|
1104
|
+
<value>related</value>
|
1105
|
+
<value>complements</value>
|
1106
|
+
<value>complementOf</value>
|
1107
|
+
<value>obsoletes</value>
|
1108
|
+
<value>obsoletedBy</value>
|
1109
|
+
<value>cited</value>
|
1110
|
+
<value>isCitedIn</value>
|
1024
1111
|
</choice>
|
1025
1112
|
</define>
|
1026
1113
|
<define name="docrelation">
|
@@ -1028,12 +1115,30 @@
|
|
1028
1115
|
<attribute name="type">
|
1029
1116
|
<ref name="DocRelationType"/>
|
1030
1117
|
</attribute>
|
1118
|
+
<optional>
|
1119
|
+
<element name="description">
|
1120
|
+
<ref name="FormattedString"/>
|
1121
|
+
</element>
|
1122
|
+
</optional>
|
1031
1123
|
<element name="bibitem">
|
1032
1124
|
<ref name="BibliographicItem"/>
|
1033
1125
|
</element>
|
1034
|
-
<
|
1035
|
-
<
|
1036
|
-
|
1126
|
+
<choice>
|
1127
|
+
<zeroOrMore>
|
1128
|
+
<ref name="locality"/>
|
1129
|
+
</zeroOrMore>
|
1130
|
+
<zeroOrMore>
|
1131
|
+
<ref name="localityStack"/>
|
1132
|
+
</zeroOrMore>
|
1133
|
+
</choice>
|
1134
|
+
<choice>
|
1135
|
+
<zeroOrMore>
|
1136
|
+
<ref name="sourceLocality"/>
|
1137
|
+
</zeroOrMore>
|
1138
|
+
<zeroOrMore>
|
1139
|
+
<ref name="sourceLocalityStack"/>
|
1140
|
+
</zeroOrMore>
|
1141
|
+
</choice>
|
1037
1142
|
</element>
|
1038
1143
|
</define>
|
1039
1144
|
<define name="version">
|
@@ -14,6 +14,14 @@ module Asciidoctor
|
|
14
14
|
|
15
15
|
register_for "generic"
|
16
16
|
|
17
|
+
def xml_root_tag
|
18
|
+
configuration.xml_root_tag || XML_ROOT_TAG
|
19
|
+
end
|
20
|
+
|
21
|
+
def xml_namespace
|
22
|
+
configuration.document_namespace || XML_NAMESPACE
|
23
|
+
end
|
24
|
+
|
17
25
|
def baselocation(loc)
|
18
26
|
return nil if loc.nil?
|
19
27
|
File.expand_path(File.join(File.dirname(self.class::_file || __FILE__), "..", "..", "..", loc))
|
@@ -23,7 +31,7 @@ module Asciidoctor
|
|
23
31
|
xml.contributor do |c|
|
24
32
|
c.role **{ type: "author" }
|
25
33
|
c.organization do |a|
|
26
|
-
a.name configuration.
|
34
|
+
a.name configuration.organization_name_long
|
27
35
|
end
|
28
36
|
end
|
29
37
|
personal_author(node, xml)
|
@@ -33,7 +41,7 @@ module Asciidoctor
|
|
33
41
|
xml.contributor do |c|
|
34
42
|
c.role **{ type: "publisher" }
|
35
43
|
c.organization do |a|
|
36
|
-
a.name configuration.
|
44
|
+
a.name configuration.organization_name_long
|
37
45
|
end
|
38
46
|
end
|
39
47
|
end
|
@@ -52,6 +60,15 @@ module Asciidoctor
|
|
52
60
|
end
|
53
61
|
end
|
54
62
|
|
63
|
+
def metadata_status(node, xml)
|
64
|
+
xml.status do |s|
|
65
|
+
s.stage ( node.attr("status") || node.attr("docstage") ||
|
66
|
+
configuration.default_stage || "published" )
|
67
|
+
x = node.attr("substage") and s.substage x
|
68
|
+
x = node.attr("iteration") and s.iteration x
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
55
72
|
def docidentifier_cleanup(xmldoc)
|
56
73
|
template = configuration.docid_template ||
|
57
74
|
"{{ organization_name_short }} {{ docnumeric }}"
|
@@ -61,7 +78,8 @@ module Asciidoctor
|
|
61
78
|
end
|
62
79
|
|
63
80
|
def metadata_id(node, xml)
|
64
|
-
xml.docidentifier
|
81
|
+
xml.docidentifier **{ type:
|
82
|
+
configuration.organization_name_short } do |i|
|
65
83
|
i << "DUMMY"
|
66
84
|
end
|
67
85
|
xml.docnumber { |i| i << node.attr("docnumber") }
|
@@ -73,34 +91,28 @@ module Asciidoctor
|
|
73
91
|
c.from from
|
74
92
|
c.owner do |owner|
|
75
93
|
owner.organization do |o|
|
76
|
-
o.name configuration.
|
94
|
+
o.name configuration.organization_name_long
|
77
95
|
end
|
78
96
|
end
|
79
97
|
end
|
80
98
|
end
|
81
99
|
|
82
|
-
def
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
result << noko { |ixml| middle node, ixml }
|
88
|
-
result << "</#{root_tag}>"
|
89
|
-
result = textcleanup(result)
|
90
|
-
ret1 = cleanup(Nokogiri::XML(result))
|
91
|
-
validate(ret1) unless @novalid
|
92
|
-
ret1.root.add_namespace(nil, configuration.document_namespace ||
|
93
|
-
XML_NAMESPACE)
|
94
|
-
ret1
|
100
|
+
def metadata_ext(node, ext)
|
101
|
+
super
|
102
|
+
Array(configuration.metadata_extensions).each do |e|
|
103
|
+
a = node.attr(e) and ext.send e, a
|
104
|
+
end
|
95
105
|
end
|
96
106
|
|
97
107
|
def doctype(node)
|
98
108
|
d = node.attr("doctype")
|
99
|
-
|
100
|
-
|
109
|
+
configuration.doctypes or return d == "article" ? "standard" : d
|
110
|
+
default = configuration.default_doctype || Array(configuration.doctypes).dig(0) ||
|
111
|
+
"standard"
|
112
|
+
unless Array(configuration.doctypes).include? d
|
101
113
|
@log.add("Document Attributes", nil,
|
102
|
-
"#{d} is not a legal document type: reverting to '
|
103
|
-
d =
|
114
|
+
"#{d} is not a legal document type: reverting to '#{default}'")
|
115
|
+
d = default
|
104
116
|
end
|
105
117
|
d
|
106
118
|
end
|
@@ -110,22 +122,32 @@ module Asciidoctor
|
|
110
122
|
set_default_values_from_yaml_file(path_to_config_file)
|
111
123
|
end
|
112
124
|
|
125
|
+
def sectiontype_streamline(ret)
|
126
|
+
if configuration.termsdefs_titles.map(&:downcase).include? (ret)
|
127
|
+
"terms and definitions"
|
128
|
+
elsif configuration.symbols_titles.map(&:downcase).include? (ret)
|
129
|
+
"symbols and abbreviated terms"
|
130
|
+
elsif configuration.normref_titles.map(&:downcase).include? (ret)
|
131
|
+
"normative references"
|
132
|
+
elsif configuration.bibliography_titles.map(&:downcase).include? (ret)
|
133
|
+
"bibliography"
|
134
|
+
else
|
135
|
+
ret
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
113
139
|
def document(node)
|
114
140
|
read_config_file(node.attr("customize")) if node.attr("customize")
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
end
|
126
|
-
@log.write(@localdir + @filename + ".err") unless @novalid
|
127
|
-
@files_to_delete.each { |f| FileUtils.rm f }
|
128
|
-
ret
|
141
|
+
super
|
142
|
+
end
|
143
|
+
|
144
|
+
def outputs(node, ret)
|
145
|
+
File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
|
146
|
+
presentation_xml_converter(node).convert(@filename + ".xml")
|
147
|
+
html_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.html")
|
148
|
+
doc_converter(node).convert(@filename + ".presentation.xml", nil, false, "#{@filename}.doc")
|
149
|
+
pdf_converter(node)&.convert(@filename + ".presentation.xml", nil, false, "#{@filename}.pdf")
|
150
|
+
|
129
151
|
end
|
130
152
|
|
131
153
|
def validate(doc)
|
@@ -135,6 +157,23 @@ module Asciidoctor
|
|
135
157
|
File.join(File.dirname(__FILE__), "generic.rng"))
|
136
158
|
end
|
137
159
|
|
160
|
+
def content_validate(doc)
|
161
|
+
super
|
162
|
+
bibdata_validate(doc.root)
|
163
|
+
end
|
164
|
+
|
165
|
+
def bibdata_validate(doc)
|
166
|
+
stage_validate(doc)
|
167
|
+
end
|
168
|
+
|
169
|
+
def stage_validate(xmldoc)
|
170
|
+
stages = configuration&.stage_abbreviations&.keys || return
|
171
|
+
stages.empty? and return
|
172
|
+
stage = xmldoc&.at("//bibdata/status/stage")&.text
|
173
|
+
stages.include? stage or
|
174
|
+
@log.add("Document Attributes", nil, "#{stage} is not a recognised status")
|
175
|
+
end
|
176
|
+
|
138
177
|
def sections_cleanup(x)
|
139
178
|
super
|
140
179
|
x.xpath("//*[@inline-header]").each do |h|
|
@@ -148,11 +187,15 @@ module Asciidoctor
|
|
148
187
|
IsoDoc::Generic::HtmlConvert.new(html_extract_attributes(node))
|
149
188
|
end
|
150
189
|
|
190
|
+
def presentation_xml_converter(node)
|
191
|
+
IsoDoc::Generic::PresentationXMLConvert.new(html_extract_attributes(node))
|
192
|
+
end
|
193
|
+
|
151
194
|
alias_method :pdf_converter, :html_converter
|
152
195
|
alias_method :style, :blank_method
|
153
196
|
alias_method :title_validate, :blank_method
|
154
197
|
|
155
|
-
def
|
198
|
+
def doc_converter(node)
|
156
199
|
IsoDoc::Generic::WordConvert.new(doc_extract_attributes(node))
|
157
200
|
end
|
158
201
|
|