metanorma-ietf 2.0.8 → 2.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5810ee943727c95c708a2375a3c38c473ba80c7ed8a0f99449d76de0d73cf514
4
- data.tar.gz: 9cdfa5258245b10631c9f44bfc873f27113ef53d92ac3e63a2d92b2277582655
3
+ metadata.gz: 618fe15c1205c409e7f57dc672f45545a408bf20dd7fdeb68577e295232bf226
4
+ data.tar.gz: 42104d4c8b90df8481c5bf25d598a68e7c447d71bfa53349b4bef8194dd0e3b0
5
5
  SHA512:
6
- metadata.gz: e3778ea665033cf2245defda88dc0743dc26db811b5863e4d4a8c5a594958f560b1b807534a3e7e47eb490a18f3b479f6529d809256b5199adaa18ee61c12699
7
- data.tar.gz: 5a1f75cfeae796f38f4e117088e6afa52fccc6a536307afa2ce6d4c2839c62ac59eade3be28636c02358cb228268c6439d41220d484ff442302ed75fd16c7441
6
+ metadata.gz: 18a552d7d528ae211fcbad094c876c6fac60b0503687725edc13d809a3a9f2fd93aafa7a14ede31f47b7b5e9c1d6b5fa092c261f4fd6d63ca9e7eb391fcc6dea
7
+ data.tar.gz: 9c58535cb308711ef79df7a58d261887cbbadbedb3fb1a0edcd0247f782b5caa9c58df24ff371ffacd4fe1381f4f4840e61a267903a33fb40ccbd633a7f249c5
@@ -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: Cache xml2rfc
@@ -36,7 +44,7 @@ jobs:
36
44
  - name: Use Python
37
45
  uses: actions/setup-python@v1
38
46
  with:
39
- python-version: '2.7'
47
+ python-version: '3.6'
40
48
  architecture: 'x64'
41
49
  - name: Install xml2rfc
42
50
  run: |
@@ -6,15 +6,22 @@ on:
6
6
  push:
7
7
  branches: [ master ]
8
8
  pull_request:
9
-
9
+ paths-ignore:
10
+ - .github/workflows/macos.yml
11
+ - .github/workflows/windows.yml
10
12
  jobs:
11
13
  test-linux:
12
14
  name: Test on Ruby ${{ matrix.ruby }} Ubuntu
13
15
  runs-on: ubuntu-latest
16
+ continue-on-error: ${{ matrix.experimental }}
14
17
  strategy:
15
18
  fail-fast: false
16
19
  matrix:
17
20
  ruby: [ '2.6', '2.5', '2.4' ]
21
+ experimental: [false]
22
+ include:
23
+ - ruby: '2.7'
24
+ experimental: true
18
25
  steps:
19
26
  - uses: actions/checkout@master
20
27
  - name: Cache xml2rfc
@@ -36,7 +43,7 @@ jobs:
36
43
  - name: Use Python
37
44
  uses: actions/setup-python@v1
38
45
  with:
39
- python-version: '2.7'
46
+ python-version: '3.6'
40
47
  architecture: 'x64'
41
48
  - name: Install xml2rfc
42
49
  run: |
@@ -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: Cache xml2rfc
@@ -37,11 +45,11 @@ jobs:
37
45
  - name: Use Python
38
46
  uses: actions/setup-python@v1
39
47
  with:
40
- ruby-version: '2.7'
48
+ ruby-version: '3.6'
41
49
  architecture: 'x64'
42
50
  - name: Install xml2rfc
43
51
  run: |
44
52
  pip install xml2rfc
45
53
  - name: Run specs
46
54
  run: |
47
- bundle exec rake
55
+ bundle exec rake
data/Gemfile CHANGED
@@ -10,4 +10,4 @@ if File.exist? 'Gemfile.devel'
10
10
  eval File.read('Gemfile.devel'), nil, 'Gemfile.devel' # rubocop:disable Security/Eval
