metanorma-standoc 1.10.6 → 1.11.0.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +19 -23
  3. data/Rakefile +1 -1
  4. data/lib/asciidoctor/standoc/base.rb +10 -17
  5. data/lib/asciidoctor/standoc/basicdoc.rng +21 -4
  6. data/lib/asciidoctor/standoc/blocks.rb +23 -23
  7. data/lib/asciidoctor/standoc/blocks_notes.rb +17 -22
  8. data/lib/asciidoctor/standoc/cleanup.rb +46 -12
  9. data/lib/asciidoctor/standoc/cleanup_block.rb +3 -71
  10. data/lib/asciidoctor/standoc/cleanup_image.rb +6 -7
  11. data/lib/asciidoctor/standoc/cleanup_inline.rb +42 -106
  12. data/lib/asciidoctor/standoc/cleanup_maths.rb +5 -6
  13. data/lib/asciidoctor/standoc/cleanup_ref.rb +5 -0
  14. data/lib/asciidoctor/standoc/cleanup_reqt.rb +5 -24
  15. data/lib/asciidoctor/standoc/cleanup_section_names.rb +5 -5
  16. data/lib/asciidoctor/standoc/cleanup_symbols.rb +48 -0
  17. data/lib/asciidoctor/standoc/cleanup_table.rb +68 -0
  18. data/lib/asciidoctor/standoc/cleanup_terms.rb +37 -77
  19. data/lib/asciidoctor/standoc/cleanup_terms_designations.rb +162 -0
  20. data/lib/asciidoctor/standoc/cleanup_text.rb +5 -2
  21. data/lib/asciidoctor/standoc/cleanup_xref.rb +107 -0
  22. data/lib/asciidoctor/standoc/converter.rb +14 -0
  23. data/lib/asciidoctor/standoc/inline.rb +7 -5
  24. data/lib/asciidoctor/standoc/isodoc.rng +419 -77
  25. data/lib/asciidoctor/standoc/lists.rb +15 -15
  26. data/lib/asciidoctor/standoc/macros.rb +14 -43
  27. data/lib/asciidoctor/standoc/macros_note.rb +45 -0
  28. data/lib/asciidoctor/standoc/macros_plantuml.rb +29 -14
  29. data/lib/asciidoctor/standoc/macros_terms.rb +55 -8
  30. data/lib/asciidoctor/standoc/ref_sect.rb +26 -18
  31. data/lib/asciidoctor/standoc/reqt.rng +23 -2
  32. data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +50 -11
  33. data/lib/asciidoctor/standoc/terms.rb +12 -2
  34. data/lib/asciidoctor/standoc/utils.rb +36 -23
  35. data/lib/asciidoctor/standoc/validate.rb +45 -27
  36. data/lib/asciidoctor/standoc/validate_section.rb +5 -2
  37. data/lib/metanorma/standoc/version.rb +1 -1
  38. data/metanorma-standoc.gemspec +1 -1
  39. data/spec/asciidoctor/base_spec.rb +4 -36
  40. data/spec/asciidoctor/blank_spec.rb +37 -0
  41. data/spec/asciidoctor/blocks_spec.rb +208 -49
  42. data/spec/asciidoctor/cleanup_sections_spec.rb +153 -12
  43. data/spec/asciidoctor/cleanup_spec.rb +104 -285
  44. data/spec/asciidoctor/cleanup_terms_spec.rb +990 -0
  45. data/spec/asciidoctor/inline_spec.rb +38 -2
  46. data/spec/asciidoctor/lists_spec.rb +6 -6
  47. data/spec/asciidoctor/macros_plantuml_spec.rb +37 -2
  48. data/spec/asciidoctor/macros_spec.rb +191 -114
  49. data/spec/asciidoctor/refs_spec.rb +12 -30
  50. data/spec/asciidoctor/section_spec.rb +18 -18
  51. data/spec/asciidoctor/validate_spec.rb +87 -2
  52. data/spec/fixtures/datamodel_description_sections_tree.xml +3 -2
  53. data/spec/spec_helper.rb +6 -7
  54. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +51 -51
  55. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec1.yml +13 -13
  56. data/spec/vcr_cassettes/isobib_get_123.yml +13 -13
  57. data/spec/vcr_cassettes/isobib_get_123_1.yml +26 -26
  58. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +34 -34
  59. data/spec/vcr_cassettes/isobib_get_123_2001.yml +12 -12
  60. data/spec/vcr_cassettes/isobib_get_124.yml +13 -13
  61. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +16 -16
  62. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +51 -49
  63. metadata +12 -5
