isodoc 1.7.2 → 1.7.5

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.
@@ -209,8 +209,7 @@ RSpec.describe IsoDoc do
209
209
  <renderterm>word</renderterm>
210
210
  <termref base='IEV' target='135-13-13'>The IEV database</termref>
211
211
  </concept></li>
212
- <li><concept><refterm>term</refterm>
213
- <renderterm>word</renderterm>
212
+ <li><concept>
214
213
  <strong>error!</strong>
215
214
  </concept>
216
215
  </li>
@@ -295,7 +294,7 @@ RSpec.describe IsoDoc do
295
294
  <li>
296
295
  <em>word</em> [<termref base="IEV" target="135-13-13">The IEV database</termref>]
297
296
  </li>
298
- <li> <em>word</em> <strong>error!</strong> </li>
297
+ <li> <strong>error!</strong> </li>
299
298
  </ul>
300
299
  </p>
301
300
  </foreword></preface>
@@ -380,7 +379,7 @@ RSpec.describe IsoDoc do
380
379
  <i>word</i>
381
380
  [The IEV database]
382
381
  </li>
383
- <li> <i>word</i> <b>error!</b> </li>
382
+ <li> <b>error!</b> </li>
384
383
  </ul>
385
384
  </p>
386
385
  </div>
@@ -418,31 +417,22 @@ RSpec.describe IsoDoc do
418
417
  <preface><foreword>
419
418
  <p>
420
419
  <ul>
421
- <li>
422
- <concept ital="true"><refterm>term</refterm>
423
- <renderterm>term</renderterm>
424
- <xref target='clause1'/>
425
- </concept></li>
426
- <li><concept ref="true"><refterm>term</refterm>
427
- <renderterm>term</renderterm>
428
- <xref target='clause1'/>
429
- </concept></li>
430
- <li><concept ital="true" ref="true"><refterm>term</refterm>
431
- <renderterm>term</renderterm>
432
- <xref target='clause1'/>
433
- </concept></li>
434
- <li><concept ital="false"><refterm>term</refterm>
435
- <renderterm>term</renderterm>
436
- <xref target='clause1'/>
437
- </concept></li>
438
- <li><concept ref="false"><refterm>term</refterm>
439
- <renderterm>term</renderterm>
440
- <xref target='clause1'/>
441
- </concept></li>
442
- <li><concept ital="false" ref="false"><refterm>term</refterm>
443
- <renderterm>term</renderterm>
444
- <xref target='clause1'/>
445
- </concept></li>
420
+ <li><concept ital="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
421
+ <li><concept ref="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
422
+ <li><concept ital="true" ref="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
423
+ <li><concept ital="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
424
+ <li><concept ref="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
425
+ <li><concept ital="false" ref="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
426
+ <li><concept ital="true" ref="true" linkmention="true" linkref="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
427
+ <li><concept ital="true" ref="true" linkmention="true" linkref="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
428
+ <li><concept ital="true" ref="true" linkmention="false" linkref="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
429
+ <li><concept ital="true" ref="true" linkmention="false" linkref="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
430
+ <li><concept ital="true" ref="true" linkmention="true" linkref="true"><strong>error!</strong></concept></li>
431
+ <li><concept ital="false" ref="false" linkmention="true">
432
+ <refterm>CV_DiscreteCoverage</refterm>
433
+ <renderterm>CV_DiscreteCoverage</renderterm>
434
+ <xref target="term-cv_discretecoverage"/>
435
+ </concept></li>
446
436
  </ul></p>
447
437
  </foreword></preface>
448
438
  <sections>
@@ -451,86 +441,99 @@ RSpec.describe IsoDoc do
451
441
  </iso-standard>
452
442
  INPUT
453
443
  presxml = <<~OUTPUT