11
11
  end
12
12
 
13
- gem "metanorma-cli"
13
+ #gem "metanorma-cli"
@@ -88,7 +88,7 @@
88
88
  <text/>
89
89
  </element>
90
90
  </define>
91
- <define name="LocalizedString">
91
+ <define name="LocalizedString1">
92
92
  <optional>
93
93
  <!-- multiple languages and scripts possible: comma delimit them if so -->
94
94
  <attribute name="language"/>
@@ -98,6 +98,16 @@
98
98
  </optional>
99
99
  <text/>
100
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>
101
111
  <!--
102
112
  Unlike UML, change type to format: type is overloaded
103
113
  Would be need if plain were default value and could omit the attribute
@@ -121,7 +131,7 @@
121
131
  </optional>
122
132
  <ref name="LocalizedStringOrXsAny"/>
123
133
  </define>
124
- <define name="LocalizedStringOrXsAny">
134
+ <define name="LocalizedStringOrXsAny1">
125
135
  <optional>
126
136
  <!-- multiple languages and scripts possible: comma delimit them if so -->
127
137
  <attribute name="language"/>
@@ -136,6 +146,16 @@
136
146
  </choice>
137
147
  </oneOrMore>
138
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>
139
159
  <define name="contributor">
140
160
  <element name="contributor">
141
161
  <zeroOrMore>
@@ -512,7 +532,7 @@
512
532
  </define>
513
533
  <define name="LocalityType">
514
534
  <data type="string">
515
- <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>
516
536
  </data>
517
537
  </define>
518
538
  <define name="referenceFrom">
@@ -641,9 +661,9 @@
641
661
  <optional>
642
662
  <ref name="status"/>
643
663
  </optional>
644
- <optional>
664
+ <zeroOrMore>
645
665
  <ref name="copyright"/>
646
- </optional>
666
+ </zeroOrMore>
647
667
  <zeroOrMore>
648
668
  <ref name="docrelation"/>
649
669
  </zeroOrMore>
@@ -767,6 +787,8 @@
767
787
  <value>unchanged</value>
768
788
  <value>circulated</value>
769
789
  <value>adapted</value>
790
+ <value>vote-started</value>
791
+ <value>vote-ended</value>
770
792
  </choice>
771
793
  </define>
772
794
  <define name="bdate">
@@ -999,7 +1021,17 @@
999
1021
  <optional>
1000
1022
  <ref name="to"/>
1001
1023
  </optional>
1002
- <ref name="owner"/>
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/>
1003
1035
  </element>
1004
1036
  </define>
1005
1037
  <define name="from">
@@ -1019,38 +1051,63 @@
1019
1051
  </define>
1020
1052
  <define name="DocRelationType">
1021
1053
  <choice>
1022
- <value>obsoletes</value>
1023
- <value>obsoletedBy</value>
1024
- <value>supersedes</value>
1025
- <value>supersededBy</value>
1026
- <value>updates</value>
1027
- <value>updatedBy</value>
1028
- <value>complements</value>
1029
- <value>derivedFrom</value>
1030
- <value>translatedFrom</value>
1031
- <value>hasTranslation</value>
1032
- <value>adoptedFrom</value>
1033
- <value>equivalent</value>
1034
- <value>identical</value>
1035
- <value>nonequivalent</value>
1036
- <value>includedIn</value>
1037
1054
  <value>includes</value>
1038
- <value>instance</value>
1039
- <value>instanceOf</value>
1040
- <value>partOf</value>
1055
+ <value>includedIn</value>
1041
1056
  <value>hasPart</value>
1042
- <value>hasDraft</value>
1043
- <value>draftOf</value>
1057
+ <value>partOf</value>
1044
1058
  <value>merges</value>
1059
+ <value>mergedInto</value>
1045
1060
  <value>splits</value>