@@ -213,141 +213,6 @@ RSpec.describe Asciidoctor::Standoc do
213
213
  .to be_equivalent_to xmlpp(output)
214
214
  end
215
215
 
216
- it "processes stem-only terms as admitted" do
217
- input = <<~INPUT
218
- #{ASCIIDOC_BLANK_HDR}
219
- == Terms and Definitions
220
-
221
- === stem:[t_90]
222
-
223
- stem:[t_91]
224
-
225
- Time
226
- INPUT
227
- output = <<~OUTPUT
228
- #{BLANK_HDR}
229
- <sections>
230
- <terms id="_" obligation="normative">
231
- <title>Terms and definitions</title>
232
- <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
233
- <term id="term-t90"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub>
234
- <mrow>
235
- <mi>t</mi>
236
- </mrow>
237
- <mrow>
238
- <mn>90</mn>
239
- </mrow>
240
- </msub></math></stem></preferred><admitted><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub>
241
- <mrow>
242
- <mi>t</mi>
243
- </mrow>
244
- <mrow>
245
- <mn>91</mn>
246
- </mrow>
247
- </msub></math></stem></admitted>
248
- <definition><p id="_">Time</p></definition></term>
249
- </terms>
250
- </sections>
251
- </standard-document>
252
- OUTPUT
253
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
254
- .to be_equivalent_to xmlpp(output)
255
- end
256
-
257
- it "moves term domains out of the term definition paragraph" do
258
- input = <<~INPUT
259
- #{ASCIIDOC_BLANK_HDR}
260
- == Terms and Definitions
261
-
262
- === Tempus
263
-
264
- domain:[relativity] Time
265
-
266
- === Tempus1
267
-
268
- Time2
269
-
270
- domain:[relativity2]
271
- INPUT
272
- output = <<~OUTPUT
273
- #{BLANK_HDR}
274
- <sections>
275
- <terms id="_" obligation="normative">
276
- <title>Terms and definitions</title>
277
- <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
278
- <term id="term-tempus">
279
- <preferred>Tempus</preferred>
280
- <domain>relativity</domain><definition><p id="_"> Time</p></definition>
281
- </term>
282
- <term id='term-tempus1'>
283
- <preferred>Tempus1</preferred>
284
- <domain>relativity2</domain>
285
- <definition>
286
- <p id='_'>Time2</p>
287
- <p id='_'> </p>
288
- </definition>
289
- </term>
290
- </terms>
291
- </sections>
292
- </standard-document>
293
- OUTPUT
294
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
295
- .to be_equivalent_to xmlpp(output)
296
- end
297
-
298
- it "permits multiple blocks in term definition paragraph" do
299
- input = <<~INPUT
300
- = Document title
301
- Author
302
- :docfile: test.adoc
303
- :nodoc:
304
- :novalid:
305
- :stem:
306
-
307
- == Terms and Definitions
308
-
309
- === stem:[t_90]
310
-
311
- [stem]
312
- ++++
313
- t_A
314
- ++++
315
-
316
- This paragraph is extraneous
317
- INPUT
318
- output = <<~OUTPUT
319
- #{BLANK_HDR}
320
- <sections>
321
- <terms id="_" obligation="normative">
322
- <title>Terms and definitions</title>
323
- <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
324
- <term id="term-t90"><preferred><stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub>
325
- <mrow>
326
- <mi>t</mi>
327
- </mrow>
328
- <mrow>
329
- <mn>90</mn>
330
- </mrow>
331
- </msub></math></stem></preferred><definition><formula id="_">
332
- <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub>
333
- <mrow>
334
- <mi>t</mi>
335
- </mrow>
336
- <mrow>
337
- <mi>A</mi>
338
- </mrow>
339
- </msub></math></stem>
340
- </formula>
341
- <p id="_">This paragraph is extraneous</p></definition>
342
- </term>
343
- </terms>
344
- </sections>
345
- </standard-document>
346
- OUTPUT
347
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
348
- .to be_equivalent_to xmlpp(output)
349
- end
350
-
351
216
  it "converts xrefs to references into erefs" do
