metanorma-iso 1.9.4 → 1.10.1

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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ubuntu.yml +41 -0
  3. data/Gemfile +3 -4
  4. data/Makefile +44 -0
  5. data/Rakefile +1 -1
  6. data/bin/rspec +1 -2
  7. data/lib/asciidoctor/iso/basicdoc.rng +32 -5
  8. data/lib/asciidoctor/iso/biblio.rng +2 -0
  9. data/lib/asciidoctor/iso/cleanup.rb +7 -6
  10. data/lib/asciidoctor/iso/front.rb +9 -1
  11. data/lib/asciidoctor/iso/isodoc.rng +430 -76
  12. data/lib/asciidoctor/iso/isostandard-amd.rng +1 -1
  13. data/lib/asciidoctor/iso/isostandard.rng +9 -23
  14. data/lib/asciidoctor/iso/reqt.rng +24 -3
  15. data/lib/asciidoctor/iso/validate.rb +7 -7
  16. data/lib/asciidoctor/iso/validate_section.rb +1 -1
  17. data/lib/isodoc/iso/html/isodoc.css +1 -2
  18. data/lib/isodoc/iso/html/isodoc.scss +1 -1
  19. data/lib/isodoc/iso/html/wordstyle.css +16 -4
  20. data/lib/isodoc/iso/html/wordstyle.scss +16 -4
  21. data/lib/isodoc/iso/i18n.rb +10 -9
  22. data/lib/isodoc/iso/iso.amendment.xsl +200 -20
  23. data/lib/isodoc/iso/iso.international-standard.xsl +200 -20
  24. data/lib/isodoc/iso/presentation_xml_convert.rb +9 -10
  25. data/lib/isodoc/iso/sections.rb +2 -0
  26. data/lib/isodoc/iso/word_cleanup.rb +94 -0
  27. data/lib/isodoc/iso/word_convert.rb +12 -89
  28. data/lib/metanorma/iso/version.rb +1 -1
  29. data/metanorma-iso.gemspec +4 -3
  30. data/spec/asciidoctor/base_spec.rb +685 -178
  31. data/spec/asciidoctor/blank_spec.rb +38 -0
  32. data/spec/asciidoctor/blocks_spec.rb +22 -47
  33. data/spec/asciidoctor/cleanup_spec.rb +34 -20
  34. data/spec/asciidoctor/inline_spec.rb +10 -2
  35. data/spec/asciidoctor/refs_spec.rb +87 -4
  36. data/spec/asciidoctor/section_spec.rb +3 -3
  37. data/spec/isodoc/i18n_spec.rb +29 -15
  38. data/spec/isodoc/inline_spec.rb +56 -26
  39. data/spec/isodoc/section_spec.rb +1 -1
  40. data/spec/isodoc/table_spec.rb +6 -8
  41. data/spec/isodoc/terms_spec.rb +11 -11
  42. data/spec/isodoc/xref_spec.rb +1397 -1376
  43. data/spec/metanorma/processor_spec.rb +4 -1
  44. data/spec/spec_helper.rb +14 -1
  45. data/spec/vcr_cassettes/docrels.yml +783 -0
  46. data/spec/vcr_cassettes/sortrefs.yml +599 -0
  47. metadata +38 -19
@@ -0,0 +1,38 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Asciidoctor::ISO do
4
+ it "processes a blank document" do
5
+ input = <<~INPUT
6
+ #{ASCIIDOC_BLANK_HDR}
7
+ INPUT
8
+ output = <<~OUTPUT
9
+ #{BLANK_HDR}
10
+ <sections/>
11
+ </iso-standard>
12
+ OUTPUT
13
+ expect(xmlpp(Asciidoctor.convert(input, *OPTIONS)))
14
+ .to be_equivalent_to xmlpp(output)
15
+ end
16
+
17
+ it "converts a blank document" do
18
+ input = <<~INPUT
19
+ = Document title
20
+ Author
21
+ :docfile: test.adoc
22
+ :novalid:
23
+ :no-isobib:
24
+ INPUT
25
+ output = <<~OUTPUT
26
+ #{BLANK_HDR}
27
+ <sections/>
28
+ </iso-standard>
29
+ OUTPUT
30
+ expect(xmlpp(Asciidoctor.convert(input, *OPTIONS)))
31
+ .to be_equivalent_to xmlpp(output)
32
+ expect(File.exist?("test_alt.html")).to be true
33
+ expect(File.exist?("test.html")).to be true
34
+ expect(File.exist?("test.doc")).to be true
35
+ expect(File.exist?("test.pdf")).to be true
36
+ expect(File.exist?("htmlstyle.css")).to be false
37
+ end
38
+ end
@@ -133,7 +133,7 @@ RSpec.describe Asciidoctor::ISO do
133
133
  <p id="foreword">Foreword</p>
