metanorma-iso 1.8.1 → 1.8.2

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.
@@ -2,20 +2,23 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe Asciidoctor::ISO do
4
4
  it "removes empty text elements" do
5
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
5
+ input = <<~INPUT
6
6
  #{ASCIIDOC_BLANK_HDR}
7
7
  == {blank}
8
8
  INPUT
9
+ output = <<~OUTPUT
9
10
  #{BLANK_HDR}
10
11
  <sections>
11
12
  <clause id="_" inline-header="false" obligation="normative"/>
12
13
  </sections>
13
14
  </iso-standard>
14
15
  OUTPUT
16
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
17
+ .to be_equivalent_to xmlpp(output)
15
18
  end
16
19
 
17
20
  it "processes stem-only terms as admitted" do
18
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
21
+ input = <<~INPUT
19
22
  #{ASCIIDOC_BLANK_HDR}
20
23
  == Terms and Definitions
21
24
 
@@ -25,6 +28,7 @@ RSpec.describe Asciidoctor::ISO do
25
28
 
26
29
  Time
27
30
  INPUT
31
+ output = <<~OUTPUT
28
32
  #{BLANK_HDR}
29
33
  <sections>
30
34
  <terms id="_" obligation="normative">
@@ -66,10 +70,12 @@ RSpec.describe Asciidoctor::ISO do
66
70
  </sections>
67
71
  </iso-standard>
68
72
  OUTPUT
73
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
74
+ .to be_equivalent_to xmlpp(output)
69
75
  end
70
76
 
71
77
  it "moves term domains out of the term definition paragraph" do
72
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
78
+ input = <<~INPUT
73
79
  #{ASCIIDOC_BLANK_HDR}
74
80
  == Terms and Definitions
75
81
 
@@ -77,6 +83,7 @@ RSpec.describe Asciidoctor::ISO do
77
83
 
78
84
  domain:[relativity] Time
79
85
  INPUT
86
+ output = <<~OUTPUT
80
87
  #{BLANK_HDR}
81
88
  <sections>
82
89
  <terms id="_" obligation="normative">
@@ -92,10 +99,12 @@ RSpec.describe Asciidoctor::ISO do
92
99
  </sections>
93
100
  </iso-standard>
94
101
  OUTPUT
102
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
103
+ .to be_equivalent_to xmlpp(output)
95
104
  end
96
105
 
97
106
  it "permits multiple blocks in term definition paragraph" do
98
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
107
+ input = <<~INPUT
99
108
  = Document title
100
109
  Author
101
110
  :docfile: test.adoc
@@ -115,6 +124,7 @@ RSpec.describe Asciidoctor::ISO do
115
124
 
116
125
  This paragraph is extraneous
117
126
  INPUT
127
+ output = <<~OUTPUT
118
128
  #{BLANK_HDR}
119
129
  <sections>
120
130
  <terms id="_" obligation="normative">
@@ -156,10 +166,12 @@ RSpec.describe Asciidoctor::ISO do
156
166
  </sections>
157
167
  </iso-standard>
158
168
  OUTPUT
169
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
170
+ .to be_equivalent_to xmlpp(output)
159
171
  end
160
172
 
161
173
  it "keeps any initial boilerplate from terms and definitions" do
162
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
174
+ input = <<~INPUT
163
175
  #{ASCIIDOC_BLANK_HDR}
164
176
  == Terms and Definitions
165
177
 
@@ -171,6 +183,7 @@ RSpec.describe Asciidoctor::ISO do
171
183
 
172
184
  This paragraph is extraneous
173
185
  INPUT
186
+ output = <<~OUTPUT
174
187
  #{BLANK_HDR}
175
188
  <sections>
176
189
  <terms id="_" obligation="normative">
@@ -191,10 +204,12 @@ RSpec.describe Asciidoctor::ISO do
191
204
  </sections>
192
205
  </iso-standard>
193
206
  OUTPUT
207
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
208
+ .to be_equivalent_to xmlpp(output)
194
209
  end
195
210
 
196
211
  it "moves notes inside preceding blocks, if they are not at clause end, and the blocks are not delimited" do
197
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
212
+ input = <<~INPUT
198
213
  #{ASCIIDOC_BLANK_HDR}
199
214
  [stem]
200
215
  ++++
@@ -206,6 +221,7 @@ RSpec.describe Asciidoctor::ISO do
206
221
 