1046
- <value>amends</value>
1047
- <value>amendedBy</value>
1048
- <value>corrects</value>
1049
- <value>correctedBy</value>
1050
- <value>revises</value>
1051
- <value>revisedBy</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>
1052
1090
  <value>describes</value>
1053
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>
1054
1111
  </choice>
1055
1112
  </define>
1056
1113
  <define name="docrelation">
@@ -2,18 +2,20 @@ module Asciidoctor
2
2
  module Ietf
3
3
  class Converter < ::Asciidoctor::Standoc::Converter
4
4
  def para_attrs(node)
5
- attr_code( keepWithNext: node.attr("keepWithNext"),
6
- keepWithPrevious: node.attr("keepWithPrevious"),
5
+ attr_code( "keep-with-next": node.attr("keepWithNext") ||
6
+ node.attr("keep-with-next"),
7
+ "keep-with-previous": node.attr("keepWithPrevious") ||
8
+ node.attr("keep-with-previous"),
7
9
  id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node))
8
10
  end
9
11
 
10
- def ul_attr(node)
12
+ def ul_attrs(node)
11
13
  attr_code(id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
12
14
  nobullet: node.attr("nobullet"),
13
15
  spacing: node.attr("spacing"))
14
16
  end
15
17
 
16
- def ol_attr(node)
18
+ def ol_attrs(node)
17
19
  attr_code(id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
18
20
  type: node.attr("format") || olist_style(node.style),
19
21
  group: node.attr("group"),
@@ -21,7 +23,7 @@ module Asciidoctor
21
23
  start: node.attr("start"))
22
24
  end
23
25
 