134
134
  <review date="20170101T00:00:00Z" from="foreword" id="_" reviewer="ISO" to="foreword">
135
135
  <p id="_">A Foreword shall appear in each document. The generic text is shown here. It does not contain requirements, recommendations or permissions.</p>
136
- <p id="_">For further information on the Foreword, see#{' '}
136
+ <p id="_">For further information on the Foreword, see
137
137
  <strong>ISO/IEC Directives, Part 2, 2016, Clause 12.</strong></p>
138
138
  </review>
139
139
  </sections>
@@ -158,9 +158,9 @@ RSpec.describe Asciidoctor::ISO do
158
158
  <sections>
159
159
  <terms id="_" obligation="normative">
160
160
  <title>Terms and definitions</title>
161
- #{TERM_BOILERPLATE}#{' '}
161
+ #{TERM_BOILERPLATE}
162
162
  <term id="term-term1">
163
- <preferred>Term1</preferred>
163
+ <preferred><expression><name>Term1</name></expression></preferred>
164
164
  <termnote id="_">
165
165
  <p id="_">This is a note</p></termnote>
166
166
  </term>
@@ -283,7 +283,7 @@ RSpec.describe Asciidoctor::ISO do
283
283
  <title>Terms and definitions</title>
284
284
  #{TERM_BOILERPLATE}
285
285
  <term id="term-term1">
286
- <preferred>Term1</preferred>
286
+ <preferred><expression><name>Term1</name></expression></preferred>
287
287
  <termexample id="_">
288
288
  <p id="_">This is an example</p></termexample>
289
289
  </term>
@@ -521,6 +521,8 @@ RSpec.describe Asciidoctor::ISO do
521
521
 
522
522
  === Term1
523
523
 
524
+ Definition
525
+
524
526
  [.source]
525
527
  <<ISO2191,section=1>>
526
528
  INPUT
@@ -531,8 +533,13 @@ RSpec.describe Asciidoctor::ISO do
531
533
  <title>Terms and definitions</title>
532
534
  #{TERM_BOILERPLATE}
533
535
  <term id="term-term1">
534
- <preferred>Term1</preferred>
535
- <termsource status="identical">
536
+ <preferred><expression><name>Term1</name></expression></preferred>
537
+ <definition>
538
+ <verbaldefinition>
539
+ <p id='_'>Definition</p>
540
+ </verbaldefinition>
541
+ </definition>
542
+ <termsource status='identical' type='authoritative'>
536
543
  <origin bibitemid="ISO2191" citeas="" type="inline">
537
544
  <localityStack>
538
545
  <locality type="section">
@@ -556,6 +563,8 @@ RSpec.describe Asciidoctor::ISO do
556
563
 
557
564
  === Term1
558
565
 
566
+ Definition
567
+
559
568
  [.source]
560
569
  <<ISO2191,section=1>>, with adjustments
561
570
  INPUT
@@ -566,8 +575,13 @@ RSpec.describe Asciidoctor::ISO do
566
575
  <title>Terms and definitions</title>
567
576
  #{TERM_BOILERPLATE}
568
577
  <term id="term-term1">
569
- <preferred>Term1</preferred>
570
- <termsource status="modified">
578
+ <preferred><expression><name>Term1</name></expression></preferred>
579
+ <definition>
580
+ <verbaldefinition>
581
+ <p id='_'>Definition</p>
582
+ </verbaldefinition>
583
+ </definition>
584
+ <termsource status='modified' type='authoritative'>
571
585
  <origin bibitemid="ISO2191" citeas="" type="inline">
572
586
  <localityStack>
573
587
  <locality type="section">
@@ -586,43 +600,4 @@ RSpec.describe Asciidoctor::ISO do
586
600
  expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
587
601
  .to be_equivalent_to xmlpp(output)
588
602
  end