352
217
  input = <<~INPUT
353
218
  #{ASCIIDOC_BLANK_HDR}
@@ -548,6 +413,8 @@ RSpec.describe Asciidoctor::Standoc do
548
413
 
549
414
  === Term1
550
415
 
416
+ Definition 0
417
+
551
418
  [.source]
552
419
  <<ISO2191,section=1>>
553
420
  INPUT
@@ -558,8 +425,9 @@ RSpec.describe Asciidoctor::Standoc do
558
425
  <title>Terms and definitions</title>
559
426
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
560
427
  <term id="term-term1">
561
- <preferred>Term1</preferred>
562
- <termsource status="identical">
428
+ <preferred><expression><name>Term1</name></expression></preferred>
429
+ <definition><verbaldefinition><p id='_'>Definition 0</p></verbaldefinition></definition>
430
+ <termsource status="identical" type="authoritative">
563
431
  <origin bibitemid="ISO2191" type="inline" citeas="">
564
432
  <localityStack>
565
433
  <locality type="section"><referenceFrom>1</referenceFrom></locality>
@@ -630,57 +498,6 @@ RSpec.describe Asciidoctor::Standoc do
630
498
  .to be_equivalent_to xmlpp(output)
631
499
  end
632
500
 
633
- it "rearranges term note, term example, term source" do
634
- input = <<~INPUT
635
- #{ASCIIDOC_BLANK_HDR}
636
-
637
- == Terms and definitions
638
-
639
- === Term
640
-
641
- [.source]
642
- <<ISO2191,section=1>>
643
-
644
- NOTE: Note
645
-
646
- [example]
647
- Example 1
648
-
649
- NOTE: Note 2
650
-
651
- [example]
652
- Example 2
653
- INPUT
654
- output = <<~OUTPUT
655
- #{BLANK_HDR}
656
- <sections>
657
- <terms id="_" obligation="normative">
658
- <title>Terms and definitions</title>
659
- <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
660
- <term id="term-term"><preferred>Term</preferred>
661
- <termnote id="_">
662
- <p id="_">Note</p>
663
- </termnote><termnote id="_">
664
- <p id="_">Note 2</p>
665
- </termnote><termexample id="_">
666
- <p id="_">Example 1</p>
667
- </termexample><termexample id="_">
668
- <p id="_">Example 2</p>
669
- </termexample><termsource status="identical">
670
- <origin bibitemid="ISO2191" type="inline" citeas="">
671
- <localityStack>
672
- <locality type="section"><referenceFrom>1</referenceFrom></locality>
673
- </localityStack>
674
- </origin>
675
- </termsource></term>
676
- </terms>
677
- </sections>
678
- </standard-document>
679
- OUTPUT
680
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
681
- .to be_equivalent_to xmlpp(output)
682
- end
683
-
684
501
  it "separates IEV citations by top-level clause" do
685
502
  FileUtils.rm_rf File.expand_path("~/.relaton-bib.pstore1")
686
503
  FileUtils.mv File.expand_path("~/.relaton/cache"),
@@ -690,8 +507,6 @@ RSpec.describe Asciidoctor::Standoc do
690
507
  File.expand_path("~/.iev.pstore1"), force: true
691
508
  FileUtils.rm_rf "relaton/cache"
692
509
  FileUtils.rm_rf "test.iev.pstore"
693
- # mock_iecbib_get_iec60050_102_01
694
- # mock_iecbib_get_iec60050_103_01
695
510
  # mock_iev
696
511
  VCR.use_cassette "separates_iev_citations_by_top_level_clause" do
697
512
  input = <<~INPUT
@@ -704,16 +519,22 @@ RSpec.describe Asciidoctor::Standoc do
704
519
  == Terms and definitions
705
520
  === Automation1
706
521
 
