isodoc 1.7.3.1 → 1.7.4
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.
- checksums.yaml +4 -4
- data/isodoc.gemspec +1 -0
- data/lib/isodoc/convert.rb +1 -0
- data/lib/isodoc/function/blocks_example_note.rb +85 -79
- data/lib/isodoc/function/cleanup.rb +181 -175
- data/lib/isodoc/function/inline.rb +110 -108
- data/lib/isodoc/function/inline_simple.rb +55 -55
- data/lib/isodoc/function/lists.rb +75 -71
- data/lib/isodoc/function/references.rb +165 -160
- data/lib/isodoc/function/section.rb +140 -190
- data/lib/isodoc/function/section_titles.rb +82 -0
- data/lib/isodoc/function/table.rb +90 -87
- data/lib/isodoc/function/terms.rb +58 -56
- data/lib/isodoc/function/to_word_html.rb +1 -0
- data/lib/isodoc/html_function/mathvariant_to_plain.rb +5 -3
- data/lib/isodoc/presentation_function/math.rb +9 -0
- data/lib/isodoc/presentation_function/section.rb +12 -1
- data/lib/isodoc/presentation_xml_convert.rb +2 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +5 -5
- data/lib/isodoc/xslfo_convert.rb +2 -2
- data/spec/isodoc/blocks_spec.rb +147 -64
- data/spec/isodoc/inline_spec.rb +190 -89
- data/spec/isodoc/presentation_xml_spec.rb +84 -0
- data/spec/isodoc/section_spec.rb +639 -0
- metadata +17 -2
@@ -1,5 +1,6 @@
|
|
1
1
|
require "twitter_cldr"
|
2
2
|
require "bigdecimal"
|
3
|
+
require "mathml2asciimath"
|
3
4
|
|
4
5
|
module IsoDoc
|
5
6
|
class PresentationXMLConvert < ::IsoDoc::Convert
|
@@ -70,7 +71,15 @@ module IsoDoc
|
|
70
71
|
locale
|
71
72
|
end
|
72
73
|
|
74
|
+
def asciimath_dup(node)
|
75
|
+
return if @suppressasciimathdup
|
76
|
+
|
77
|
+
a = MathML2AsciiMath.m2a(node.to_xml)
|
78
|
+
node.next = "<!-- #{a} -->"
|
79
|
+
end
|
80
|
+
|
73
81
|
def mathml1(node, locale)
|
82
|
+
asciimath_dup(node)
|
74
83
|
localize_maths(node, locale)
|
75
84
|
return unless node.elements.size == 1 && node.elements.first.name == "mn"
|
76
85
|
|
@@ -78,12 +78,23 @@ module IsoDoc
|
|
78
78
|
i = display_order_at(docxml, "//clause[@type = 'scope']", i)
|
79
79
|
i = display_order_at(docxml, @xrefs.klass.norm_ref_xpath, i)
|
80
80
|
i = display_order_at(docxml, "//sections/terms | "\
|
81
|
-
|
81
|
+
"//sections/clause[descendant::terms]", i)
|
82
82
|
i = display_order_at(docxml, "//sections/definitions", i)
|
83
83
|
i = display_order_xpath(docxml, @xrefs.klass.middle_clause(docxml), i)
|
84
84
|
i = display_order_xpath(docxml, "//annex", i)
|
85
85
|
i = display_order_xpath(docxml, @xrefs.klass.bibliography_xpath, i)
|
86
86
|
display_order_xpath(docxml, "//indexsect", i)
|
87
87
|
end
|
88
|
+
|
89
|
+
def clausetitle(docxml)
|
90
|
+
docxml.xpath(ns("//variant-title[@type = 'toc']")).each(&:remove)
|
91
|
+
end
|
92
|
+
|
93
|
+
def toc(docxml)
|
94
|
+
docxml.xpath(ns("//toc//xref[text()]")).each do |x|
|
95
|
+
lbl = @xrefs.get[x["target"]][:label] or next
|
96
|
+
x.children.first.previous = "#{lbl}<tab/>"
|
97
|
+
end
|
98
|
+
end
|
88
99
|
end
|
89
100
|
end
|
data/lib/isodoc/version.rb
CHANGED
@@ -46,9 +46,9 @@ module IsoDoc::WordFunction
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
def insert_tab(out,
|
50
|
-
out.span **attr_code(style: "mso-tab-count:#{
|
51
|
-
[1..
|
49
|
+
def insert_tab(out, count)
|
50
|
+
out.span **attr_code(style: "mso-tab-count:#{count}") do |span|
|
51
|
+
[1..count].each { span << "  " }
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -137,7 +137,7 @@ module IsoDoc::WordFunction
|
|
137
137
|
name = node&.at(ns("./name"))&.remove
|
138
138
|
div.p **{ class: "Note" } do |p|
|
139
139
|
p.span **{ class: "note_label" } do |s|
|
140
|
-
name
|
140
|
+
name&.children&.each { |n| parse(n, s) }
|
141
141
|
end
|
142
142
|
insert_tab(p, 1)
|
143
143
|
node.first_element_child.children.each { |n| parse(n, p) }
|
@@ -149,7 +149,7 @@ module IsoDoc::WordFunction
|
|
149
149
|
name = node&.at(ns("./name"))&.remove
|
150
150
|
div.p **{ class: "Note" } do |p|
|
151
151
|
p.span **{ class: "note_label" } do |s|
|
152
|
-
name
|
152
|
+
name&.children&.each { |n| parse(n, s) }
|
153
153
|
end
|
154
154
|
insert_tab(p, 1)
|
155
155
|
end
|
data/lib/isodoc/xslfo_convert.rb
CHANGED
@@ -37,12 +37,12 @@ module IsoDoc
|
|
37
37
|
input_filename,
|
38
38
|
output_filename || "#{filename}.#{@suffix}",
|
39
39
|
File.join(@libdir, pdf_stylesheet(docxml)),
|
40
|
-
pdf_options(docxml)
|
40
|
+
pdf_options(docxml),
|
41
41
|
)
|
42
42
|
end
|
43
43
|
|
44
44
|
def xref_parse(node, out)
|
45
|
-
out.a(**{
|
45
|
+
out.a(**{ href: target_pdf(node) }) { |l| l << get_linkend(node) }
|
46
46
|
end
|
47
47
|
|
48
48
|
def input_xml_path(input_filename, xml_file, debug)
|
data/spec/isodoc/blocks_spec.rb
CHANGED
@@ -2534,73 +2534,156 @@ RSpec.describe IsoDoc do
|
|
2534
2534
|
</sections>
|
2535
2535
|
</standard-document>
|
2536
2536
|
INPUT
|
2537
|
+
presxml = <<~INPUT
|
2538
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc" type="presentation" version="1.10.2">
|
2539
|
+
<bibdata type="standard">
|
2540
|
+
<title language="en" format="text/plain">Document title</title>
|
2541
|
+
<language current="true">en</language>
|
2542
|
+
<script current="true">Latn</script>
|
2543
|
+
<status>
|
2544
|
+
<stage language="">published</stage>
|
2545
|
+
</status>
|
2546
|
+
<copyright>
|
2547
|
+
<from>2021</from>
|
2548
|
+
</copyright>
|
2549
|
+
<ext>
|
2550
|
+
<doctype language="">article</doctype>
|
2551
|
+
</ext>
|
2552
|
+
</bibdata>
|
2553
|
+
<sections>
|
2554
|
+
<clause id="clause1" inline-header="false" obligation="normative" displayorder="1">
|
2555
|
+
<title depth="1">1.<tab/>Clause 1</title>
|
2556
|
+
<clause id="clause1A" inline-header="false" obligation="normative">
|
2557
|
+
<title depth="2">1.1.<tab/>Clause 1A</title>
|
2558
|
+
<clause id="clause1Aa" inline-header="false" obligation="normative">
|
2559
|
+
<title depth="3">1.1.1.<tab/>Clause 1Aa</title>
|
2560
|
+
</clause>
|
2561
|
+
<clause id="clause1Ab" inline-header="false" obligation="normative">
|
2562
|
+
<title depth="3">1.1.2.<tab/>Clause 1Ab</title>
|
2563
|
+
</clause>
|
2564
|
+
</clause>
|
2565
|
+
<clause id="clause1B" inline-header="false" obligation="normative">
|
2566
|
+
<title depth="2">1.2.<tab/>Clause 1B</title>
|
2567
|
+
<clause id="clause1Ba" inline-header="false" obligation="normative">
|
2568
|
+
<title depth="3">1.2.1.<tab/>Clause 1Ba</title>
|
2569
|
+
</clause>
|
2570
|
+
</clause>
|
2571
|
+
</clause>
|
2572
|
+
<clause id="clause2" inline-header="false" obligation="normative" displayorder="2">
|
2573
|
+
<title depth="1">2.<tab/>Clause 2</title>
|
2574
|
+
<p id="A">And introducing: </p>
|
2575
|
+
<toc>
|
2576
|
+
<ul id="B">
|
2577
|
+
<li>
|
2578
|
+
<xref target="clause1A">1.1<tab/>Clause 1A</xref>
|
2579
|
+
</li>
|
2580
|
+
<li>
|
2581
|
+
<ul id="C">
|
2582
|
+
<li>
|
2583
|
+
<xref target="clause1Aa">1.1.1<tab/>Clause 1Aa</xref>
|
2584
|
+
</li>
|
2585
|
+
<li>
|
2586
|
+
<xref target="clause1Ab">1.1.2<tab/>Clause 1Ab</xref>
|
2587
|
+
</li>
|
2588
|
+
</ul>
|
2589
|
+
</li>
|
2590
|
+
<li>
|
2591
|
+
<xref target="clause1B">1.2<tab/>Clause 1B</xref>
|
2592
|
+
</li>
|
2593
|
+
<li>
|
2594
|
+
<ul id="D">
|
2595
|
+
<li>
|
2596
|
+
<xref target="clause1Ba">1.2.1<tab/>Clause 1Ba</xref>
|
2597
|
+
</li>
|
2598
|
+
</ul>
|
2599
|
+
</li>
|
2600
|
+
</ul>
|
2601
|
+
</toc>
|
2602
|
+
<toc>
|
2603
|
+
<ul id="E">
|
2604
|
+
<li>
|
2605
|
+
<xref target="clause1A">1.1<tab/>Clause 1A</xref>
|
2606
|
+
</li>
|
2607
|
+
<li>
|
2608
|
+
<xref target="clause1B">1.2<tab/>Clause 1B</xref>
|
2609
|
+
</li>
|
2610
|
+
</ul>
|
2611
|
+
</toc>
|
2612
|
+
</clause>
|
2613
|
+
</sections>
|
2614
|
+
</standard-document>
|
2615
|
+
INPUT
|
2537
2616
|
output = <<~OUTPUT
|
2538
2617
|
#{HTML_HDR}
|
2539
|
-
|
2540
|
-
|
2541
|
-
|
2542
|
-
|
2543
|
-
|
2544
|
-
|
2545
|
-
|
2546
|
-
|
2547
|
-
|
2548
|
-
|
2549
|
-
|
2550
|
-
|
2551
|
-
|
2552
|
-
|
2553
|
-
|
2554
|
-
|
2555
|
-
|
2556
|
-
|
2557
|
-
|
2558
|
-
|
2559
|
-
|
2560
|
-
|
2561
|
-
|
2562
|
-
|
2563
|
-
|
2564
|
-
|
2565
|
-
|
2566
|
-
|
2567
|
-
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
|
2576
|
-
|
2577
|
-
|
2578
|
-
|
2579
|
-
|
2580
|
-
|
2581
|
-
|
2582
|
-
|
2583
|
-
|
2584
|
-
|
2585
|
-
|
2586
|
-
|
2587
|
-
|
2588
|
-
|
2589
|
-
|
2590
|
-
|
2591
|
-
|
2592
|
-
|
2593
|
-
|
2594
|
-
|
2595
|
-
|
2596
|
-
|
2597
|
-
|
2598
|
-
|
2599
|
-
|
2600
|
-
|
2601
|
-
|
2618
|
+
<p class='zzSTDTitle1'>Document title</p>
|
2619
|
+
<div id='clause1'>
|
2620
|
+
<h1>1.  Clause 1</h1>
|
2621
|
+
<div id='clause1A'>
|
2622
|
+
<h2>1.1.  Clause 1A</h2>
|
2623
|
+
<div id='clause1Aa'>
|
2624
|
+
<h3>1.1.1.  Clause 1Aa</h3>
|
2625
|
+
</div>
|
2626
|
+
<div id='clause1Ab'>
|
2627
|
+
<h3>1.1.2.  Clause 1Ab</h3>
|
2628
|
+
</div>
|
2629
|
+
</div>
|
2630
|
+
<div id='clause1B'>
|
2631
|
+
<h2>1.2.  Clause 1B</h2>
|
2632
|
+
<div id='clause1Ba'>
|
2633
|
+
<h3>1.2.1.  Clause 1Ba</h3>
|
2634
|
+
</div>
|
2635
|
+
</div>
|
2636
|
+
</div>
|
2637
|
+
<div id='clause2'>
|
2638
|
+
<h1>2.  Clause 2</h1>
|
2639
|
+
<p id='A'>And introducing: </p>
|
2640
|
+
<div class='toc'>
|
2641
|
+
<ul id='B'>
|
2642
|
+
<li>
|
2643
|
+
<a href='#clause1A'>1.1  Clause 1A</a>
|
2644
|
+
</li>
|
2645
|
+
<li>
|
2646
|
+
<ul id='C'>
|
2647
|
+
<li>
|
2648
|
+
<a href='#clause1Aa'>1.1.1  Clause 1Aa</a>
|
2649
|
+
</li>
|
2650
|
+
<li>
|
2651
|
+
<a href='#clause1Ab'>1.1.2  Clause 1Ab</a>
|
2652
|
+
</li>
|
2653
|
+
</ul>
|
2654
|
+
</li>
|
2655
|
+
<li>
|
2656
|
+
<a href='#clause1B'>1.2  Clause 1B</a>
|
2657
|
+
</li>
|
2658
|
+
<li>
|
2659
|
+
<ul id='D'>
|
2660
|
+
<li>
|
2661
|
+
<a href='#clause1Ba'>1.2.1  Clause 1Ba</a>
|
2662
|
+
</li>
|
2663
|
+
</ul>
|
2664
|
+
</li>
|
2665
|
+
</ul>
|
2666
|
+
</div>
|
2667
|
+
<div class='toc'>
|
2668
|
+
<ul id='E'>
|
2669
|
+
<li>
|
2670
|
+
<a href='#clause1A'>1.1  Clause 1A</a>
|
2671
|
+
</li>
|
2672
|
+
<li>
|
2673
|
+
<a href='#clause1B'>1.2  Clause 1B</a>
|
2674
|
+
</li>
|
2675
|
+
</ul>
|
2676
|
+
</div>
|
2677
|
+
</div>
|
2678
|
+
</div>
|
2679
|
+
</body>
|
2680
|
+
</html>
|
2602
2681
|
OUTPUT
|
2682
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
2683
|
+
.convert("test", input, true)
|
2684
|
+
.sub(%r{<localized-strings>.*</localized-strings>}m, "")))
|
2685
|
+
.to be_equivalent_to xmlpp(presxml)
|
2603
2686
|
expect(xmlpp(IsoDoc::HtmlConvert.new({})
|
2604
|
-
.convert("test",
|
2687
|
+
.convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
|
2605
2688
|
end
|
2606
2689
|
end
|
data/spec/isodoc/inline_spec.rb
CHANGED
@@ -433,86 +433,86 @@ RSpec.describe IsoDoc do
|
|
433
433
|
</iso-standard>
|
434
434
|
INPUT
|
435
435
|
presxml = <<~OUTPUT
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
436
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
|
437
|
+
<preface><foreword displayorder="1">
|
438
|
+
<p>
|
439
|
+
<ul>
|
440
|
+
<li>
|
441
441
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
442
|
+
<em>term</em>
|
443
|
+
[term defined in <xref target="clause1">Clause 1</xref>],
|
444
|
+
</li>
|
445
|
+
<li>
|
446
|
+
<em>term</em>
|
447
|
+
[term defined in <xref target="clause1">Clause 1</xref>],
|
448
|
+
</li>
|
449
|
+
<li>
|
450
|
+
<em>term</em>
|
451
|
+
[term defined in <xref target="clause1">Clause 1</xref>],
|
452
|
+
</li>
|
449
453
|
<li>
|
450
|
-
|
451
|
-
|
452
|
-
|
454
|
+
term
|
455
|
+
[term defined in <xref target="clause1">Clause 1</xref>],
|
456
|
+
</li>
|
453
457
|
<li>
|
454
|
-
|
455
|
-
[term defined in <xref target="clause1">Clause 1</xref>],
|
456
|
-
</li>
|
457
|
-
<li>
|
458
|
-
<em>term</em>,
|
458
|
+
<em>term</em>,
|
459
459
|
|
460
|
-
|
461
|
-
|
462
|
-
|
460
|
+
</li>
|
461
|
+
<li>
|
462
|
+
term,
|
463
463
|
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
464
|
+
</li>
|
465
|
+
</ul></p>
|
466
|
+
</foreword></preface>
|
467
|
+
<sections>
|
468
|
+
<clause id="clause1" displayorder="2"><title depth="1">1.<tab/>Clause 1</title></clause>
|
469
|
+
</sections>
|
470
|
+
</iso-standard>
|
471
471
|
OUTPUT
|
472
472
|
output = <<~OUTPUT
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
473
|
+
#{HTML_HDR}
|
474
|
+
<br/>
|
475
|
+
<div>
|
476
|
+
<h1 class='ForewordTitle'>Foreword</h1>
|
477
|
+
<p>
|
478
|
+
<ul>
|
479
|
+
<li>
|
480
|
+
<i>term</i>
|
481
|
+
[term defined in
|
482
|
+
<a href='#clause1'>Clause 1</a>
|
483
|
+
],
|
484
|
+
</li>
|
485
|
+
<li>
|
486
|
+
<i>term</i>
|
487
|
+
[term defined in
|
488
|
+
<a href='#clause1'>Clause 1</a>
|
489
|
+
],
|
490
|
+
</li>
|
491
|
+
<li>
|
492
|
+
<i>term</i>
|
493
|
+
[term defined in
|
494
|
+
<a href='#clause1'>Clause 1</a>
|
495
|
+
],
|
496
|
+
</li>
|
497
|
+
<li>
|
498
|
+
term [term defined in
|
499
|
+
<a href='#clause1'>Clause 1</a>
|
500
|
+
],
|
501
|
+
</li>
|
502
|
+
<li>
|
503
|
+
<i>term</i>,
|
504
|
+
</li>
|
505
|
+
<li>term,</li>
|
506
|
+
</ul>
|
507
|
+
</p>
|
508
|
+
</div>
|
509
|
+
<p class='zzSTDTitle1'/>
|
510
|
+
<div id='clause1'>
|
511
|
+
<h1>1.  Clause 1</h1>
|
512
|
+
</div>
|
513
|
+
</div>
|
514
|
+
</body>
|
515
|
+
</html>
|
516
516
|
OUTPUT
|
517
517
|
expect((IsoDoc::PresentationXMLConvert.new({})
|
518
518
|
.convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
|
@@ -837,6 +837,102 @@ RSpec.describe IsoDoc do
|
|
837
837
|
.convert("test", input, true))).to be_equivalent_to xmlpp(output)
|
838
838
|
end
|
839
839
|
|
840
|
+
it "duplicates MathML with AsciiMath" do
|
841
|
+
input = <<~INPUT
|
842
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml" xmlns:m='http://www.w3.org/1998/Math/MathML'>
|
843
|
+
<preface><foreword>
|
844
|
+
<p>
|
845
|
+
<stem type="MathML"><m:math>
|
846
|
+
<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>
|
847
|
+
</m:math></stem>
|
848
|
+
</p>
|
849
|
+
</foreword></preface>
|
850
|
+
<sections>
|
851
|
+
</iso-standard>
|
852
|
+
INPUT
|
853
|
+
output = <<~OUTPUT
|
854
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml' xmlns:m='http://www.w3.org/1998/Math/MathML' type='presentation'>
|
855
|
+
<preface>
|
856
|
+
<foreword displayorder='1'>
|
857
|
+
<p>
|
858
|
+
<stem type='MathML'>
|
859
|
+
<m:math>
|
860
|
+
<m:msup>
|
861
|
+
<m:mrow>
|
862
|
+
<m:mo>(</m:mo>
|
863
|
+
<m:mrow>
|
864
|
+
<m:mi>x</m:mi>
|
865
|
+
<m:mo>+</m:mo>
|
866
|
+
<m:mi>y</m:mi>
|
867
|
+
</m:mrow>
|
868
|
+
<m:mo>)</m:mo>
|
869
|
+
</m:mrow>
|
870
|
+
<m:mn>2</m:mn>
|
871
|
+
</m:msup>
|
872
|
+
</m:math>
|
873
|
+
<comment> ( x + y )^2 </comment>
|
874
|
+
</stem>
|
875
|
+
</p>
|
876
|
+
</foreword>
|
877
|
+
</preface>
|
878
|
+
<sections> </sections>
|
879
|
+
</iso-standard>
|
880
|
+
OUTPUT
|
881
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
|
882
|
+
.convert("test", input, true)
|
883
|
+
.gsub("<!--", "<comment>")
|
884
|
+
.gsub("-->", "</comment>")))
|
885
|
+
.to be_equivalent_to xmlpp(output)
|
886
|
+
end
|
887
|
+
|
888
|
+
it "overrides duplication of MathML with AsciiMath" do
|
889
|
+
input = <<~INPUT
|
890
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml" xmlns:m='http://www.w3.org/1998/Math/MathML'>
|
891
|
+
<preface><foreword>
|
892
|
+
<p>
|
893
|
+
<stem type="MathML"><m:math>
|
894
|
+
<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>
|
895
|
+
</m:math></stem>
|
896
|
+
</p>
|
897
|
+
</foreword></preface>
|
898
|
+
<sections>
|
899
|
+
</iso-standard>
|
900
|
+
INPUT
|
901
|
+
output = <<~OUTPUT
|
902
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml' xmlns:m='http://www.w3.org/1998/Math/MathML' type='presentation'>
|
903
|
+
<preface>
|
904
|
+
<foreword displayorder='1'>
|
905
|
+
<p>
|
906
|
+
<stem type='MathML'>
|
907
|
+
<m:math>
|
908
|
+
<m:msup>
|
909
|
+
<m:mrow>
|
910
|
+
<m:mo>(</m:mo>
|
911
|
+
<m:mrow>
|
912
|
+
<m:mi>x</m:mi>
|
913
|
+
<m:mo>+</m:mo>
|
914
|
+
<m:mi>y</m:mi>
|
915
|
+
</m:mrow>
|
916
|
+
<m:mo>)</m:mo>
|
917
|
+
</m:mrow>
|
918
|
+
<m:mn>2</m:mn>
|
919
|
+
</m:msup>
|
920
|
+
</m:math>
|
921
|
+
</stem>
|
922
|
+
</p>
|
923
|
+
</foreword>
|
924
|
+
</preface>
|
925
|
+
<sections> </sections>
|
926
|
+
</iso-standard>
|
927
|
+
OUTPUT
|
928
|
+
expect(xmlpp(IsoDoc::PresentationXMLConvert
|
929
|
+
.new({ suppressasciimathdup: "true" })
|
930
|
+
.convert("test", input, true)
|
931
|
+
.gsub("<!--", "<comment>")
|
932
|
+
.gsub("-->", "</comment>")))
|
933
|
+
.to be_equivalent_to xmlpp(output)
|
934
|
+
end
|
935
|
+
|
840
936
|
it "processes eref types" do
|
841
937
|
input = <<~INPUT
|
842
938
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
@@ -863,22 +959,27 @@ RSpec.describe IsoDoc do
|
|
863
959
|
INPUT
|
864
960
|
output = <<~OUTPUT
|
865
961
|
#{HTML_HDR}
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
</
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
962
|
+
<br/>
|
963
|
+
<div>
|
964
|
+
<h1 class='ForewordTitle'>Foreword</h1>
|
965
|
+
<p>
|
966
|
+
<sup>
|
967
|
+
<a href='#ISO712'>A</a>
|
968
|
+
</sup>
|
969
|
+
<a href='#ISO712'>A</a>
|
970
|
+
</p>
|
971
|
+
</div>
|
972
|
+
<p class='zzSTDTitle1'/>
|
973
|
+
<div>
|
974
|
+
<h1>Normative References</h1>
|
975
|
+
<p id='ISO712' class='NormRef'>
|
976
|
+
ISO 712,
|
977
|
+
<i>Cereals and cereal products</i>
|
978
|
+
</p>
|
979
|
+
</div>
|
980
|
+
</div>
|
981
|
+
</body>
|
982
|
+
</html>
|
882
983
|
OUTPUT
|
883
984
|
expect(xmlpp(IsoDoc::HtmlConvert.new({})
|
884
985
|
.convert("test", input, true))).to be_equivalent_to xmlpp(output)
|