589
-
590
- it "processes nested terms" do
591
- input = <<~INPUT
592
- #{ASCIIDOC_BLANK_HDR}
593
- == Terms and Definitions
594
-
595
- [.term]
596
- === Term1
597
-
598
- definition
599
-
600
- ==== Term11
601
- definition2
602
- INPUT
603
- output = <<~OUTPUT
604
- #{BLANK_HDR}
605
- <sections>
606
- <terms id='_' obligation='normative'>
607
- <title>Terms and definitions</title>
608
- #{TERM_BOILERPLATE}
609
- <term id='term-term1'>
610
- <preferred>Term1</preferred>
611
- <definition>
612
- <p id='_'>definition</p>
613
- </definition>
614
- <term id='term-term11'>
615
- <preferred>Term11</preferred>
616
- <definition>
617
- <p id='_'>definition2</p>
618
- </definition>
619
- </term>
620
- </term>
621
- </terms>
622
- </sections>
623
- </iso-standard>
624
- OUTPUT
625
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
626
- .to be_equivalent_to xmlpp(output)
627
- end
628
603
  end
@@ -36,6 +36,7 @@ RSpec.describe Asciidoctor::ISO do
36
36
  #{TERM_BOILERPLATE}
37
37
  <term id="term-t90">
38
38
  <preferred>
39
+ <letter-symbol><name>
39
40
  <stem type="MathML">
40
41
  <math xmlns="http://www.w3.org/1998/Math/MathML">
41
42
  <msub>
@@ -47,8 +48,10 @@ RSpec.describe Asciidoctor::ISO do
47
48
  </msub>
48
49
  </math>
49
50
  </stem>
51
+ </name></letter-symbol>
50
52
  </preferred>
51
53
  <admitted>
54
+ <letter-symbol><name>
52
55
  <stem type="MathML">
53
56
  <math xmlns="http://www.w3.org/1998/Math/MathML">
54
57
  <msub>
@@ -61,10 +64,11 @@ RSpec.describe Asciidoctor::ISO do
61
64
  </msub>
62
65
  </math>
63
66
  </stem>
67
+ </name></letter-symbol>
64
68
  </admitted>
65
- <definition>
69
+ <definition><verbaldefinition>
66
70
  <p id="_">Time</p>
67
- </definition>
71
+ </verbaldefinition></definition>
68
72
  </term>
69
73
  </terms>
70
74
  </sections>
@@ -90,10 +94,10 @@ RSpec.describe Asciidoctor::ISO do
90
94
  <title>Terms and definitions</title>#{TERM_BOILERPLATE}
91
95
 
92
96
  <term id="term-tempus">
93
- <preferred>Tempus</preferred>
97
+ <preferred><expression><name>Tempus</name></expression></preferred>
94
98
  <domain>relativity</domain>
95
- <definition>
96
- <p id="_">Time</p></definition>
99
+ <definition><verbaldefinition>
100
+ <p id="_">Time</p></verbaldefinition></definition>
97
101
  </term>
98
102
  </terms>
99
103
  </sections>
@@ -132,6 +136,7 @@ RSpec.describe Asciidoctor::ISO do
132
136
  #{TERM_BOILERPLATE}
133
137
  <term id="term-t90">
134
138
  <preferred>
139
+ <letter-symbol><name>
135
140
  <stem type="MathML">
136
141
  <math xmlns="http://www.w3.org/1998/Math/MathML">
137
142
  <msub>
@@ -143,8 +148,11 @@ RSpec.describe Asciidoctor::ISO do
143
148
  </msub>
144
149
  </math>
145
150
  </stem>
151
+ </name></letter-symbol>
146
152
  </preferred>
147
153
  <definition>
154
+ <verbaldefinition><p id="_">This paragraph is extraneous</p></verbaldefinition>
155
+ <nonverbalrepresentation>
148
156
  <formula id="_">
149
157
  <stem type="MathML">
150
158
  <math xmlns="http://www.w3.org/1998/Math/MathML">
@@ -159,8 +167,7 @@ RSpec.describe Asciidoctor::ISO do
159
167
  </math>
160
168
  </stem>
161
169
  </formula>
162
- <p id="_">This paragraph is extraneous</p>
163
- </definition>
170
+ </nonverbalrepresentation></definition>
164
171
  </term>
165
172
  </terms>
166
173
  </sections>
@@ -195,10 +202,10 @@ RSpec.describe Asciidoctor::ISO do
195
202
  <p id="_">So am I</p></li>
196
203
  </ul>