207
222
  Indeed.
208
223
  INPUT
224
+ output = <<~OUTPUT
209
225
  #{BLANK_HDR}
210
226
  <sections>
211
227
  <formula id="_">
@@ -229,10 +245,12 @@ RSpec.describe Asciidoctor::ISO do
229
245
  </sections>
230
246
  </iso-standard>
231
247
  OUTPUT
248
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
249
+ .to be_equivalent_to xmlpp(output)
232
250
  end
233
251
 
234
252
  it "does not move notes inside preceding blocks, if they are at clause end" do
235
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
253
+ input = <<~INPUT
236
254
  #{ASCIIDOC_BLANK_HDR}
237
255
  [source,ruby]
238
256
  [1...x].each do |y|
@@ -241,6 +259,7 @@ RSpec.describe Asciidoctor::ISO do
241
259
 
242
260
  NOTE: That loop does not do much
243
261
  INPUT
262
+ output = <<~OUTPUT
244
263
  #{BLANK_HDR}
245
264
  <sections>
246
265
  <sourcecode id="_" lang="ruby">[1...x].each do |y|
@@ -252,10 +271,12 @@ RSpec.describe Asciidoctor::ISO do
252
271
  </sections>
253
272
  </iso-standard>
254
273
  OUTPUT
274
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
275
+ .to be_equivalent_to xmlpp(output)
255
276
  end
256
277
 
257
278
  it "converts xrefs to references into erefs" do
258
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
279
+ input = <<~INPUT
259
280
  #{ASCIIDOC_BLANK_HDR}
260
281
  <<iso216>>
261
282
 
@@ -263,6 +284,7 @@ RSpec.describe Asciidoctor::ISO do
263
284
  == Normative References
264
285
  * [[[iso216,ISO 216:2001]]], _Reference_
265
286
  INPUT
287
+ output = <<~OUTPUT
266
288
  #{BLANK_HDR}
267
289
  <preface>
268
290
  <foreword id="_" obligation="informative">
@@ -297,10 +319,12 @@ RSpec.describe Asciidoctor::ISO do
297
319
  </bibliography>
298
320
  </iso-standard>
299
321
  OUTPUT
322
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
323
+ .to be_equivalent_to xmlpp(output)
300
324
  end
301
325
 
302
326
  it "extracts localities from erefs" do
303
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
327
+ input = <<~INPUT
304
328
  #{ASCIIDOC_BLANK_HDR}
305
329
  <<iso216,whole,clause=3,example=9-11,locality:prelude=33,locality:entirety:the reference>>
306
330
 
@@ -308,6 +332,7 @@ RSpec.describe Asciidoctor::ISO do
308
332
  == Normative References
309
333
  * [[[iso216,ISO 216]]], _Reference_
310
334
  INPUT
335
+ output = <<~OUTPUT
311
336
  #{BLANK_HDR}
312
337
  <preface>
313
338
  <foreword id="_" obligation="informative">
@@ -353,10 +378,12 @@ RSpec.describe Asciidoctor::ISO do
353
378
  </bibliography>
354
379
  </iso-standard>
355
380
  OUTPUT
381
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
382
+ .to be_equivalent_to xmlpp(output)
356
383
  end
357
384
 
358
385
  it "strips type from xrefs" do
359
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
386
+ input = <<~INPUT
360
387
  #{ASCIIDOC_BLANK_HDR}
361
388
  <<iso216>>
362
389
 
@@ -364,6 +391,7 @@ RSpec.describe Asciidoctor::ISO do
364
391
  == Clause
365
392
  * [[[iso216,ISO 216]]], _Reference_
366
393
  INPUT
394
+ output = <<~OUTPUT
367
395
  #{BLANK_HDR}
368
396
  <preface>
369
397
  <foreword id="_" obligation="informative">
@@ -394,10 +422,12 @@ RSpec.describe Asciidoctor::ISO do
394
422
  </bibliography>
395
423
  </iso-standard>
396
424
  OUTPUT
425
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
426
+ .to be_equivalent_to xmlpp(output)
397
427
  end
398
428
 
399
429
  it "processes localities in term sources" do
400
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
430
+ input = <<~INPUT
401
431
  #{ASCIIDOC_BLANK_HDR}
402
432
  == Terms and Definitions
403
433
 
@@ -406,6 +436,7 @@ RSpec.describe Asciidoctor::ISO do
406
436
  [.source]