522
+ Definition 1
523
+
707
524
  [.source]
708
525
  <<iev,clause="103-01-02">>
709
526
 
710
527
  === Automation2
711
528
 
529
+ Definition 2
530
+
712
531
  [.source]
713
532
  <<iev,clause="102-01-02">>
714
533
 
715
534
  === Automation3
716
535
 
536
+ Definition 3
537
+
717
538
  [.source]
718
539
  <<iev,clause="103-01-02">>
719
540
  INPUT
@@ -723,8 +544,9 @@ RSpec.describe Asciidoctor::Standoc do
723
544
  <terms id="_" obligation="normative"><title>Terms and definitions</title>
724
545
  <p id="_">For the purposes of this document, the following terms and definitions apply.</p>
725
546
  <term id="term-automation1">
726
- <preferred>Automation1</preferred>
727
- <termsource status="identical">
547
+ <preferred><expression><name>Automation1</name></expression></preferred>
548
+ <definition><verbaldefinition><p id='_'>Definition 1</p></verbaldefinition></definition>
549
+ <termsource status="identical" type="authoritative">
728
550
  <origin bibitemid="IEC60050-103" type="inline" citeas="IEC 60050-103:2009">
729
551
  <localityStack>
730
552
  <locality type="clause"><referenceFrom>103-01-02</referenceFrom></locality>
@@ -733,8 +555,9 @@ RSpec.describe Asciidoctor::Standoc do
733
555
  </termsource>
734
556
  </term>
735
557
  <term id="term-automation2">
736
- <preferred>Automation2</preferred>
737
- <termsource status="identical">
558
+ <preferred><expression><name>Automation2</name></expression></preferred>
559
+ <definition><verbaldefinition><p id='_'>Definition 2</p></verbaldefinition></definition>
560
+ <termsource status="identical" type="authoritative">
738
561
  <origin bibitemid="IEC60050-102" type="inline" citeas="IEC 60050-102:2007">
739
562
  <localityStack>
740
563
  <locality type="clause"><referenceFrom>102-01-02</referenceFrom></locality>
@@ -743,8 +566,9 @@ RSpec.describe Asciidoctor::Standoc do
743
566
  </termsource>
744
567
  </term>
745
568
  <term id="term-automation3">
746
- <preferred>Automation3</preferred>
747
- <termsource status="identical">
569
+ <preferred><expression><name>Automation3</name></expression></preferred>
570
+ <definition><verbaldefinition><p id='_'>Definition 3</p></verbaldefinition></definition>
571
+ <termsource status="identical" type="authoritative">
748
572
  <origin bibitemid="IEC60050-103" type="inline" citeas="IEC 60050-103:2009">
749
573
  <localityStack>
750
574
  <locality type="clause"><referenceFrom>103-01-02</referenceFrom></locality>
@@ -819,7 +643,7 @@ RSpec.describe Asciidoctor::Standoc do
819
643
  <abstract format="text/plain" language="en" script="Latn">IEC 60050-103:2009 gives the terminology relative to functions of one or more variables. Together with IEC 60050-102, it covers the mathematical terminology used in the fields of electricity, electronics and telecommunications. It maintains a clear distinction between mathematical concepts and physical concepts, even if some terms are used in both cases. Mathematical symbols are generally in accordance with IEC 60027-1 and ISO 80000-2. This standard cancels and replaces Sections 101-13, 101-14 and 101-15 of International Standard IEC 60050-101:1998. It has the status of a horizontal standard in accordance with IEC Guide 108.</abstract>
820
644
  <status>
821
645
  <stage>60</stage>
822
- <substage>00</substage>
646
+ <substage>60</substage>
823
647
  </status>
824
648
  <copyright>
825
649
  <from>2009</from>
@@ -962,23 +786,23 @@ RSpec.describe Asciidoctor::Standoc do
962
786
  it "cleans up nested mathvariant instances" do
963
787
  input = <<~INPUT
964
788
  #{ASCIIDOC_BLANK_HDR}
965
-
789
+
966
790
  stem:[sf "unitsml(cd)"]
967
791
  INPUT
968
792
  output = <<~OUTPUT