454
- <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
455
- <preface><foreword displayorder="1">
456
- <p>
457
- <ul>
458
- <li>
459
-
460
- <em>term</em>
461
- [term defined in <xref target="clause1">Clause 1</xref>]
462
- </li>
463
- <li>
464
- <em>term</em>
465
- [term defined in <xref target="clause1">Clause 1</xref>]
466
- </li>
467
- <li>
468
- <em>term</em>
469
- [term defined in <xref target="clause1">Clause 1</xref>]
470
- </li>
471
- <li>
472
- term
473
- [term defined in <xref target="clause1">Clause 1</xref>]
474
- </li>
475
- <li>
476
- <em>term</em>
477
-
478
- </li>
479
- <li>
480
- term
481
-
482
- </li>
483
- </ul></p>
484
- </foreword></preface>
485
- <sections>
486
- <clause id="clause1" displayorder="2"><title depth="1">1.<tab/>Clause 1</title></clause>
487
- </sections>
488
- </iso-standard>
444
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
445
+ <preface><foreword displayorder="1">
446
+ <p>
447
+ <ul>
448
+ <li><em>term</em> [term defined in <xref target="clause1">Clause 1</xref>],</li>
449
+ <li><em>term</em> [term defined in <xref target="clause1">Clause 1</xref>],</li>
450
+ <li><em>term</em> [term defined in <xref target="clause1">Clause 1</xref>],</li>
451
+ <li>term [term defined in <xref target="clause1">Clause 1</xref>],</li>
452
+ <li><em>term</em>,</li>
453
+ <li>term,</li>
454
+ <li><xref target="clause1"><em>term</em></xref> [term defined in <xref target="clause1">Clause 1</xref>],</li>
455
+ <li><xref target="clause1"><em>term</em></xref> [term defined in Clause 1],</li>
456
+ <li><em>term</em> [term defined in <xref target="clause1">Clause 1</xref>],</li>
457
+ <li><em>term</em> [term defined in Clause 1],</li>
458
+ <li><strong>error!</strong></li>
459
+ <li><xref target='term-cv_discretecoverage'>CV_DiscreteCoverage</xref></li>
460
+ </ul></p>
461
+ </foreword></preface>
462
+ <sections>
463
+ <clause id="clause1" displayorder="2"><title depth="1">1.<tab/>Clause 1</title></clause>
464
+ </sections>
465
+ </iso-standard>
489
466
  OUTPUT
490
467
  output = <<~OUTPUT
491
- #{HTML_HDR}
492
- <br/>
493
- <div>
494
- <h1 class='ForewordTitle'>Foreword</h1>
495
- <p>
496
- <ul>
497
- <li>
498
- <i>term</i>
499
- [term defined in
500
- <a href='#clause1'>Clause 1</a>
501
- ]
502
- </li>
503
- <li>
504
- <i>term</i>
505
- [term defined in
506
- <a href='#clause1'>Clause 1</a>
507
- ]
508
- </li>
509
- <li>
510
- <i>term</i>
511
- [term defined in
512
- <a href='#clause1'>Clause 1</a>
513
- ]
514
- </li>
515
- <li>
516
- term [term defined in
517
- <a href='#clause1'>Clause 1</a>
518
- ]
519
- </li>
520
- <li>
521
- <i>term</i>
522
- </li>
523
- <li> term </li>
524
- </ul>
525
- </p>
526
- </div>
527
- <p class='zzSTDTitle1'/>
528
- <div id='clause1'>
529
- <h1>1.&#160; Clause 1</h1>
530
- </div>
531
- </div>
532
- </body>
533
- </html>
468
+ #{HTML_HDR}
469
+ <br/>
470
+ <div>
471
+ <h1 class='ForewordTitle'>Foreword</h1>
472
+ <p>
473
+ <ul>
474
+ <li>
475
+ <i>term</i>
476
+ [term defined in
477
+ <a href='#clause1'>Clause 1</a>
478
+ ],
479
+ </li>
480
+ <li>
481
+ <i>term</i>
482
+ [term defined in
483
+ <a href='#clause1'>Clause 1</a>
484
+ ],
485
+ </li>
486
+ <li>
487
+ <i>term</i>
488
+ [term defined in
489
+ <a href='#clause1'>Clause 1</a>
490
+ ],
491
+ </li>
492
+ <li>
493
+ term [term defined in
494
+ <a href='#clause1'>Clause 1</a>
495
+ ],
496
+ </li>
497
+ <li>
498
+ <i>term</i>,
499
+ </li>
500
+ <li>term,</li>
501
+ <li>
502
+ <a href='#clause1'>
503
+ <i>term</i>
504
+ </a>
505
+ [term defined in
506
+ <a href='#clause1'>Clause 1</a>
507
+ ],
508
+ </li>
509
+ <li>
510
+ <a href='#clause1'>
511
+ <i>term</i>
512
+ </a>
513
+ [term defined in Clause 1],
514
+ </li>
515
+ <li>
516
+ <i>term</i>
517
+ [term defined in
518
+ <a href='#clause1'>Clause 1</a>
519
+ ],
520
+ </li>
521
+ <li>
522
+ <i>term</i>
523
+ [term defined in Clause 1],
524
+ </li>
525
+ <li> <b>error!</b> </li>
526
+ <li> <a href='#term-cv_discretecoverage'>CV_DiscreteCoverage</a> </li>
527
+ </ul>
528
+ </p>
529
+ </div>
530
+ <p class='zzSTDTitle1'/>
531
+ <div id='clause1'>
532
+ <h1>1.&#160; Clause 1</h1>
533
+ </div>
534
+ </div>
535
+ </body>
536
+ </html>
534
537
  OUTPUT
