isodoc 1.7.6.1 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/isodoc.gemspec +2 -2
  3. data/lib/isodoc/class_utils.rb +24 -1
  4. data/lib/isodoc/convert.rb +9 -0
  5. data/lib/isodoc/function/cleanup.rb +4 -0
  6. data/lib/isodoc/function/inline.rb +3 -5
  7. data/lib/isodoc/html_function/html.rb +1 -0
  8. data/lib/isodoc/html_function/postprocess.rb +4 -6
  9. data/lib/isodoc/metadata_date.rb +13 -11
  10. data/lib/isodoc/presentation_function/bibdata.rb +2 -2
  11. data/lib/isodoc/presentation_function/block.rb +0 -36
  12. data/lib/isodoc/presentation_function/inline.rb +14 -11
  13. data/lib/isodoc/presentation_function/terms.rb +223 -0
  14. data/lib/isodoc/presentation_xml_convert.rb +11 -4
  15. data/lib/isodoc/version.rb +1 -1
  16. data/lib/isodoc/word_function/body.rb +24 -14
  17. data/lib/isodoc/word_function/comments.rb +0 -4
  18. data/lib/isodoc/word_function/postprocess.rb +184 -176
  19. data/lib/isodoc/xref/xref_gen.rb +18 -22
  20. data/lib/isodoc/xref/xref_gen_seq.rb +10 -16
  21. data/lib/isodoc/xref/xref_sect_gen.rb +134 -129
  22. data/lib/isodoc/xslfo_convert.rb +11 -7
  23. data/lib/isodoc-yaml/i18n-ar.yaml +25 -0
  24. data/lib/isodoc-yaml/i18n-de.yaml +23 -0
  25. data/lib/isodoc-yaml/i18n-en.yaml +23 -0
  26. data/lib/isodoc-yaml/i18n-es.yaml +23 -0
  27. data/lib/isodoc-yaml/i18n-fr.yaml +23 -0
  28. data/lib/isodoc-yaml/i18n-ru.yaml +24 -1
  29. data/lib/isodoc-yaml/i18n-zh-Hans.yaml +24 -0
  30. data/lib/metanorma/output/xslfo.rb +4 -11
  31. data/spec/assets/i18n.yaml +3 -1
  32. data/spec/isodoc/blocks_spec.rb +14 -8
  33. data/spec/isodoc/i18n_spec.rb +23 -18
  34. data/spec/isodoc/inline_spec.rb +193 -9
  35. data/spec/isodoc/lists_spec.rb +344 -222
  36. data/spec/isodoc/section_spec.rb +23 -22
  37. data/spec/isodoc/table_spec.rb +71 -73
  38. data/spec/isodoc/terms_spec.rb +498 -124
  39. data/spec/isodoc/xref_numbering_spec.rb +347 -0
  40. data/spec/isodoc/xref_spec.rb +274 -353
  41. data/spec/isodoc/xslfo_convert_spec.rb +34 -9
  42. metadata +12 -11
  43. data/lib/isodoc/presentation_function/concept.rb +0 -68
@@ -24,7 +24,7 @@ RSpec.describe IsoDoc do
24
24
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
25
25
  <title>Normal Terms</title>
26
26
  <term id="J">
27
- <preferred>Term2</preferred>
27
+ <preferred><expression><name>Term2</name></expression></preferred>
28
28
  </term>
29
29
  </terms>
30
30
  <definitions id="K">
@@ -88,7 +88,7 @@ RSpec.describe IsoDoc do
88
88
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
89
89
  <title depth="2">3.1.<tab/>Normal Terms</title>
90
90
  <term id="J"><name>3.1.1.</name>
91
- <preferred>Term2</preferred>
91
+ <preferred><strong>Term2</strong></preferred>
92
92
  </term>
93
93
  </terms>
94
94
  <definitions id="K"><title>3.2.</title>
@@ -159,7 +159,7 @@ RSpec.describe IsoDoc do
159
159
  <div id="I">
160
160
  <h2>3.1.&#160; Normal Terms</h2>
161
161
  <p class="TermNum" id="J">3.1.1.</p>
162
- <p class="Terms" style="text-align:left;">Term2</p>
162
+ <p class="Terms" style="text-align:left;"><b>Term2</b></p>
163
163
  </div><div id="K"><h2>3.2.</h2>
164
164
  <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
165
165
  </div></div>
@@ -211,7 +211,7 @@ RSpec.describe IsoDoc do
211
211
  end