407
437
  <<ISO2191,section=1>>
408
438
  INPUT
439
+ output = <<~OUTPUT
409
440
  #{BLANK_HDR}
410
441
  <sections>
411
442
  <terms id="_" obligation="normative">
@@ -426,10 +457,12 @@ RSpec.describe Asciidoctor::ISO do
426
457
  </sections>
427
458
  </iso-standard>
428
459
  OUTPUT
460
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
461
+ .to be_equivalent_to xmlpp(output)
429
462
  end
430
463
 
431
464
  it "removes extraneous material from Normative References" do
432
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
465
+ input = <<~INPUT
433
466
  #{ASCIIDOC_BLANK_HDR}
434
467
  [bibliography]
435
468
  == Normative References
@@ -438,6 +471,7 @@ RSpec.describe Asciidoctor::ISO do
438
471
 
439
472
  * [[[iso216,ISO 216]]], _Reference_
440
473
  INPUT
474
+ output = <<~OUTPUT
441
475
  #{BLANK_HDR}
442
476
  <sections></sections>
443
477
  <bibliography>
@@ -460,29 +494,35 @@ RSpec.describe Asciidoctor::ISO do
460
494
  </bibliography>
461
495
  </iso-standard>
462
496
  OUTPUT
497
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
498
+ .to be_equivalent_to xmlpp(output)
463
499
  end
464
500
 
465
501
  it "inserts IDs into paragraphs" do
466
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
502
+ input = <<~INPUT
467
503
  #{ASCIIDOC_BLANK_HDR}
468
504
  Paragraph
469
505
  INPUT
506
+ output = <<~OUTPUT
470
507
  #{BLANK_HDR}
471
508
  <sections>
472
509
  <p id="_">Paragraph</p>
473
510
  </sections>
474
511
  </iso-standard>
475
512
  OUTPUT
513
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
514
+ .to be_equivalent_to xmlpp(output)
476
515
  end
477
516
 
478
517
  it "inserts IDs into notes" do
479
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
518
+ input = <<~INPUT
480
519
  #{ASCIIDOC_BLANK_HDR}
481
520
  [example]
482
521
  ====
483
522
  NOTE: This note has no ID
484
523
  ====
485
524
  INPUT
525
+ output = <<~OUTPUT
486
526
  #{BLANK_HDR}
487
527
  <sections>
488
528
  <example id="_">
@@ -493,10 +533,12 @@ RSpec.describe Asciidoctor::ISO do
493
533
  </sections>
494
534
  </iso-standard>
495
535
  OUTPUT
536
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
537
+ .to be_equivalent_to xmlpp(output)
496
538
  end
497
539
 
498
540
  it "moves table key inside table" do
499
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
541
+ input = <<~INPUT
500
542
  #{ASCIIDOC_BLANK_HDR}
501
543
  |===
502
544
  |a |b |c
@@ -506,6 +548,7 @@ RSpec.describe Asciidoctor::ISO do
506
548
 
507
549
  a:: b
508
550
  INPUT
551
+ output = <<~OUTPUT
509
552
  #{BLANK_HDR}
510
553
  <sections>
511
554
  <table id="_">
@@ -526,10 +569,12 @@ RSpec.describe Asciidoctor::ISO do
526
569
  </sections>
527
570
  </iso-standard>
528
571
  OUTPUT
572
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
573
+ .to be_equivalent_to xmlpp(output)
529
574
  end
530
575
 
531
576
  it "processes headerrows attribute for table without header rows" do
532
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
577
+ input = <<~INPUT
533
578
  #{ASCIIDOC_BLANK_HDR}
534
579
  [headerrows=3]
535
580
  |===
@@ -539,6 +584,7 @@ RSpec.describe Asciidoctor::ISO do
539
584
  |a |b |c
540
585
  |===
541
586
  INPUT
587
+ output = <<~OUTPUT
542
588
  #{BLANK_HDR}
543
589
  <sections>
544
590
  <table id="_">
@@ -570,10 +616,12 @@ RSpec.describe Asciidoctor::ISO do
570
616
  </sections>
571
617
  </iso-standard>
572
618
  OUTPUT
619
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
620
+ .to be_equivalent_to xmlpp(output)
573
621
  end
574
622
 
575
623
  it "processes headerrows attribute for table with header rows" do