969
- <sections>
970
- <p id='_'>
971
- <stem type='MathML'>
972
- <math xmlns='http://www.w3.org/1998/Math/MathML'>
973
- <mstyle mathvariant='sans-serif'>
974
- <mrow xref='U_NISTu7'>
975
- <mi mathvariant='sans-serif'>cd</mi>
976
- </mrow>
977
- </mstyle>
978
- </math>
979
- </stem>
980
- </p>
981
- </sections>
793
+ <sections>
794
+ <p id='_'>
795
+ <stem type='MathML'>
796
+ <math xmlns='http://www.w3.org/1998/Math/MathML'>
797
+ <mstyle mathvariant='sans-serif'>
798
+ <mrow xref='U_NISTu7'>
799
+ <mi mathvariant='sans-serif'>cd</mi>
800
+ </mrow>
801
+ </mstyle>
802
+ </math>
803
+ </stem>
804
+ </p>
805
+ </sections>
982
806
  OUTPUT
983
807
  expect(xmlpp(strip_guid(Nokogiri::XML(
984
808
  Asciidoctor.convert(input, *OPTIONS),
@@ -1463,7 +1287,7 @@ RSpec.describe Asciidoctor::Standoc do
1463
1287
  <xref target='L__xf6_we'/>
1464
1288
  <sourcecode id='L__xf6_we'>
1465
1289
  <name>
1466
- See
1290
+ See
1467
1291
  <eref type='inline' bibitemid='L__xf6_wner2016' citeas='L&#246;wner et al. 2016'/>
1468
1292
  </name>
1469
1293
  ABC
@@ -1965,89 +1789,84 @@ RSpec.describe Asciidoctor::Standoc do
1965
1789
  .to be_equivalent_to xmlpp(output)
1966
1790
  end
1967
1791
 
1968
- private
1792
+ it "creates content-based GUIDs" do
1793
+ input = <<~INPUT
1794
+ #{ASCIIDOC_BLANK_HDR}
1969
1795
 
1970
- def mock_mathml_italicise(string)
1971
- allow_any_instance_of(::Asciidoctor::Standoc::Cleanup)
1972
- .to receive(:mathml_mi_italics).and_return(string)
1973
- end
1796
+ .Foreword
1797
+ Foreword
1974
1798
 
1975
- def mock_iecbib_get_iec60050_103_01
1976
- expect(Iecbib::IecBibliography).to receive(:get)
1977
- .with("IEC 60050-103", nil, { keep_year: true }) do
1978
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1979
- <bibitem type="standard" id="IEC60050-103">
1980
- <title format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary</title>
1981
- <docidentifier>IEC 60050-103:2009</docidentifier>
1982
- <date type="published">
1983
- <on>2009</on>
1984
- </date>
1985
- <contributor>
1986
- <role type="publisher"/>
1987
- <organization>
1988
- <name>International Electrotechnical Commission</name>
1989
- <abbreviation>IEC</abbreviation>
1990
- <uri>www.iec.ch</uri>
1991
- </organization>
1992
- </contributor>
1799
+ [NOTE,beforeclauses=true]
1800
+ ====
1801
+ Note which is very important <<a>>
1802
+ ====
1803
+
1804
+ == Introduction
1805
+ Introduction
1806
+
1807
+ == Scope
1808
+ Scope statement
1809
+
1810
+ [IMPORTANT,beforeclauses=true]
1811
+ ====
1812
+ Notice which is very important
1813
+ ====
1814
+ INPUT
1815
+ output = <<~OUTPUT
1816
+ <standard-document xmlns='https://www.metanorma.org/ns/standoc' type='semantic' version="#{Metanorma::Standoc::VERSION}">
1817
+ <bibdata type='standard'>
1818
+ <title language='en' format='text/plain'>Document title</title>
1993
1819
  <language>en</language>
1994
- <language>fr</language>
1995
1820
  <script>Latn</script>
1996
1821
  <status>
1997
- <stage>60</stage>
1822
+ <stage>published</stage>
1998
1823
  </status>
1999
1824
  <copyright>
2000
- <from>2018</from>
2001
- <owner>
2002
- <organization>
2003
- <name>International Electrotechnical Commission</name>
2004
- <abbreviation>IEC</abbreviation>
2005
- <uri>www.iec.ch</uri>
2006
- </organization>
2007
- </owner>
1825
+ <from>2021</from>
2008
1826
  </copyright>
2009
- </bibitem>
2010
- OUTPUT
2011
- end
1827
+ <ext>
1828
+ <doctype>article</doctype>
1829
+ </ext>
1830
+ </bibdata>
1831
+ <preface>
1832
+ <note id='_f91b621e-d8cb-30bf-eef6-7d0150204829'>
1833
+ <p id='_76d95913-a379-c60f-5144-1f09655cafa6'>
1834
+ Note which is very important
1835
+ <xref target='_76d95913-a379-c60f-5144-1f09655cafa6'/>
1836
+ </p>
1837
+ </note>
1838
+ <foreword id='_0826616f-13a4-0634-baee-5003c5534175' obligation='informative'>
1839
+ <title>Foreword</title>
1840
+ <p id='_d2f825bf-3e18-6143-8777-34e59928d48c'>Foreword</p>
1841
+ </foreword>
1842
+ <introduction id='_introduction' obligation='informative'>
1843
+ <title>Introduction</title>
1844
+ <p id='_272021ab-1bfa-78ae-e860-ed770e36f3d2'>Introduction</p>
1845
+ </introduction>
1846
+ </preface>
1847
+ <sections>
1848
+ <admonition id='_068def71-3ec8-0395-8853-0e2d3ef5b841' type='important'>
1849
+ <p id='_69ec375e-c992-5be3-76dd-a2311f9bb6cc'>Notice which is very important</p>
1850
+ </admonition>
1851
+ <clause id='_scope' type='scope' inline-header='false' obligation='normative'>
1852
+ <title>Scope</title>
1853
+ <p id='_fdcef9f1-c898-da99-eff6-f3e6abde7799'>Scope statement</p>
1854
+ </clause>
1855
+ </sections>
1856
+ </standard-document>
1857
+ OUTPUT
1858
+ input1 = xmlpp(Asciidoctor.convert(input, *OPTIONS))
1859
+ .sub(/<p id='([^']+)'>(\s+)Note which is very important(\s+)<xref target='a'/,
1860
+ "<p id='\\1'>\\2Note which is very important\\3<xref target='\\1'")
1861
+ expect(input1)
1862
+ .to be_equivalent_to xmlpp(output)
2012
1863
  end
2013
1864
 
2014
- def mock_iecbib_get_iec60050_102_01
2015
- expect(Iecbib::IecBibliography).to receive(:get)
2016
- .with("IEC 60050-102", nil, { keep_year: true }) do
2017
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
2018
- <bibitem type="standard" id="IEC60050-102">
2019
- <title format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary</title>
2020
- <docidentifier>IEC 60050-102:2007</docidentifier>
2021
- <date type="published">
2022
- <on>2007</on>
2023
- </date>
2024
- <contributor>
2025
- <role type="publisher"/>
2026
- <organization>
2027
- <name>International Electrotechnical Commission</name>
2028
- <abbreviation>IEC</abbreviation>
2029
- <uri>www.iec.ch</uri>
2030
- </organization>
2031
- </contributor>
2032
- <language>en</language>
2033
- <language>fr</language>
2034
- <script>Latn</script>
2035
- <status>
2036
- <stage>60</stage>
2037
- </status>
2038
- <copyright>
2039
- <from>2018</from>
2040
- <owner>
2041
- <organization>
2042
- <name>International Electrotechnical Commission</name>
2043
- <abbreviation>IEC</abbreviation>
2044
- <uri>www.iec.ch</uri>
2045
- </organization>
2046
- </owner>
2047
- </copyright>
2048
- </bibitem>
2049
- OUTPUT
2050
- end
1865
+ private
1866
+
1867
+ def mock_mathml_italicise(string)
1868
+ allow_any_instance_of(::Asciidoctor::Standoc::Cleanup)
1869
+ .to receive(:mathml_mi_italics).and_return(string)
2051
1870
  end
2052
1871
 
2053
1872
  def mock_iev