212
212
 
213
213
  it "defaults to English" do
214
- expect(xmlpp(IsoDoc::PresentationXMLConvert.new({}).convert("test", <<~"INPUT", true).sub(%r{<localized-strings>.*</localized-strings>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
214
+ input = <<~INPUT
215
215
  <iso-standard xmlns="http://riboseinc.com/isoxml">
216
216
  <bibdata>
217
217
  <language>tlh</language>
@@ -233,7 +233,7 @@ RSpec.describe IsoDoc do
233
233
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
234
234
  <title>Normal Terms</title>
235
235
  <term id="J">
236
- <preferred>Term2</preferred>
236
+ <preferred><expression><name>Term2</name></expression></preferred>
237
237
  </term>
238
238
  </terms>
239
239
  <definitions id="K">
@@ -275,6 +275,7 @@ RSpec.describe IsoDoc do
275
275
  </bibliography>
276
276
  </iso-standard>
277
277
  INPUT
278
+ output = <<~OUTPUT
278
279
  <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
279
280
  <bibdata>
280
281
  <language current="true">tlh</language>
@@ -295,7 +296,7 @@ RSpec.describe IsoDoc do
295
296
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
296
297
  <title depth="2">3.1.<tab/>Normal Terms</title>
297
298
  <term id="J"><name>3.1.1.</name>
298
- <preferred>Term2</preferred>
299
+ <preferred><strong>Term2</strong></preferred>
299
300
  </term>
300
301
  </terms>
301
302
  <definitions id="K"><title>3.2.</title>
@@ -336,6 +337,10 @@ RSpec.describe IsoDoc do
336
337
  </bibliography>
337
338
  </iso-standard>
338
339
  OUTPUT
340
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
341
+ .convert("test", input, true)
342
+ .sub(%r{<localized-strings>.*</localized-strings>}m, "")))
343
+ .to be_equivalent_to xmlpp(output)
339
344
  end
340
345
 
341
346
  it "processes French" do
@@ -361,7 +366,7 @@ RSpec.describe IsoDoc do
361
366
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
362
367
  <title>Normal Terms</title>
363
368
  <term id="J">
364
- <preferred>Term2</preferred>
369
+ <preferred><expression><name>Term2</name></expression></preferred>
365
370
  </term>
366
371
  </terms>
367
372
  <definitions id="K">
@@ -425,7 +430,7 @@ RSpec.describe IsoDoc do
425
430
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
426
431
  <title depth="2">3.1.<tab/>Normal Terms</title>
427
432
  <term id="J"><name>3.1.1.</name>
428
- <preferred>Term2</preferred>
433
+ <preferred><strong>Term2</strong></preferred>
429
434
  </term>
430
435
  </terms>
431
436
  <definitions id="K"><title>3.2.</title>
@@ -496,7 +501,7 @@ RSpec.describe IsoDoc do
496
501
  <div id="I">
497
502
  <h2>3.1.&#160; Normal Terms</h2>
498
503
  <p class="TermNum" id="J">3.1.1.</p>
499
- <p class="Terms" style="text-align:left;">Term2</p>
504
+ <p class="Terms" style="text-align:left;"><b>Term2</b></p>
500
505
  </div><div id="K"><h2>3.2.</h2>
501
506
  <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
502
507
  </div></div>
@@ -570,7 +575,7 @@ RSpec.describe IsoDoc do
570
575
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
571
576
  <title>Normal Terms</title>
572
577
  <term id="J">
573
- <preferred>Term2</preferred>
578
+ <preferred><expression><name>Term2</name></expression></preferred>
574
579
  </term>
575
580
  </terms>
576
581
  <definitions id="K">
@@ -644,7 +649,7 @@ RSpec.describe IsoDoc do
644
649
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
645
650
  <title depth="2">3.1.<tab/>Normal Terms</title>
646
651
  <term id="J"><name>3.1.1.</name>
647
- <preferred>Term2</preferred>
652
+ <preferred><strong>Term2</strong></preferred>
648
653
  </term>
649
654
  </terms>
650
655
  <definitions id="K"><title>3.2.</title>
@@ -728,7 +733,7 @@ RSpec.describe IsoDoc do
728
733
  <div id="I">
729
734
  <h2>3.1.&#12288;Normal Terms</h2>
730
735
  <p class="TermNum" id="J">3.1.1.</p>
731
- <p class="Terms" style="text-align:left;">Term2</p>
736
+ <p class="Terms" style="text-align:left;"><b>Term2</b></p>
732
737
  </div><div id="K"><h2>3.2.</h2>
733
738
  <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
734
739
  </div></div>
@@ -812,7 +817,7 @@ RSpec.describe IsoDoc do
812
817
  <clause id="H" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
813
818
  <title>Normal Terms</title>
814
819
  <term id="J">
815
- <preferred>Term2</preferred>
820
+ <preferred><expression><name>Term2</name></expression></preferred>
816
821
  </term>
817
822
  </terms>
818
823
  <definitions id="K">
@@ -877,7 +882,7 @@ RSpec.describe IsoDoc do
877
882
  <ext>
878
883
  <doctype language="">brochure</doctype><doctype language="eo">bro&#x15D;uro</doctype>
879
884
  </ext>
880
- </bibdata><localized-strings><localized-string key="foreword" language="eo">Anta&#x16D;parolo</localized-string><localized-string key="introduction" language="eo">Enkonduko</localized-string><localized-string key="clause" language="eo">kla&#x16D;zo</localized-string><localized-string key="table" language="eo">tabelo</localized-string><localized-string key="source" language="eo">SOURCE</localized-string><localized-string key="modified" language="eo">modified</localized-string><localized-string key="scope" language="eo">Amplekso</localized-string><localized-string key="symbols" language="eo">Simboloj kai mallongigitaj terminoj</localized-string><localized-string key="annex" language="eo">Aldono</localized-string><localized-string key="normref" language="eo">Normaj cita&#x135;oj</localized-string><localized-string key="bibliography" language="eo">Bibliografio</localized-string><localized-string key="inform_annex" language="eo">informa</localized-string><localized-string key="all_parts" language="eo">&#x109;iuj partoj</localized-string><localized-string key="norm_annex" language="eo">normative</localized-string><localized-string key="note" language="eo">NOTO</localized-string><localized-string key="locality.table" language="eo">Tabelo</localized-string><localized-string key="doctype_dict.brochure" language="eo">bro&#x15D;uro</localized-string><localized-string key="doctype_dict.conference_proceedings" language="eo">konferencaktoj</localized-string><localized-string key="stage_dict.published" language="eo">publikigita</localized-string><localized-string key="substage_dict.withdrawn" language="eo">fortirita</localized-string><localized-string key="array.0" language="eo">elem1</localized-string><localized-string key="array.1" language="eo">elem2</localized-string><localized-string key="array.2.elem3" language="eo">elem4</localized-string><localized-string key="array.2.elem5" language="eo">elem6</localized-string><localized-string key="language" language="eo">eo</localized-string><localized-string key="script" language="eo">Latn</localized-string></localized-strings>
885
+ </bibdata><localized-strings><localized-string key="foreword" language="eo">Anta&#x16D;parolo</localized-string><localized-string key="introduction" language="eo">Enkonduko</localized-string><localized-string key="clause" language="eo">kla&#x16D;zo</localized-string><localized-string key="table" language="eo">tabelo</localized-string><localized-string key="source" language="eo">SOURCE</localized-string><localized-string key="modified" language="eo">modified</localized-string><localized-string key="scope" language="eo">Amplekso</localized-string><localized-string key="symbols" language="eo">Simboloj kai mallongigitaj terminoj</localized-string><localized-string key="annex" language="eo"><strong>aldono</strong></localized-string><localized-string key="normref" language="eo">Normaj cita&#x135;oj</localized-string><localized-string key="bibliography" language="eo">Bibliografio</localized-string><localized-string key="inform_annex" language="eo">informa</localized-string><localized-string key="all_parts" language="eo">&#x109;iuj partoj</localized-string><localized-string key="norm_annex" language="eo">normative</localized-string><localized-string key='figure' language='eo'>figur-etikedo duvorta</localized-string><localized-string key='example' language='eo'>Ekzempl-etikedo Duvorta</localized-string><localized-string key="note" language="eo">NOTO</localized-string><localized-string key="locality.table" language="eo">Tabelo</localized-string><localized-string key="doctype_dict.brochure" language="eo">bro&#x15D;uro</localized-string><localized-string key="doctype_dict.conference_proceedings" language="eo">konferencaktoj</localized-string><localized-string key="stage_dict.published" language="eo">publikigita</localized-string><localized-string key="substage_dict.withdrawn" language="eo">fortirita</localized-string><localized-string key="array.0" language="eo">elem1</localized-string><localized-string key="array.1" language="eo">elem2</localized-string><localized-string key="array.2.elem3" language="eo">elem4</localized-string><localized-string key="array.2.elem5" language="eo">elem6</localized-string><localized-string key="language" language="eo">eo</localized-string><localized-string key="script" language="eo">Latn</localized-string></localized-strings>
881
886
  <preface>
882
887
  <foreword obligation="informative" displayorder="1">
883
888
  <title>Foreword</title>
@@ -896,7 +901,7 @@ RSpec.describe IsoDoc do
896
901
  <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
897
902
  <title depth="2">3.1.<tab/>Normal Terms</title>
898
903
  <term id="J"><name>3.1.1.</name>
899
- <preferred>Term2</preferred>
904
+ <preferred><strong>Term2</strong></preferred>
900
905
  </term>
901
906
  </terms>
902
907
  <definitions id="K"><title>3.2.</title>
@@ -920,7 +925,7 @@ RSpec.describe IsoDoc do
920
925
  <title depth="2">5.2.<tab/>Clause 4.2</title>
921
926
  </clause></clause>
922
927
  </sections><annex id="P" inline-header="false" obligation="normative" displayorder="8">
923
- <title><strong>Aldono A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
928
+ <title><strong><strong>Aldono</strong> A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
924
929
  <clause id="Q" inline-header="false" obligation="normative">
925
930
  <title depth="2">A.1.<tab/>Annex A.1</title>
926
931
  <clause id="Q1" inline-header="false" obligation="normative">
@@ -1002,7 +1007,7 @@ RSpec.describe IsoDoc do
1002
1007
  <div id='I'>
1003
1008
  <h2>3.1.&#160; Normal Terms</h2>
1004
1009
  <p class='TermNum' id='J'>3.1.1.</p>
1005
- <p class='Terms' style='text-align:left;'>Term2</p>
1010
+ <p class='Terms' style='text-align:left;'><b>Term2</b></p>
1006
1011
  </div>
1007
1012
  <div id='K'>
1008
1013
  <h2>3.2.</h2>
@@ -1041,7 +1046,7 @@ RSpec.describe IsoDoc do
1041
1046
  <br/>
1042
1047
  <div id='P' class='Section3'>
1043
1048
  <h1 class='Annex'>
1044
- <b>Aldono A</b>
1049
+ <b><b>Aldono</b> A</b>
1045
1050
  <br/>
1046
1051
  (normative)
1047
1052
  <br/>
@@ -625,6 +625,74 @@ RSpec.describe IsoDoc do
625
625
  .convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
626
626
  end
627
627
 
628
+ it "processes related terms" do
629
+ input = <<~INPUT
630
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
631
+ <sections>
632
+ <terms id='A' obligation='normative'>
633
+ <title>Terms and definitions</title>
634
+ <term id='second'>
635
+ <preferred>
636
+ <expression>
637
+ <name>Second Term</name>
638
+ </expression>
639
+ <field-of-application>Field</field-of-application>
640
+ <usage-info>Usage Info 1</usage-info>
641
+ </preferred>
642
+ <definition><verbal-definition>Definition 1</verbal-definition></definition>
643
+ </term>
644
+ <term id="C">
645
+ <preferred language='fr' script='Latn' type='prefix'>
646
+ <expression>
647
+ <name>First Designation</name>
648
+ </expression></preferred>
649
+ <related type='contrast'>
650
+ <preferred>
651
+ <expression>
652
+ <name>Fifth Designation</name>
653
+ <grammar>
654
+ <gender>neuter</gender>
655
+ </grammar>
656
+ </expression>
657
+ </preferred>
658
+ <xref target='second'/>
659
+ </related>
660
+ <definition><verbal-definition>Definition 2</verbal-definition></definition>
661
+ </term>
662
+ </terms>
663
+ </sections>
664
+ </iso-standard>
665
+ INPUT
666
+ output = <<~OUTPUT
667
+ <?xml version='1.0'?>
668
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
669
+ <sections>
670
+ <terms id='A' obligation='normative' displayorder='1'>
671
+ <title depth='1'>1.<tab/>Terms and definitions</title>
672
+ <term id='second'>
673
+ <name>1.1.</name>
674
+ <preferred><strong>Second Term</strong>, &lt;Field, Usage Info 1&gt;</preferred>
675
+ <definition>Definition 1</definition>
676
+ </term>
677
+ <term id='C'>
678
+ <name>1.2.</name>
679
+ <preferred language='fr' script='Latn' type='prefix'><strong>First Designation</strong></preferred>
680
+ <p>
681
+ <strong>CONTRAST:</strong>
682
+ <em>
683
+ <preferred><strong>Fifth Designation</strong>, n</preferred>
684
+ </em> (<xref target='second'>Clause 1.1</xref>)
685
+ </p>
686
+ <definition>Definition 2</definition>
687
+ </term>
688
+ </terms>
689
+ </sections>
690
+ </iso-standard>
691
+ OUTPUT
692
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
693
+ .convert("test", input, true))).to be_equivalent_to xmlpp(output)
694
+ end
695
+
628
696
  it "processes embedded inline formatting" do