535
538
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
536
539
  .convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
@@ -855,6 +858,102 @@ RSpec.describe IsoDoc do
855
858
  .convert("test", input, true))).to be_equivalent_to xmlpp(output)
856
859
  end
857
860
 
861
+ it "duplicates MathML with AsciiMath" do
862
+ input = <<~INPUT
863
+ <iso-standard xmlns="http://riboseinc.com/isoxml" xmlns:m='http://www.w3.org/1998/Math/MathML'>
864
+ <preface><foreword>
865
+ <p>
866
+ <stem type="MathML"><m:math>
867
+ <m:msup> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:mi>x</m:mi> <m:mo>+</m:mo> <m:mi>y</m:mi> </m:mrow> <m:mo>)</m:mo> </m:mrow> <m:mn>2</m:mn> </m:msup>
868
+ </m:math></stem>
869
+ </p>
870
+ </foreword></preface>
871
+ <sections>
872
+ </iso-standard>
873
+ INPUT
874
+ output = <<~OUTPUT
875
+ <iso-standard xmlns='http://riboseinc.com/isoxml' xmlns:m='http://www.w3.org/1998/Math/MathML' type='presentation'>
876
+ <preface>
877
+ <foreword displayorder='1'>
878
+ <p>
879
+ <stem type='MathML'>
880
+ <m:math>
881
+ <m:msup>
882
+ <m:mrow>
883
+ <m:mo>(</m:mo>
884
+ <m:mrow>
885
+ <m:mi>x</m:mi>
886
+ <m:mo>+</m:mo>
887
+ <m:mi>y</m:mi>
888
+ </m:mrow>
889
+ <m:mo>)</m:mo>
890
+ </m:mrow>
891
+ <m:mn>2</m:mn>
892
+ </m:msup>
893
+ </m:math>
894
+ <comment> ( x + y )^2 </comment>
895
+ </stem>
896
+ </p>
897
+ </foreword>
898
+ </preface>
899
+ <sections> </sections>
900
+ </iso-standard>
901
+ OUTPUT
902
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
903
+ .convert("test", input, true)
904
+ .gsub("<!--", "<comment>")
905
+ .gsub("-->", "</comment>")))
906
+ .to be_equivalent_to xmlpp(output)
907
+ end
908
+
909
+ it "overrides duplication of MathML with AsciiMath" do
910
+ input = <<~INPUT
911
+ <iso-standard xmlns="http://riboseinc.com/isoxml" xmlns:m='http://www.w3.org/1998/Math/MathML'>
912
+ <preface><foreword>
913
+ <p>
914
+ <stem type="MathML"><m:math>
915
+ <m:msup> <m:mrow> <m:mo>(</m:mo> <m:mrow> <m:mi>x</m:mi> <m:mo>+</m:mo> <m:mi>y</m:mi> </m:mrow> <m:mo>)</m:mo> </m:mrow> <m:mn>2</m:mn> </m:msup>
916
+ </m:math></stem>
917
+ </p>
918
+ </foreword></preface>
919
+ <sections>
920
+ </iso-standard>
921
+ INPUT
922
+ output = <<~OUTPUT
923
+ <iso-standard xmlns='http://riboseinc.com/isoxml' xmlns:m='http://www.w3.org/1998/Math/MathML' type='presentation'>
924
+ <preface>
925
+ <foreword displayorder='1'>
926
+ <p>
927
+ <stem type='MathML'>
928
+ <m:math>
929
+ <m:msup>
930
+ <m:mrow>
931
+ <m:mo>(</m:mo>
932
+ <m:mrow>
933
+ <m:mi>x</m:mi>
934
+ <m:mo>+</m:mo>
935
+ <m:mi>y</m:mi>
936
+ </m:mrow>
937
+ <m:mo>)</m:mo>
938
+ </m:mrow>
939
+ <m:mn>2</m:mn>
940
+ </m:msup>
941
+ </m:math>
942
+ </stem>
943
+ </p>
944
+ </foreword>
945
+ </preface>
946
+ <sections> </sections>
947
+ </iso-standard>
948
+ OUTPUT
949
+ expect(xmlpp(IsoDoc::PresentationXMLConvert
950
+ .new({ suppressasciimathdup: "true" })
951
+ .convert("test", input, true)
952
+ .gsub("<!--", "<comment>")
953
+ .gsub("-->", "</comment>")))
954
+ .to be_equivalent_to xmlpp(output)
955
+ end
956
+
858
957
  it "processes eref types" do