24
- def dl_attr(node)
26
+ def dl_attrs(node)
25
27
  attr_code(id: ::Asciidoctor::Standoc::Utils::anchor_or_uuid(node),
26
28
  newline: node.attr("newline"),
27
29
  indent: node.attr("indent"),
@@ -57,8 +57,9 @@ module Asciidoctor
57
57
  ["en"].each do |lang|
58
58
  at = { language: lang, format: "text/plain" }
59
59
  xml.title **attr_code(at.merge(type: "main")) do |t|
60
- t << ::Asciidoctor::Standoc::Utils::asciidoc_sub(
61
- node.attr("title") || node.attr("title-en") || node.title)
60
+ t << (::Asciidoctor::Standoc::Utils::asciidoc_sub(node.attr("title")) ||
61
+ ::Asciidoctor::Standoc::Utils::asciidoc_sub(node.attr("title-en")) ||
62
+ node.title)
62
63
  end
63
64
  a = node.attr("abbrev") and
64
65
  xml.title a, **attr_code(at.merge(type: "abbrev"))
@@ -69,12 +69,12 @@
69
69
  </attribute>
70
70
  </optional>
71
71
  <optional>
72
- <attribute name="keepWithNext">
72
+ <attribute name="keep-with-next">
73
73
  <data type="boolean"/>
74
74
  </attribute>
75
75
  </optional>
76
76
  <optional>
77
- <attribute name="keepWithPrevious">
77
+ <attribute name="keep-with-previous">
78
78
  <data type="boolean"/>
79
79
  </attribute>
80
80
  </optional>
@@ -297,6 +297,9 @@
297
297
  <data type="boolean"/>
298
298
  </attribute>
299
299
  </optional>
300
+ <optional>
301
+ <attribute name="number"/>
302
+ </optional>
300
303
  <optional>
301
304
  <attribute name="subsequence"/>
302
305
  </optional>
@@ -379,6 +382,9 @@
379
382
  <data type="boolean"/>
380
383
  </attribute>
381
384
  </optional>
385
+ <optional>
386
+ <attribute name="number"/>
387
+ </optional>
382
388
  <optional>
383
389
  <attribute name="subsequence"/>
384
390
  </optional>
@@ -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>
@@ -30,9 +30,22 @@
30
30
  <data type="boolean"/>
31
31
  </attribute>
32
32
  </optional>
33
+ <optional>
34
+ <attribute name="number"/>
35
+ </optional>
33
36
  <optional>
34
37
  <attribute name="subsequence"/>
35
38
  </optional>
39
+ <optional>
40
+ <attribute name="keep-with-next">
41
+ <data type="boolean"/>
42
+ </attribute>
43
+ </optional>
44
+ <optional>
45
+ <attribute name="keep-lines-together">
46
+ <data type="boolean"/>
47
+ </attribute>
48
+ </optional>
36
49
  <attribute name="id">
37
50
  <data type="ID"/>
38
51
  </attribute>
@@ -141,6 +154,16 @@
141
154
  <data type="boolean"/>
142
155
  </attribute>
143
156
  </optional>
157
+ <optional>
158
+ <attribute name="keep-with-next">
159
+ <data type="boolean"/>
160
+ </attribute>
161
+ </optional>
162
+ <optional>
163
+ <attribute name="keep-lines-together">
164
+ <data type="boolean"/>
165
+ </attribute>
166
+ </optional>
144
167
  <oneOrMore>
145
168
  <ref name="BasicBlock"/>
146
169
  </oneOrMore>
@@ -1,8 +1,8 @@
1
1
  module IsoDoc::Ietf
2
2
  class RfcConvert < ::IsoDoc::Convert
3
3
  def para_attrs(node)
4
- { keepWithNext: node["keepWithNext"],
5
- keepWithPrevious: node["keepWithPrevious"],
4
+ { keepWithNext: node["keep-with-next"],
5
+ keepWithPrevious: node["keep-with-previous"],
6
6
  anchor: node["id"] }
7
7
  end
8
8
 
@@ -56,16 +56,16 @@ module IsoDoc::Ietf
56
56
  end
57
57
  end
58
58
 
59
- def dl_attr(node)
59
+ def dl_attrs(node)
60
60
  attr_code(anchor: node["id"],
61
61
  newline: node["newline"],
62
62
  indent: node["indent"],
63
63
  spacing: node["spacing"])
64
64
  end
65
65
 
66
- def dt_parse(dt, term)
66
+ def dt_parse(dt, term)
67
67
  if dt.elements.empty?
68
- term << dt.text
68
+ term << dt.text
69
69
  else
70
70
  dt.children.each { |n| parse(n, term) }
71
71
  end
@@ -112,8 +112,8 @@ module IsoDoc::Ietf
112
112
  div.sourcecode **attr_code(type: node["lang"], name: node["filename"],
113
113
  markers: node["markers"],
114
114
  src: node["src"]) do |s|
115
- node.children.each { |x| parse(x, s) unless x.name == "name" }
116
- end
115
+ node.children.each { |x| parse(x, s) unless x.name == "name" }
116
+ end
117
117
  end
118
118
  end
119
119
 
@@ -150,6 +150,15 @@ module IsoDoc::Ietf
150
150
  end
151
151
  end
152
152
 
153
+ def formula_parse(node, out)
154
+ formula_parse1(node, out)
155
+ formula_where(node.at(ns("./dl")), out)
156
+ node.children.each do |n|
157
+ next if %w(stem dl).include? n.name
158
+ parse(n, out)
159
+ end
160
+ end
161
+
153
162
  def quote_attribution(node)
154
163
  author = node&.at(ns("./author"))&.text
155
164
  source = node&.at(ns("./source/@uri"))&.text
@@ -19,7 +19,6 @@ module IsoDoc::Ietf
19
19
  end
20
20
 
21
21
  def info(isoxml, out)
22
- @meta.keywords isoxml, out
23
22
  @meta.areas isoxml, out
24
23
  super
25
24
  end
@@ -120,11 +120,15 @@ module IsoDoc::Ietf
120
120
 
121
121
  def eref_parse(node, out)
122
122
  linkend = node.children.reject { |c| %w{locality localityStack}.include? c.name }
123
+ relative = node["relative"] ||
124
+ node.at(ns(".//locality[@type = 'anchor']/referenceFrom"))&.text || ""
123
125
  section = eref_clause(node.xpath(ns("./locality | ./localityStack")), nil) || ""
126
+ section = "" if relative.empty?
124
127
  out.relref **attr_code(target: node["bibitemid"], section: section,
128
+ relative: relative,
125
129
  displayFormat: node["displayFormat"]) do |l|
126
- linkend.each { |n| parse(n, l) }
127
- end
130
+ linkend.each { |n| parse(n, l) }
131
+ end
128
132
  end
129
133
 
130
134
  def eref_clause(refs, target)
@@ -19,14 +19,6 @@ module IsoDoc
19
19
  # = item describedby convertedfrom alternate
20
20
  end
21
21
 
22
- def keywords(isoxml, _out)
23
- ret = []
24
- isoxml.xpath(ns("//bibdata/keyword")).each do |kw|
25
- ret << kw.text
26
- end
27
- set(:keywords, ret)
28
- end
29
-
30
22
  def areas(isoxml, _out)
31
23
  ret = []
32
24
  isoxml.xpath(ns("//bibdata/ext/area")).each do |kw|
@@ -45,18 +37,18 @@ module IsoDoc
45
37
  wg(xml)
46
38
  end
47
39
 
48
- def wg(xml)
49
- workgroups = []
50
- xml.xpath(ns("//bibdata/ext/editorialgroup/workgroup")).each do |wg|
51
- workgroups << wg.text
40
+ def wg(xml)
41
+ workgroups = []
42
+ xml.xpath(ns("//bibdata/ext/editorialgroup/workgroup")).each do |wg|
43
+ workgroups << wg.text
52
44
  end
53
- set(:wg, workgroups)
45
+ set(:wg, workgroups)
54
46
  end
55
47
 
56
- def doctype(isoxml, _out)
57
- super
58
- set(:doctype, "Rfc") if get[:doctype].nil?
59
- end
48
+ def doctype(isoxml, _out)
49
+ super
50
+ set(:doctype, "Rfc") if get[:doctype].nil?
51
+ end
60
52
  end
61
53
  end
62
54
  end
@@ -50,8 +50,9 @@ module IsoDoc::Ietf
50
50
  r.format nil, **attr_code(target: u.text, type: u["type"])
51
51
  end
52
52
  docidentifiers = b.xpath(ns("./docidentifier"))
53
- id = bibitem_ref_code(b) and id.text != "(NO ID)" and
54
- r.refcontent render_identifier(id)
53
+ id = render_identifier(bibitem_ref_code(b))
54
+ !id[1].nil? and id[1] != "(NO ID)" and
55
+ r.refcontent id[1]
55
56
  docidentifiers&.each do |u|
56
57
  if %w(DOI IETF).include? u["type"]
57
58
  r.seriesInfo nil, **attr_code(value: u.text, name: u["type"])
@@ -67,15 +68,6 @@ module IsoDoc::Ietf
67
68
  end
68
69
  end
69
70
 
70
- def bibitem_ref_code(b)
71
- id = b.at(ns("./docidentifier[not(@type = 'DOI' or @type = 'metanorma' "\
72
- "or @type = 'ISSN' or @type = 'ISBN' or @type = 'IETF')]"))
73
- return id if id
74
- id = Nokogiri::XML::Node.new("docidentifier", b.document)
75
- id << "(NO ID)"
76
- id
77
- end
78
-
79
71
  def relaton_to_author(b, f)
80
72
  auths = b.xpath(ns("./contributor[xmlns:role/@type = 'author' or "\
81
73
  "xmlns:role/@type = 'editor']"))
@@ -50,8 +50,13 @@ module IsoDoc::Ietf
50
50
  end
51
51
  end
52
52
 
53
+ def textcleanup(docxml)
54
+ passthrough_cleanup(docxml)
55
+ end
56
+
53
57
  def postprocess(result, filename, dir)
54
- result = from_xhtml(cleanup(to_xhtml(result))).sub(/<!DOCTYPE[^>]+>\n/, "").
58
+ result = from_xhtml(cleanup(to_xhtml(textcleanup(result)))).
59
+ sub(/<!DOCTYPE[^>]+>\n/, "").
55
60
  sub(/(<rfc[^<]+? )lang="[^"]+"/, "\\1")
56
61
  File.open("#{filename}.rfc.xml", "w:UTF-8") { |f| f.write(result) }
57
62
  @files_to_delete.each { |f| FileUtils.rm_rf f }
@@ -65,6 +70,7 @@ module IsoDoc::Ietf
65
70
  def initialize(options)
66
71
  super
67
72
  @xinclude = options[:use_xinclude] == "true"
73
+ @format = :rfc
68
74
  end
69
75
  end
70
76
  end
@@ -60,7 +60,8 @@ module IsoDoc::Ietf
60
60
  {
61
61
  docName: @meta.get[:doctype] == "Internet Draft" ? @meta.get[:docnumber] : nil,
62
62
  number: @meta.get[:doctype].casecmp?("rfc") ? @meta.get[:docnumber] : nil,
63
- category: docxml&.at(ns("//bibdata/series[@type = 'intended']/title"))&.text || "std",
63
+ category: series2category(
64
+ docxml&.at(ns("//bibdata/series[@type = 'intended']/title"))&.text),
64
65
  ipr: docxml&.at(ns("//bibdata/ext/ipr"))&.text,
65
66
  obsoletes: obs,
66
67
  updates: upd,
@@ -78,6 +79,20 @@ module IsoDoc::Ietf
78
79
  }
79
80
  end
80
81
 
82
+ def series2category(series)
83
+ case series&.downcase
84
+ when "standard" then "std"
85
+ when "informational" then "info"
86
+ when "experimental" then "exp"
87
+ when "bcp" then "bcp"
88
+ when "fyi" then "info"
89
+ when "full-standard" then "std"
90
+ when "historic" then "historic"
91
+ else
92
+ "std"
93
+ end
94
+ end
95
+
81
96
  def xpath_comma(xpath)
82
97
  return nil if xpath.empty?
83
98
  xpath.map { |x| x.text }.join(", ")
@@ -1,12 +1,12 @@
1
1
  module IsoDoc::Ietf
2
2
  class RfcConvert < ::IsoDoc::Convert
3
- def make_table_attr(node)
3
+ def table_attrs(node)
4
4
  attr_code(anchor: node["id"], align: node["align"])
5
5
  end
6
6
 
7
7
  def table_parse(node, out)
8
8
  @in_table = true
9
- out.table **make_table_attr(node) do |t|
9
+ out.table **table_attrs(node) do |t|
10
10
  table_title_parse(node, out)
11
11
  thead_parse(node, t)
12
12
  tbody_parse(node, t)
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ietf
3
- VERSION = "2.0.8".freeze
3
+ VERSION = "2.0.13".freeze
4
4
  end
5
5
  end
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.require_paths = ["lib"]
36
36
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
37
37
 
38
- spec.add_dependency "metanorma-standoc", "~> 1.3.0"
38
+ spec.add_dependency "metanorma-standoc", "~> 1.4.0"
39
39
  spec.add_dependency "isodoc", "~> 1.0.0"
40
40
  spec.add_dependency "mathml2asciimath"
41
41
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-ietf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.8
4
+ version: 2.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-17 00:00:00.000000000 Z
11
+ date: 2020-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.0
19
+ version: 1.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3.0
26
+ version: 1.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: isodoc
29
29
  requirement: !ruby/object:Gem::Requirement