197
204
  <term id="term-time">
198
- <preferred>Time</preferred>
199
- <definition>
205
+ <preferred><expression><name>Time</name></expression></preferred>
206
+ <definition><verbaldefinition>
200
207
  <p id="_">This paragraph is extraneous</p>
201
- </definition>
208
+ </verbaldefinition></definition>
202
209
  </term>
203
210
  </terms>
204
211
  </sections>
@@ -433,6 +440,8 @@ RSpec.describe Asciidoctor::ISO do
433
440
 
434
441
  === Term1
435
442
 
443
+ Definition
444
+
436
445
  [.source]
437
446
  <<ISO2191,section=1>>
438
447
  INPUT
@@ -443,8 +452,13 @@ RSpec.describe Asciidoctor::ISO do
443
452
  <title>Terms and definitions</title>
444
453
  #{TERM_BOILERPLATE}
445
454
  <term id="term-term1">
446
- <preferred>Term1</preferred>
447
- <termsource status="identical">
455
+ <preferred><expression><name>Term1</name></expression></preferred>
456
+ <definition>
457
+ <verbaldefinition>
458
+ <p id='_'>Definition</p>
459
+ </verbaldefinition>
460
+ </definition>
461
+ <termsource status='identical' type='authoritative'>
448
462
  <origin bibitemid="ISO2191" citeas="" type="inline">
449
463
  <localityStack>
450
464
  <locality type="section">
@@ -1241,7 +1255,7 @@ RSpec.describe Asciidoctor::ISO do
1241
1255
  </li>
1242
1256
  </ul>
1243
1257
  <term id='term-term1'>
1244
- <preferred>Term1</preferred>
1258
+ <preferred><expression><name>Term1</name></expression></preferred>
1245
1259
  </term>
1246
1260
  </terms>
1247
1261
  </sections>
@@ -1292,13 +1306,13 @@ RSpec.describe Asciidoctor::ISO do
1292
1306
  <terms id='_' obligation='normative'>
1293
1307
  <title>Normal Terms</title>
1294
1308
  <term id='term-term1'>
1295
- <preferred>Term1</preferred>
1309
+ <preferred><expression><name>Term1</name></expression></preferred>
1296
1310
  </term>
1297
1311
  </terms>
1298
1312
  <terms id='_' obligation='normative'>
1299
1313
  <title>Abnormal terms</title>
1300
1314
  <term id='term-term-2'>
1301
- <preferred>Term 2</preferred>
1315
+ <preferred><expression><name>Term 2</name></expression></preferred>
1302
1316
  </term>
1303
1317
  </terms>
1304
1318
  </clause>
@@ -1356,13 +1370,13 @@ RSpec.describe Asciidoctor::ISO do
1356
1370
  <terms id='_' obligation='normative'>
1357
1371
  <title>Normal Terms</title>
1358
1372
  <term id='term-term1'>
1359
- <preferred>Term1</preferred>
1373
+ <preferred><expression><name>Term1</name></expression></preferred>
1360
1374
  </term>
1361
1375
  </terms>
1362
1376
  <terms id='_' obligation='normative'>
1363
1377
  <title>Abnormal terms</title>
1364
1378
  <term id='term-term-2'>
1365
- <preferred>Term 2</preferred>
1379
+ <preferred><expression><name>Term 2</name></expression></preferred>
1366
1380
  </term>
1367
1381
  </terms>
1368
1382
  </clause>
@@ -1421,13 +1435,13 @@ RSpec.describe Asciidoctor::ISO do
1421
1435
  </li>
1422
1436
  </ul>
1423
1437
  <term id='term-term1'>
1424
- <preferred>Term1</preferred>
1438
+ <preferred><expression><name>Term1</name></expression></preferred>
1425
1439
  </term>
1426
1440
  </terms>
1427
1441
  <terms id='_' obligation='normative'>
1428
1442
  <title>Other Terms</title>
1429
1443
  <term id='term-term-2'>
1430
- <preferred>Term 2</preferred>
1444
+ <preferred><expression><name>Term 2</name></expression></preferred>
1431
1445
  </term>
1432
1446
  </terms>
1433
1447
  <definitions id='_' obligation='normative'>
@@ -1479,7 +1493,7 @@ RSpec.describe Asciidoctor::ISO do
1479
1493
  </li>
1480
1494
  </ul>
1481
1495
  <term id='term-term1'>