576
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
624
+ input = <<~INPUT
577
625
  #{ASCIIDOC_BLANK_HDR}
578
626
  [headerrows=3]
579
627
  |===
@@ -584,6 +632,7 @@ RSpec.describe Asciidoctor::ISO do
584
632
  |a |b |c
585
633
  |===
586
634
  INPUT
635
+ output = <<~OUTPUT
587
636
  #{BLANK_HDR}
588
637
  <sections>
589
638
  <table id="_">
@@ -615,10 +664,12 @@ RSpec.describe Asciidoctor::ISO do
615
664
  </sections>
616
665
  </iso-standard>
617
666
  OUTPUT
667
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
668
+ .to be_equivalent_to xmlpp(output)
618
669
  end
619
670
 
620
671
  it "moves table notes inside table" do
621
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
672
+ input = <<~INPUT
622
673
  #{ASCIIDOC_BLANK_HDR}
623
674
  |===
624
675
  |a |b |c
@@ -628,6 +679,7 @@ RSpec.describe Asciidoctor::ISO do
628
679
 
629
680
  NOTE: Note 2
630
681
  INPUT
682
+ output = <<~OUTPUT
631
683
  #{BLANK_HDR}
632
684
  <sections>
633
685
  <table id="_">
@@ -648,10 +700,12 @@ RSpec.describe Asciidoctor::ISO do
648
700
  </sections>
649
701
  </iso-standard>
650
702
  OUTPUT
703
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
704
+ .to be_equivalent_to xmlpp(output)
651
705
  end
652
706
 
653
707
  it "moves formula key inside formula" do
654
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
708
+ input = <<~INPUT
655
709
  #{ASCIIDOC_BLANK_HDR}
656
710
  [stem]
657
711
  ++++
@@ -662,6 +716,7 @@ RSpec.describe Asciidoctor::ISO do
662
716
 
663
717
  a:: b
664
718
  INPUT
719
+ output = <<~OUTPUT
665
720
  #{BLANK_HDR}
666
721
  <sections>
667
722
  <formula id="_">
@@ -684,10 +739,12 @@ RSpec.describe Asciidoctor::ISO do
684
739
  </sections>
685
740
  </iso-standard>
686
741
  OUTPUT
742
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
743
+ .to be_equivalent_to xmlpp(output)
687
744
  end
688
745
 
689
746
  it "moves footnotes inside figures" do
690
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
747
+ input = <<~INPUT
691
748
  #{ASCIIDOC_BLANK_HDR}
692
749
  image::spec/examples/rice_images/rice_image1.png[]
693
750
 
@@ -695,6 +752,7 @@ RSpec.describe Asciidoctor::ISO do
695
752
 
696
753
  footnote:[This is another footnote to a figure]
697
754
  INPUT
755
+ output = <<~OUTPUT
698
756
  #{BLANK_HDR}
699
757
  <sections>
700
758
  <figure id="_">
@@ -709,10 +767,12 @@ RSpec.describe Asciidoctor::ISO do
709
767
  </sections>
710
768
  </iso-standard>
711
769
  OUTPUT
770
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
771
+ .to be_equivalent_to xmlpp(output)
712
772
  end
713
773
 
714
774
  it "moves figure key inside figure" do
715
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
775
+ input = <<~INPUT
716
776
  #{ASCIIDOC_BLANK_HDR}
717
777
  image::spec/examples/rice_images/rice_image1.png[]
718
778
 
@@ -720,6 +780,7 @@ RSpec.describe Asciidoctor::ISO do
720
780
 
721
781
  a:: b
722
782
  INPUT
783
+ output = <<~OUTPUT
723
784
  #{BLANK_HDR}
724
785
  <sections>
725
786
  <figure id="_">
@@ -734,10 +795,12 @@ RSpec.describe Asciidoctor::ISO do
734
795
  </sections>
735
796
  </iso-standard>
736
797
  OUTPUT
798
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
799
+ .to be_equivalent_to xmlpp(output)
737
800
  end
738
801
 
739
802
  it "numbers bibliographic notes and footnotes sequentially" do
740
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
803
+ input = <<~INPUT
741
804
  #{ASCIIDOC_BLANK_HDR}
742
805
  footnote:[Footnote]
743
806
 
@@ -749,6 +812,7 @@ RSpec.describe Asciidoctor::ISO do
749
812
  == Clause