859
958
  input = <<~INPUT
860
959
  <iso-standard xmlns="http://riboseinc.com/isoxml">
@@ -881,22 +980,27 @@ RSpec.describe IsoDoc do
881
980
  INPUT
882
981
  output = <<~OUTPUT
883
982
  #{HTML_HDR}
884
- <br/>
885
- <div>
886
- <h1 class="ForewordTitle">Foreword</h1>
887
- <p>
888
- <sup><a href="#ISO712">A</a></sup>
889
- <a href="#ISO712">A</a>
890
- </p>
891
- </div>
892
- <p class="zzSTDTitle1"/>
893
- <div>
894
- <h1>Normative References</h1>
895
- <p id="ISO712" class="NormRef">ISO 712, <i>Cereals and cereal products</i></p>
896
- </div>
897
- </div>
898
- </body>
899
- </html>
983
+ <br/>
984
+ <div>
985
+ <h1 class='ForewordTitle'>Foreword</h1>
986
+ <p>
987
+ <sup>
988
+ <a href='#ISO712'>A</a>
989
+ </sup>
990
+ <a href='#ISO712'>A</a>
991
+ </p>
992
+ </div>
993
+ <p class='zzSTDTitle1'/>
994
+ <div>
995
+ <h1>Normative References</h1>
996
+ <p id='ISO712' class='NormRef'>
997
+ ISO 712,
998
+ <i>Cereals and cereal products</i>
999
+ </p>
1000
+ </div>
1001
+ </div>
1002
+ </body>
1003
+ </html>
900
1004
  OUTPUT
901
1005
  expect(xmlpp(IsoDoc::HtmlConvert.new({})
902
1006
  .convert("test", input, true))).to be_equivalent_to xmlpp(output)
@@ -919,6 +1023,7 @@ RSpec.describe IsoDoc do
919
1023
  <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>A</eref>
920
1024
  <eref type="inline" bibitemid="ISO712"><locality type="whole"></locality></eref>
921
1025
  <eref type="inline" bibitemid="ISO712"><locality type="locality:prelude"><referenceFrom>7</referenceFrom></locality></eref>
1026
+ <eref type="inline" bibitemid="ISO712"><locality type="locality:URI"><referenceFrom>7</referenceFrom></locality></eref>
922
1027
  <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</eref>
923
1028
  <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality></eref>
924
1029
  <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality></eref>
@@ -957,6 +1062,7 @@ RSpec.describe IsoDoc do
957
1062
  <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>A</eref>
958
1063
  <eref type="inline" bibitemid="ISO712"><locality type="whole"/>ISO 712, Whole of text</eref>
959
1064
  <eref type="inline" bibitemid="ISO712"><locality type="locality:prelude"><referenceFrom>7</referenceFrom></locality>ISO 712, Prelude 7</eref>
1065
+ <eref type="inline" bibitemid="ISO712"><locality type="locality:URI"><referenceFrom>7</referenceFrom></locality>ISO 712, URI 7</eref>
960
1066
  <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</eref>
961
1067
  <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality>ISO 712</eref>
962
1068
  <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, Clause 1</eref>
@@ -999,6 +1105,7 @@ RSpec.describe IsoDoc do
999
1105
  <a href="#ISO712">A</a>
1000
1106
  <a href="#ISO712">ISO 712, Whole of text</a>
1001
1107
  <a href="#ISO712">ISO 712, Prelude 7</a>
1108
+ <a href="#ISO712">ISO 712, URI 7</a>
1002
1109
  <a href="#ISO712">A</a>
1003
1110
  <a href='#ISO712'>ISO 712</a>
1004
1111
  <a href='#ISO712'>ISO 712, Clause 1</a>
@@ -245,7 +245,7 @@ RSpec.describe IsoDoc do
245
245
  html = File.read("test.html")
246
246
  expect(html).to match(/another empty stylesheet/)
247
247
  expect(html).to match(/p \{[^}]*?font-family: Arial/m)