1482
- <preferred>Term1</preferred>
1496
+ <preferred><expression><name>Term1</name></expression></preferred>
1483
1497
  </term>
1484
1498
  </terms>
1485
1499
  </sections>
@@ -56,8 +56,16 @@ RSpec.describe Asciidoctor::ISO do
56
56
  </msub>
57
57
  </math>
58
58
  </stem>
59
- <admitted>alt</admitted>
60
- <deprecates>deprecated</deprecates>
59
+ <admitted>
60
+ <expression>
61
+ <name>alt</name>
62
+ </expression>
63
+ </admitted>
64
+ <deprecates>
65
+ <expression>
66
+ <name>deprecated</name>
67
+ </expression>
68
+ </deprecates>
61
69
  <domain>domain</domain>
62
70
  <strike>strike</strike>
63
71
  <smallcap>smallcap</smallcap>
@@ -5,7 +5,7 @@ require "relaton_ietf"
5
5
  RSpec.describe Asciidoctor::ISO do
6
6
  it "processes draft ISO reference" do
7
7
  mock_fdis
8
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
8
+ input = <<~INPUT
9
9
  #{ISOBIB_BLANK_HDR}
10
10
  == Clause
11
11
  <<iso123>>
@@ -20,6 +20,7 @@ RSpec.describe Asciidoctor::ISO do
20
20
  * [[[iso123,ISO 123:--]]] footnote:[The standard is in press] _Standard_
21
21
  * [[[fdis,ISO/FDIS 17664-1]]] Title
22
22
  INPUT
23
+ output = <<~OUTPUT
23
24
  #{BLANK_HDR}
24
25
  <sections>
25
26
  <clause id="_" inline-header="false" obligation="normative">
@@ -169,10 +170,12 @@ RSpec.describe Asciidoctor::ISO do
169
170
  </bibliography>
170
171
  </iso-standard>
171
172
  OUTPUT
173
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
174
+ .to be_equivalent_to xmlpp(output)
172
175
  end
173
176
 
174
177
  it "processes all-parts ISO reference" do
175
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
178
+ input = <<~INPUT
176
179
  #{ASCIIDOC_BLANK_HDR}
177
180
 
178
181
  == Clause
@@ -184,6 +187,7 @@ RSpec.describe Asciidoctor::ISO do
184
187
 
185
188
  * [[[iso123,ISO 123:1066 (all parts)]]] _Standard_
186
189
  INPUT
190
+ output = <<~OUTPUT
187
191
  #{BLANK_HDR}
188
192
  <sections>
189
193
  <clause id="_" inline-header="false" obligation="normative">
@@ -219,16 +223,19 @@ RSpec.describe Asciidoctor::ISO do
219
223
  </bibliography>
220
224
  </iso-standard>
221
225
  OUTPUT
226
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
227
+ .to be_equivalent_to xmlpp(output)
222
228
  end
223
229
 
224
230
  it "processes non-ISO reference in Normative References" do
225
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
231
+ input = <<~INPUT
226
232
  #{ASCIIDOC_BLANK_HDR}
227
233
  [bibliography]
228
234
  == Normative References
229
235
 
230
236
  * [[[iso123,XYZ 123:1066 (all parts)]]] _Standard_
231
237
  INPUT
238
+ output = <<~OUTPUT
232
239
  #{BLANK_HDR}
233
240
  <sections>
234
241
 
@@ -248,16 +255,19 @@ RSpec.describe Asciidoctor::ISO do
248
255
  </bibliography>
249
256
  </iso-standard>
250
257
  OUTPUT
258
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
259
+ .to be_equivalent_to xmlpp(output)
251
260
  end
252
261
 
253
262
  it "processes non-ISO reference in Bibliography" do
254
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
263
+ input = <<~INPUT
255
264
  #{ASCIIDOC_BLANK_HDR}
256
265
  [bibliography]
257
266
  == Bibliography
258
267
 
259
268
  * [[[iso123,1]]] _Standard_
260
269
  INPUT
270
+ output = <<~OUTPUT
261
271
  #{BLANK_HDR}
262
272
  <sections>
263
273
 
@@ -275,6 +285,79 @@ RSpec.describe Asciidoctor::ISO do
275
285
  </bibliography>
276
286
  </iso-standard>
277
287
  OUTPUT