750
813
  footnote:[Footnote2]
751
814
  INPUT
815
+ output = <<~OUTPUT
752
816
  #{BLANK_HDR}
753
817
  <preface>
754
818
  <foreword id="_" obligation="informative">
@@ -794,10 +858,12 @@ RSpec.describe Asciidoctor::ISO do
794
858
  </bibliography>
795
859
  </iso-standard>
796
860
  OUTPUT
861
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
862
+ .to be_equivalent_to xmlpp(output)
797
863
  end
798
864
 
799
865
  it "defaults section obligations" do
800
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
866
+ input = <<~INPUT
801
867
  #{ASCIIDOC_BLANK_HDR}
802
868
 
803
869
  == Clause
@@ -808,6 +874,7 @@ RSpec.describe Asciidoctor::ISO do
808
874
 
809
875
  Text
810
876
  INPUT
877
+ output = <<~OUTPUT
811
878
  #{BLANK_HDR}
812
879
  <sections>
813
880
  <clause id="_" inline-header="false" obligation="normative">
@@ -821,10 +888,12 @@ RSpec.describe Asciidoctor::ISO do
821
888
  </annex>
822
889
  </iso-standard>
823
890
  OUTPUT
891
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
892
+ .to be_equivalent_to xmlpp(output)
824
893
  end
825
894
 
826
895
  it "extends clause levels past 5" do
827
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
896
+ input = <<~INPUT
828
897
  #{ASCIIDOC_BLANK_HDR}
829
898
 
830
899
  == Clause1
@@ -852,6 +921,7 @@ RSpec.describe Asciidoctor::ISO do
852
921
  ====== Clause 5B
853
922
 
854
923
  INPUT
924
+ output = <<~OUTPUT
855
925
  #{BLANK_HDR}
856
926
  <sections>
857
927
  <clause id="_" inline-header="false" obligation="normative">
@@ -887,10 +957,12 @@ RSpec.describe Asciidoctor::ISO do
887
957
  </sections>
888
958
  </iso-standard>
889
959
  OUTPUT
960
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
961
+ .to be_equivalent_to xmlpp(output)
890
962
  end
891
963
 
892
964
  it "reorders references in bibliography, and renumbers citations accordingly" do
893
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
965
+ input = <<~INPUT
894
966
  #{ASCIIDOC_BLANK_HDR}
895
967
 
896
968
  == Clause 1
@@ -932,6 +1004,7 @@ RSpec.describe Asciidoctor::ISO do
932
1004
  * [[[ref16,(B)]]], _Standard 20_
933
1005
  * [[[ref17,(A)]]], _Standard 30_
934
1006
  INPUT
1007
+ output = <<~OUTPUT
935
1008
  #{BLANK_HDR}
936
1009
  <sections>
937
1010
  <clause id="_" inline-header="false" obligation="normative">
@@ -1130,5 +1203,290 @@ RSpec.describe Asciidoctor::ISO do
1130
1203
  </bibliography>
1131
1204
  </iso-standard>
1132
1205
  OUTPUT