629
697
  input = <<~INPUT
630
698
  <iso-standard xmlns="http://riboseinc.com/isoxml">
@@ -724,9 +792,9 @@ RSpec.describe IsoDoc do
724
792
  <iso-standard xmlns="http://riboseinc.com/isoxml">
725
793
  <preface><foreword>
726
794
  <p>
727
- <link updatetype="true" target="http://example.com"/>
728
- <link updatetype="true" target="list.adoc">example</link>
729
- <link updatetype="true" target="list" alt="tip">example</link>
795
+ <link update-type="true" target="http://example.com"/>
796
+ <link update-type="true" target="list.adoc">example</link>
797
+ <link update-type="true" target="list" alt="tip">example</link>
730
798
  </p>
731
799
  </foreword></preface>
732
800
  <sections>
@@ -1505,6 +1573,122 @@ RSpec.describe IsoDoc do
1505
1573
  end
1506
1574
 
1507
1575
  it "cases xrefs" do
1576
+ input = <<~INPUT
1577
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
1578
+ <preface>
1579
+ <clause id="CC"><title>Introduction</title></clause>
1580
+ <sections>
1581
+ <clause id="A">
1582
+ <table id="B">
1583
+ </table>
1584
+ <figure id="B1"/>
1585
+ <example id="B2"/>
1586
+ </clause>
1587
+ <clause id="C">
1588
+ <p>This is <xref target="A"/> and <xref target="B"/>.
1589
+ This is <xref target="A" case="capital"/> and <xref target="B" case="lowercase"/>.
1590
+ This is <xref target="A" case="lowercase"/> and <xref target="B" case="capital"/>.
1591
+ Downcasing an xref affects only the first letter: <xref target="B2" case="lowercase"/>.
1592
+ Capitalising an xref affects only the first letter: <xref target="B1" case="capital"/>.
1593
+ <xref target="A"/> is clause <em>initial.</em><br/>
1594
+ <xref target="A"/> is too. </p>
1595
+ <p><xref target="A"/> is also.</p>
1596
+ <p>Annex has formatting, and crossreferences ignore it when determining casing. <xref target="AA"/>.</p>
1597
+ <p>Labels are not subject to casing: <xref target="CC" case="lowercase"/>
1598
+ </clause>
1599
+ <annex id="AA">
1600
+ <clause id="AA1"/>
1601
+ </annex>
1602
+ </sections>
1603
+ </iso-standard>
1604
+ INPUT
1605
+ output = <<~OUTPUT
1606
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
1607
+ <preface>
1608
+ <clause id='CC' displayorder='1'>
1609
+ <title depth='1'>Introduction</title>
1610
+ </clause>
1611
+ <sections displayorder='2'>
1612
+ <clause id='A' displayorder='3'>
1613
+ <title>1.</title>
1614
+ <table id='B'>
1615
+ <name>Tabelo 1</name>
1616
+ </table>
1617
+ <figure id='B1'>
1618
+ <name>Figur-etikedo duvorta 1</name>
1619
+ </figure>
1620
+ <example id='B2'>
1621
+ <name>Ekzempl-etikedo Duvorta</name>
1622
+ </example>
1623
+ </clause>
1624
+ <clause id='C' displayorder='4'>
1625
+ <title>2.</title>
1626
+ <p>
1627
+ This is
1628
+ <xref target='A'>kla&#x16D;zo 1</xref>
1629
+ and
1630
+ <xref target='B'>tabelo 1</xref>
1631
+ . This is
1632
+ <xref target='A' case='capital'>Kla&#x16D;zo 1</xref>
1633
+ and
1634
+ <xref target='B' case='lowercase'>tabelo 1</xref>
1635
+ . This is
1636
+ <xref target='A' case='lowercase'>kla&#x16D;zo 1</xref>
1637
+ and
1638
+ <xref target='B' case='capital'>Tabelo 1</xref>
1639
+ . Downcasing an xref affects only the first letter:
1640
+ <xref target='B2' case='lowercase'>kla&#x16D;zo 1, Example</xref>
1641
+ . Capitalising an xref affects only the first letter:
1642
+ <xref target='B1' case='capital'>Figur-etikedo duvorta 1</xref>
1643
+ .
1644
+ <xref target='A'>Kla&#x16D;zo 1</xref>
1645
+ is clause
1646
+ <em>initial.</em>
1647
+ <br/>
1648
+ <xref target='A'>Kla&#x16D;zo 1</xref>
1649
+ is too.
1650
+ </p>
1651
+ <p>
1652
+ <xref target='A'>Kla&#x16D;zo 1</xref>
1653
+ is also.
1654
+ </p>
1655
+ <p>
1656
+ Annex has formatting, and crossreferences ignore it when determining
1657
+ casing.
1658
+ <xref target='AA'>
1659
+ <strong>Aldono</strong>
1660
+ A
1661
+ </xref>
1662
+ .
1663
+ </p>
1664
+ <p>
1665
+ Labels are not subject to casing:
1666
+ <xref target='CC' case='lowercase'>Introduction</xref>
1667
+ </p>
1668
+ <annex id='AA' displayorder='5'>
1669
+ <title>
1670
+ <strong>
1671
+ <strong>Aldono</strong>
1672
+ A
1673
+ </strong>
1674
+ <br/>
1675
+ (informa)
1676
+ </title>
1677
+ <clause id='AA1'>
1678
+ <title>A.1.</title>
1679
+ </clause>
1680
+ </annex>
1681
+ </clause>
1682
+ </sections>
1683
+ </preface>
1684
+ </iso-standard>
1685
+ OUTPUT
1686
+ expect(xmlpp(IsoDoc::PresentationXMLConvert
1687
+ .new({ i18nyaml: "spec/assets/i18n.yaml" })
1688
+ .convert("test", input, true))).to be_equivalent_to xmlpp(output)
1689
+ end
1690
+
1691
+ it "ignores casing of xrefs in unicameral scripts" do
1508
1692
  input = <<~INPUT