288
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
289
+ .to be_equivalent_to xmlpp(output)
290
+ end
291
+
292
+ it "sort ISO references in Bibliography" do
293
+ VCR.use_cassette "sortrefs" do
294
+ input = <<~INPUT
295
+ #{ASCIIDOC_BLANK_HDR}
296
+ [bibliography]
297
+ == Bibliography
298
+
299
+ * [[[iso1,ISO 8000-110]]]
300
+ * [[[iso2,ISO 8000-61]]]
301
+ * [[[iso3,ISO 8000-8]]]
302
+ * [[[iso4,ISO 9]]]
303
+ INPUT
304
+ output = <<~OUTPUT
305
+ #{BLANK_HDR}
306
+ <sections> </sections>
307
+ <bibliography>
308
+ <references id='_' normative='false' obligation='informative'>
309
+ <title>Bibliography</title>
310
+ <bibitem id='iso4' type='standard'>
311
+ <docidentifier>ISO 9</docidentifier>
312
+ <docnumber>9</docnumber>
313
+ <contributor>
314
+ <role type='publisher'/>
315
+ <organization>
316
+ <name>International Organization for Standardization</name>
317
+ <abbreviation>ISO</abbreviation>
318
+ </organization>
319
+ </contributor>
320
+ </bibitem>
321
+ <bibitem id='iso3' type='standard'>
322
+ <docidentifier>ISO 8000-8</docidentifier>
323
+ <docnumber>8000-8</docnumber>
324
+ <contributor>
325
+ <role type='publisher'/>
326
+ <organization>
327
+ <name>International Organization for Standardization</name>
328
+ <abbreviation>ISO</abbreviation>
329
+ </organization>
330
+ </contributor>
331
+ </bibitem>
332
+ <bibitem id='iso2' type='standard'>
333
+ <docidentifier>ISO 8000-61</docidentifier>
334
+ <docnumber>8000-61</docnumber>
335
+ <contributor>
336
+ <role type='publisher'/>
337
+ <organization>
338
+ <name>International Organization for Standardization</name>
339
+ <abbreviation>ISO</abbreviation>
340
+ </organization>
341
+ </contributor>
342
+ </bibitem>
343
+ <bibitem id='iso1' type='standard'>
344
+ <docidentifier>ISO 8000-110</docidentifier>
345
+ <docnumber>8000-110</docnumber>
346
+ <contributor>
347
+ <role type='publisher'/>
348
+ <organization>
349
+ <name>International Organization for Standardization</name>
350
+ <abbreviation>ISO</abbreviation>
351
+ </organization>
352
+ </contributor>
353
+ </bibitem>
354
+ </references>
355
+ </bibliography>
356
+ </iso-standard>
357
+ OUTPUT
358
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
359
+ .to be_equivalent_to xmlpp(output)
360
+ end
278
361
  end
279
362
 
280
363
  private
@@ -95,7 +95,7 @@ RSpec.describe Asciidoctor::ISO do
95
95
  </li>
96
96
  </ul>
97
97
  <term id="term-term1">
98
- <preferred>Term1</preferred>
98
+ <preferred><expression><name>Term1</name></expression></preferred>
99
99
  </term>
100
100
  </terms>
101
101
  <clause id="_" obligation="normative">
@@ -103,7 +103,7 @@ RSpec.describe Asciidoctor::ISO do
103
103
  <terms id="_" obligation="normative">
104
104
  <title>Normal Terms</title>
105
105
  <term id="term-term2">
106
- <preferred>Term2</preferred>
106
+ <preferred><expression><name>Term2</name></expression></preferred>
107
107
  </term>
108
108
  </terms>
109
109
  <definitions id="_" obligation="normative">
@@ -292,7 +292,7 @@ RSpec.describe Asciidoctor::ISO do
292
292
  </li>
293
293
  </ul>
294
294
  <term id="term-term1">
295
- <preferred>Term1</preferred>
295
+ <preferred><expression><name>Term1</name></expression></preferred>
296
296
  </term>
297
297
  </terms>
298
298
  </sections>
@@ -30,7 +30,7 @@ RSpec.describe IsoDoc do
30
30
  <terms id="I" obligation="normative">
31
31
  <title>Normal Terms</title>
32
32
  <term id="J">
33
- <preferred>Term2</preferred>
33
+ <preferred><expression><name>Term2</name></expression></preferred>
34
34
  </term>
35
35
  </terms>
36
36
  <definitions id="K">