1206
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1207
+ .to be_equivalent_to xmlpp(output)
1208
+ end
1209
+
1210
+ context "terms & definitions boilerplate" do
1211
+ it "places normal terms & definitions boilerplate in flat clause" do
1212
+ input = <<~INPUT
1213
+ #{ASCIIDOC_BLANK_HDR}
1214
+
1215
+ == Terms and definitions
1216
+
1217
+ === Term1
1218
+ INPUT
1219
+ output = <<~OUTPUT
1220
+ #{BLANK_HDR}
1221
+ <sections>
1222
+ <terms id='_' obligation='normative'>
1223
+ <title>Terms and definitions</title>
1224
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
1225
+ <p id='_'>
1226
+ ISO and IEC maintain terminological databases for use in standardization
1227
+ at the following addresses:
1228
+ </p>
1229
+ <ul id='_'>
1230
+ <li>
1231
+ <p id='_'>
1232
+ ISO Online browsing platform: available at
1233
+ <link target='http://www.iso.org/obp'/>
1234
+ </p>
1235
+ </li>
1236
+ <li>
1237
+ <p id='_'>
1238
+ IEC Electropedia: available at
1239
+ <link target='http://www.electropedia.org'/>
1240
+ </p>
1241
+ </li>
1242
+ </ul>
1243
+ <term id='term-term1'>
1244
+ <preferred>Term1</preferred>
1245
+ </term>
1246
+ </terms>
1247
+ </sections>
1248
+ </iso-standard>
1249
+ OUTPUT
1250
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1251
+ .to be_equivalent_to xmlpp(output)
1252
+ end
1253
+
1254
+ it "places normal terms & definitions boilerplate in multi-clause" do
1255
+ input = <<~INPUT
1256
+ #{ASCIIDOC_BLANK_HDR}
1257
+
1258
+ == Terms and definitions
1259
+
1260
+ === Normal Terms
1261
+
1262
+ ==== Term1
1263
+
1264
+ === Abnormal terms
1265
+
1266
+ ==== Term 2
1267
+ INPUT
1268
+ output = <<~OUTPUT
1269
+ #{BLANK_HDR}
1270
+ <sections>
1271
+ <clause id='_' obligation='normative'>
1272
+ <title>Terms and definitions</title>
1273
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
1274
+ <p id='_'>
1275
+ ISO and IEC maintain terminological databases for use in standardization
1276
+ at the following addresses:
1277
+ </p>
1278
+ <ul id='_'>
1279
+ <li>
1280
+ <p id='_'>
1281
+ ISO Online browsing platform: available at
1282
+ <link target='http://www.iso.org/obp'/>
1283
+ </p>
1284
+ </li>
1285
+ <li>
1286
+ <p id='_'>
1287
+ IEC Electropedia: available at
1288
+ <link target='http://www.electropedia.org'/>
1289
+ </p>
1290
+ </li>
1291
+ </ul>
1292
+ <terms id='_' obligation='normative'>
1293
+ <title>Normal Terms</title>
1294
+ <term id='term-term1'>
1295
+ <preferred>Term1</preferred>
1296
+ </term>
1297
+ </terms>
1298
+ <terms id='_' obligation='normative'>
1299
+ <title>Abnormal terms</title>
1300
+ <term id='term-term-2'>
1301
+ <preferred>Term 2</preferred>
1302
+ </term>
1303
+ </terms>
1304
+ </clause>
1305
+ </sections>
1306
+ </iso-standard>
1307
+ OUTPUT
1308
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1309
+ .to be_equivalent_to xmlpp(output)
1310
+ end
1311
+
1312
+ it "places normal terms & definitions boilerplate in single clause that excludes symbols" do
1313
+ input = <<~INPUT
1314
+ #{ASCIIDOC_BLANK_HDR}
1315
+
1316
+ == Terms, definitions, symbols and abbreviated terms
1317
+
1318
+ === Terms and definitions
1319
+
1320
+ ==== Normal Terms
1321
+
1322
+ ===== Term1
1323
+
1324
+ ==== Abnormal terms
1325
+
1326
+ ===== Term 2
1327
+
1328
+ === Symbols and abbreviated terms
1329
+ INPUT
1330
+ output = <<~OUTPUT
1331
+ #{BLANK_HDR}
1332
+ <sections>
1333
+ <clause id='_' obligation='normative'>
1334
+ <title>Terms, definitions, symbols and abbreviated terms</title>
1335
+ <clause id='_' obligation='normative'>
1336
+ <title>Terms and definitions</title>
1337
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
1338
+ <p id='_'>
1339
+ ISO and IEC maintain terminological databases for use in
1340
+ standardization at the following addresses:
1341
+ </p>
1342
+ <ul id='_'>
1343
+ <li>
1344
+ <p id='_'>
1345
+ ISO Online browsing platform: available at
1346
+ <link target='http://www.iso.org/obp'/>
1347
+ </p>
1348
+ </li>
1349
+ <li>
1350
+ <p id='_'>
1351
+ IEC Electropedia: available at
1352
+ <link target='http://www.electropedia.org'/>
1353
+ </p>
1354
+ </li>
1355
+ </ul>
1356
+ <terms id='_' obligation='normative'>
1357
+ <title>Normal Terms</title>
1358
+ <term id='term-term1'>
1359
+ <preferred>Term1</preferred>
1360
+ </term>
1361
+ </terms>
1362
+ <terms id='_' obligation='normative'>
1363
+ <title>Abnormal terms</title>
1364
+ <term id='term-term-2'>
1365
+ <preferred>Term 2</preferred>
1366
+ </term>
1367
+ </terms>
1368
+ </clause>
1369
+ <definitions id='_' obligation='normative'>
1370
+ <title>Symbols and abbreviated terms</title>
1371
+ </definitions>
1372
+ </clause>
1373
+ </sections>
1374
+ </iso-standard>
1375
+ OUTPUT
1376
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1377
+ .to be_equivalent_to xmlpp(output)
1378
+ end
1379
+
1380
+ it "places normal terms & definitions boilerplate in first of multiple clauses that excludes symbols" do
1381
+ input = <<~INPUT
1382
+ #{ASCIIDOC_BLANK_HDR}
1383
+
1384
+ == Terms, definitions, symbols and abbreviated terms
1385
+
1386
+ === Terms and definitions
1387
+
1388
+ ==== Term1
1389
+
1390
+ [heading=terms]
1391
+ === Other Terms
1392
+
1393
+ ==== Term 2
1394
+
1395
+ === Symbols and abbreviated terms
1396
+ INPUT
1397
+ output = <<~OUTPUT
1398
+ #{BLANK_HDR}
1399
+ <sections>
1400
+ <clause id='_' obligation='normative'>
1401
+ <title>Terms, definitions, symbols and abbreviated terms</title>
1402
+ <terms id='_' obligation='normative'>
1403
+ <title>Terms and definitions</title>
1404
+ <p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
1405
+ <p id='_'>
1406
+ ISO and IEC maintain terminological databases for use in
1407
+ standardization at the following addresses:
1408
+ </p>
1409
+ <ul id='_'>
1410
+ <li>
1411
+ <p id='_'>
1412
+ ISO Online browsing platform: available at
1413
+ <link target='http://www.iso.org/obp'/>
1414
+ </p>
1415
+ </li>
1416
+ <li>
1417
+ <p id='_'>
1418
+ IEC Electropedia: available at
1419
+ <link target='http://www.electropedia.org'/>
1420
+ </p>
1421
+ </li>
1422
+ </ul>
1423
+ <term id='term-term1'>
1424
+ <preferred>Term1</preferred>
1425
+ </term>
1426
+ </terms>
1427
+ <terms id='_' obligation='normative'>
1428
+ <title>Other Terms</title>
1429
+ <term id='term-term-2'>
1430
+ <preferred>Term 2</preferred>
1431
+ </term>
1432
+ </terms>
1433
+ <definitions id='_' obligation='normative'>
1434
+ <title>Symbols and abbreviated terms</title>
1435
+ </definitions>
1436
+ </clause>
1437
+ </sections>
1438
+ </iso-standard>
1439
+ OUTPUT
1440
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1441
+ .to be_equivalent_to xmlpp(output)
1442
+ end
1443
+
1444
+ it "modifies normal terms & definitions boilerplate in vocabulary document" do
1445
+ input = <<~INPUT
1446
+ = Document title
1447
+ Author
1448
+ :docfile: test.adoc
1449
+ :nodoc:
1450
+ :novalid:
1451
+ :no-isobib:
1452
+ :docsubtype: vocabulary
1453
+
1454
+ == Terms and definitions
1455
+
1456
+ === Term1
1457
+ INPUT
1458
+ output = <<~OUTPUT
1459
+ #{BLANK_HDR.sub(%r{</doctype>}, '</doctype><subdoctype>vocabulary</subdoctype>')}
1460
+ <sections>
1461
+ <terms id='_' obligation='normative'>
1462
+ <title>Terms and definitions</title>
1463
+ <p id='_'>
1464
+ ISO and IEC maintain terminological databases for use in standardization
1465
+ at the following addresses:
1466
+ </p>
1467
+ <ul id='_'>
1468
+ <li>
1469
+ <p id='_'>
1470
+ ISO Online browsing platform: available at
1471
+ <link target='http://www.iso.org/obp'/>
1472
+ </p>
1473
+ </li>
1474
+ <li>
1475
+ <p id='_'>
1476
+ IEC Electropedia: available at
1477
+ <link target='http://www.electropedia.org'/>
1478
+ </p>
1479
+ </li>
1480
+ </ul>
1481
+ <term id='term-term1'>
1482
+ <preferred>Term1</preferred>
1483
+ </term>
1484
+ </terms>
1485
+ </sections>
1486
+ </iso-standard>
1487
+ OUTPUT
1488
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1489
+ .to be_equivalent_to xmlpp(output)
1490
+ end
1133
1491
  end
1134
1492
  end