248
- expect(html).to match(/code \{[^}]*?font-family: Courier/m)
248
+ expect(html).to match(/code \{[^}]*?font-family: Courier New/m)
249
249
  expect(html).to match(/h1 \{[^}]*?font-family: Arial/m)
250
250
  expect(html).to match(/p \{[^}]*?font-size: 1em;/m)
251
251
  expect(html).to match(/code \{[^}]*?font-size: 0.8em/m)
@@ -329,7 +329,7 @@ RSpec.describe IsoDoc do
329
329
  word = File.read("test.doc")
330
330
  expect(word).to match(/another empty stylesheet/)
331
331
  expect(word).to match(/p \{[^}]*?font-family: Arial/m)
332
- expect(word).to match(/code \{[^}]*?font-family: Courier/m)
332
+ expect(word).to match(/code \{[^}]*?font-family: Courier New/m)
333
333
  expect(word).to match(/h1 \{[^}]*?font-family: Arial/m)
334
334
  expect(word).to match(/p \{[^}]*?font-size: 12pt/m)
335
335
  expect(word).to match(/code \{[^}]*?font-size: 11pt/m)
@@ -678,6 +678,90 @@ RSpec.describe IsoDoc do
678
678
  .to be_equivalent_to xmlpp(output)
679
679
  end
680
680
 
681
+ it "strips variant-title" do
682
+ input = <<~INPUT
683
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
684
+ <bibdata/>
685
+ <sections>
686
+ <clause id='_' inline-header='false' obligation='normative'>
687
+ <title>Clause</title>
688
+ <p id='_'>Text</p>
689
+ <clause id='_' inline-header='false' obligation='normative'>
690
+ <title>Subclause</title>
691
+ <variant-title variant_title='true' type='sub' id='_'>&#8220;A&#8221; &#8216;B&#8217;</variant-title>
692
+ <variant-title variant_title='true' type='toc' id='_'>
693
+ Clause
694
+ <em>A</em>
695
+ <stem type='MathML'>
696
+ <math xmlns='http://www.w3.org/1998/Math/MathML'>
697
+ <mi>x</mi>
698
+ </math>
699
+ </stem>
700
+ </variant-title>
701
+ <p id='_'>Text</p>
702
+ </clause>
703
+ </clause>
704
+ </sections>
705
+ <annex id='_' inline-header='false' obligation='normative'>
706
+ <title>Clause</title>
707
+ <variant-title variant_title='true' type='toc' id='_'>
708
+ Clause
709
+ <em>A</em>
710
+ <stem type='MathML'>
711
+ <math xmlns='http://www.w3.org/1998/Math/MathML'>
712
+ <mi>x</mi>
713
+ </math>
714
+ </stem>
715
+ </variant-title>
716
+ <p id='_'>Text</p>
717
+ </annex>
718
+ </iso-standard>
719
+ INPUT
720
+ output = <<~OUTPUT
721
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
722
+ <bibdata/>
723
+ <sections>
724
+ <clause id='_' inline-header='false' obligation='normative' displayorder='1'>
725
+ <title depth='1'>
726
+ <strong>Annex A</strong>
727
+ <br/>
728
+ (normative).
729
+ <tab/>
730
+ Clause
731
+ </title>
732
+ <p id='_'>Text</p>
733
+ <clause id='_' inline-header='false' obligation='normative'>
734
+ <title depth='1'>
735
+ <strong>Annex A</strong>
736
+ <br/>
737
+ (normative).
738
+ <tab/>
739
+ Subclause
740
+ </title>
741
+ <variant-title variant_title='true' type='sub' id='_'>&#x201C;A&#x201D; &#x2018;B&#x2019;</variant-title>
742
+ <p id='_'>Text</p>
743
+ </clause>
744
+ </clause>
745
+ </sections>
746
+ <annex id='_' inline-header='false' obligation='normative' displayorder='2'>
747
+ <title>
748
+ <strong>Annex A</strong>
749
+ <br/>
750
+ (normative)
751
+ <br/>
752
+ <br/>
753
+ <strong>Clause</strong>
754
+ </title>
755
+ <p id='_'>Text</p>
756
+ </annex>
757
+ </iso-standard>
758
+ OUTPUT
759
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
760
+ .convert("test", input, true))
761
+ .sub(%r{<localized-strings>.*</localized-strings>}m, ""))
762
+ .to be_equivalent_to xmlpp(output)
763
+ end
764
+
681
765
  private
682
766
 
683
767
  def mock_symbols