@@ -249,13 +249,18 @@ RSpec.describe IsoDoc do
249
249
  </body>
250
250
  </html>
251
251
  OUTPUT
252
- expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
253
- .sub(%r{<localized-strings>.*</localized-strings>}m, "")).to be_equivalent_to xmlpp(presxml)
254
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
252
+ expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({})
253
+ .convert("test", input, true))
254
+ .sub(%r{<localized-strings>.*</localized-strings>}m, ""))
255
+ .to be_equivalent_to xmlpp(presxml)
256
+ expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({})
257
+ .convert("test", presxml, true)))
258
+ .to be_equivalent_to xmlpp(html)
255
259
  end
256
260
 
257
261
  it "defaults to English" do
258
- output = IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true)
262
+ output = IsoDoc::Iso::PresentationXMLConvert.new({})
263
+ .convert("test", <<~"INPUT", true)
259
264
  <iso-standard xmlns="http://riboseinc.com/isoxml">
260
265
  <bibdata>
261
266
  <language>tlh</language>
@@ -283,7 +288,7 @@ RSpec.describe IsoDoc do
283
288
  <terms id="I" obligation="normative">
284
289
  <title>Normal Terms</title>
285
290
  <term id="J">
286
- <preferred>Term2</preferred>
291
+ <preferred><expression><name>Term2</name></expression></preferred>
287
292
  </term>
288
293
  </terms>
289
294
  <definitions id="K">
@@ -334,7 +339,8 @@ RSpec.describe IsoDoc do
334
339
  </bibliography>
335
340
  </iso-standard>
336
341
  INPUT
337
- expect(xmlpp(output).sub(%r{<localized-strings>.*</localized-strings>}m, ""))
342
+ expect(xmlpp(output)
343
+ .sub(%r{<localized-strings>.*</localized-strings>}m, ""))
338
344
  .to be_equivalent_to xmlpp(<<~"OUTPUT")
339
345
  <iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
340
346
  <bibdata>
@@ -457,7 +463,7 @@ RSpec.describe IsoDoc do
457
463
  <terms id="I" obligation="normative">
458
464
  <title>Normal Terms</title>
459
465
  <term id="J">
460
- <preferred>Term2</preferred>
466
+ <preferred><expression><name>Term2</name></expression></preferred>
461
467
  </term>
462
468
  </terms>
463
469
  <definitions id="K">
@@ -686,9 +692,13 @@ RSpec.describe IsoDoc do
686
692
  </body>
687
693
  </html>
688
694
  OUTPUT
689
- expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
690
- .sub(%r{<localized-strings>.*</localized-strings>}m, "")).to be_equivalent_to xmlpp(presxml)
691
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
695
+ expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({})
696
+ .convert("test", input, true))
697
+ .sub(%r{<localized-strings>.*</localized-strings>}m, ""))
698
+ .to be_equivalent_to xmlpp(presxml)
699
+ expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({})
700
+ .convert("test", presxml, true)))
701
+ .to be_equivalent_to xmlpp(html)
692
702
  end
693
703
 
694
704
  it "processes Simplified Chinese" do
@@ -728,7 +738,7 @@ RSpec.describe IsoDoc do
728
738
  <terms id="I" obligation="normative">
729
739
  <title>Normal Terms</title>
730
740
  <term id="J">
731
- <preferred>Term2</preferred>
741
+ <preferred><expression><name>Term2</name></expression></preferred>
732
742
  </term>
733
743
  </terms>
734
744
  <definitions id="K">
@@ -989,8 +999,12 @@ RSpec.describe IsoDoc do
989
999
  </body>
990
1000
  </html>
991
1001
  OUTPUT
992
- expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true))
993
- .sub(%r{<localized-strings>.*</localized-strings>}m, "")).to be_equivalent_to xmlpp(presxml)
994
- expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true))).to be_equivalent_to xmlpp(html)
1002
+ expect(xmlpp(IsoDoc::Iso::PresentationXMLConvert.new({})
1003
+ .convert("test", input, true))
1004
+ .sub(%r{<localized-strings>.*</localized-strings>}m, ""))
1005
+ .to be_equivalent_to xmlpp(presxml)
1006
+ expect(xmlpp(IsoDoc::Iso::HtmlConvert.new({})
1007
+ .convert("test", presxml, true)))
1008
+ .to be_equivalent_to xmlpp(html)
995
1009
  end
996
1010
  end