1509
1693
  <iso-standard xmlns="http://riboseinc.com/isoxml">
1510
1694
  <sections>
@@ -1541,23 +1725,23 @@ RSpec.describe IsoDoc do
1541
1725
  and
1542
1726
  <xref target='B'>tabelo 1</xref>
1543
1727
  . This is
1544
- <xref target='A' case='capital'>Kla&#x16D;zo 1</xref>
1728
+ <xref target='A' case='capital'>kla&#x16D;zo 1</xref>
1545
1729
  and
1546
1730
  <xref target='B' case='lowercase'>tabelo 1</xref>
1547
1731
  . This is
1548
1732
  <xref target='A' case='lowercase'>kla&#x16D;zo 1</xref>
1549
1733
  and
1550
- <xref target='B' case='capital'>Tabelo 1</xref>
1734
+ <xref target='B' case='capital'>tabelo 1</xref>
1551
1735
  .
1552
- <xref target='A'>Kla&#x16D;zo 1</xref>
1736
+ <xref target='A'>kla&#x16D;zo 1</xref>
1553
1737
  is clause
1554
1738
  <em>initial.</em>
1555
1739
  <br/>
1556
- <xref target='A'>Kla&#x16D;zo 1</xref>
1740
+ <xref target='A'>kla&#x16D;zo 1</xref>
1557
1741
  is too.
1558
1742
  </p>
1559
1743
  <p>
1560
- <xref target='A'>Kla&#x16D;zo 1</xref>
1744
+ <xref target='A'>kla&#x16D;zo 1</xref>
1561
1745
  is also.
1562
1746
  </p>
1563
1747
  </clause>
@@ -1565,7 +1749,7 @@ RSpec.describe IsoDoc do
1565
1749
  </iso-standard>
1566
1750
  OUTPUT
1567
1751
  expect(xmlpp(IsoDoc::PresentationXMLConvert
1568
- .new({ i18nyaml: "spec/assets/i18n.yaml" })
1752
+ .new({ i18nyaml: "spec/assets/i18n.yaml", script: "Hans" })
1569
1753
  .convert("test", input, true))).to be_equivalent_to xmlpp(output)
1570
1754
  end
1571
1755