isodoc 1.0.6 → 1.0.7

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.
@@ -3,7 +3,7 @@ require "nokogiri"
3
3
 
4
4
  RSpec.describe IsoDoc do
5
5
  it "cleans up admonitions" do
6
- expect(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
6
+ expect(xmlpp(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
7
7
  <html>
8
8
  <body>
9
9
  <div class="Admonition">
@@ -26,7 +26,7 @@ RSpec.describe IsoDoc do
26
26
  end
27
27
 
28
28
  it "cleans up figures" do
29
- expect(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
29
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
30
30
  <html xmlns:epub="http://www.idpf.org/2007/ops">
31
31
  <body>
32
32
  <div class="figure">
@@ -53,7 +53,7 @@ RSpec.describe IsoDoc do
53
53
  end
54
54
 
55
55
  it "cleans up figures (Word)" do
56
- expect(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
56
+ expect(xmlpp(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
57
57
  <html xmlns:epub="http://www.idpf.org/2007/ops">
58
58
  <body>
59
59
  <div class="figure">
@@ -80,7 +80,7 @@ RSpec.describe IsoDoc do
80
80
  end
81
81
 
82
82
  it "cleans up inline headers" do
83
- expect(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
83
+ expect(xmlpp(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
84
84
  <html xmlns:epub="http://www.idpf.org/2007/ops">
85
85
  <head>
86
86
  <title>test</title>
@@ -149,7 +149,7 @@ RSpec.describe IsoDoc do
149
149
  end
150
150
 
151
151
  it "cleans up footnotes" do
152
- expect(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
152
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
153
153
  #{HTML_HDR}
154
154
  <br/>
155
155
  <div>
@@ -191,7 +191,7 @@ RSpec.describe IsoDoc do
191
191
  end
192
192
 
193
193
  it "cleans up footnotes (Word)" do
194
- expect(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
194
+ expect(xmlpp(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
195
195
  <html xmlns:epub="http://www.idpf.org/2007/ops" lang="en">
196
196
  <head/>
197
197
  <body lang="EN-US" link="blue" vlink="#954F72">
@@ -262,7 +262,7 @@ RSpec.describe IsoDoc do
262
262
  end
263
263
 
264
264
  it "cleans up tables with tfoot" do
265
- expect(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
265
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
266
266
  <html xmlns:epub="http://www.idpf.org/2007/ops">
267
267
  <head>
268
268
  <title>test</title>
@@ -419,7 +419,7 @@ INPUT
419
419
  end
420
420
 
421
421
  it "cleans up tables with tfoot (Word)" do
422
- expect(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
422
+ expect(xmlpp(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
423
423
  <html xmlns:epub="http://www.idpf.org/2007/ops">
424
424
  <head>
425
425
  <title>test</title>
@@ -577,7 +577,7 @@ INPUT
577
577
 
578
578
 
579
579
  it "cleans up tables without tfoot" do
580
- expect(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
580
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
581
581
  <html xmlns:epub="http://www.idpf.org/2007/ops">
582
582
  <head>
583
583
  <title>test</title>
@@ -716,7 +716,7 @@ INPUT
716
716
  end
717
717
 
718
718
  it "cleans up symbols lists" do
719
- expect(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s).to be_equivalent_to <<~"OUTPUT"
719
+ expect(xmlpp(IsoDoc::WordConvert.new({}).cleanup(Nokogiri::XML(<<~"INPUT")).to_s)).to be_equivalent_to xmlpp(<<~"OUTPUT")
720
720
  <div id="L" class="Symbols">
721
721
  <h1>4.<span style="mso-tab-count:1">&#160; </span>Symbols and Abbreviated Terms</h1>
722
722
  <dl>
@@ -3,7 +3,7 @@ require "fileutils"
3
3
 
4
4
  RSpec.describe IsoDoc do
5
5
  it "processes IsoXML footnotes" do
6
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
6
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
7
7
  <iso-standard xmlns="http://riboseinc.com/isoxml">
8
8
  <preface>
9
9
  <foreword>
@@ -42,7 +42,7 @@ RSpec.describe IsoDoc do
42
42
  end
43
43
 
44
44
  it "processes IsoXML footnotes (Word)" do
45
- expect(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
45
+ expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
46
46
  <iso-standard xmlns="http://riboseinc.com/isoxml">
47
47
  <preface>
48
48
  <foreword>
@@ -114,7 +114,7 @@ RSpec.describe IsoDoc do
114
114
  </iso-standard>
115
115
  INPUT
116
116
  html = File.read("test.html").sub(/^.*<body/m, "<body").sub(%r{</body>.*$}m, "</body>")
117
- expect(html).to be_equivalent_to <<~"OUTPUT"
117
+ expect(xmlpp(html)).to be_equivalent_to xmlpp(<<~"OUTPUT")
118
118
  <body lang="en" xml:lang="en">
119
119
  <div class="title-section">
120
120
  <p>&#xA0;</p>
@@ -168,7 +168,7 @@ RSpec.describe IsoDoc do
168
168
  </iso-standard>
169
169
  INPUT
170
170
  html = File.read("test.doc").sub(/^.*<body/m, "<body").sub(%r{</body>.*$}m, "</body>")
171
- expect(html).to be_equivalent_to <<~"OUTPUT"
171
+ expect(xmlpp(html)).to be_equivalent_to xmlpp(<<~"OUTPUT")
172
172
  <body lang="EN-US" link="blue" vlink="#954F72" xml:lang="EN-US">
173
173
  <div class="WordSection1">
174
174
  <p class="MsoNormal">&#xA0;</p>
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
4
  it "processes English" do
5
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
5
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
7
  <bibdata>
8
8
  <language>en</language>
@@ -138,7 +138,7 @@ RSpec.describe IsoDoc do
138
138
  end
139
139
 
140
140
  it "defaults to English" do
141
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
141
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
142
142
  <iso-standard xmlns="http://riboseinc.com/isoxml">
143
143
  <bibdata>
144
144
  <language>tlh</language>
@@ -274,7 +274,7 @@ RSpec.describe IsoDoc do
274
274
  end
275
275
 
276
276
  it "processes French" do
277
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
277
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
278
278
  <iso-standard xmlns="http://riboseinc.com/isoxml">
279
279
  <bibdata>
280
280
  <language>fr</language>
@@ -410,7 +410,7 @@ RSpec.describe IsoDoc do
410
410
  end
411
411
 
412
412
  it "processes Simplified Chinese" do
413
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
413
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
414
414
  <iso-standard xmlns="http://riboseinc.com/isoxml">
415
415
  <bibdata>
416
416
  <language>zh</language>
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
4
  it "processes inline formatting" do
5
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
5
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
7
  <preface><foreword>
8
8
  <p>
@@ -32,7 +32,7 @@ RSpec.describe IsoDoc do
32
32
  end
33
33
 
34
34
  it "processes embedded inline formatting" do
35
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
35
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
36
36
  <iso-standard xmlns="http://riboseinc.com/isoxml">
37
37
  <preface><foreword>
38
38
  <p>
@@ -58,7 +58,7 @@ RSpec.describe IsoDoc do
58
58
  end
59
59
 
60
60
  it "processes links" do
61
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
61
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
62
62
  <iso-standard xmlns="http://riboseinc.com/isoxml">
63
63
  <preface><foreword>
64
64
  <p>
@@ -92,7 +92,7 @@ RSpec.describe IsoDoc do
92
92
  end
93
93
 
94
94
  it "processes unrecognised markup" do
95
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
95
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
96
96
  <iso-standard xmlns="http://riboseinc.com/isoxml">
97
97
  <preface><foreword>
98
98
  <p>
@@ -118,7 +118,7 @@ RSpec.describe IsoDoc do
118
118
  end
119
119
 
120
120
  it "processes AsciiMath and MathML" do
121
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
121
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true).sub(/<html/, "<html xmlns:m='m'"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
122
122
  <iso-standard xmlns="http://riboseinc.com/isoxml">
123
123
  <preface><foreword>
124
124
  <p>
@@ -130,7 +130,7 @@ RSpec.describe IsoDoc do
130
130
  <sections>
131
131
  </iso-standard>
132
132
  INPUT
133
- #{HTML_HDR}
133
+ #{HTML_HDR.sub(/<html/, "<html xmlns:m='m'")}
134
134
  <br/>
135
135
  <div>
136
136
  <h1 class="ForewordTitle">Foreword</h1>
@@ -150,7 +150,7 @@ RSpec.describe IsoDoc do
150
150
  end
151
151
 
152
152
  it "overrides AsciiMath delimiters" do
153
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
153
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
154
154
  <iso-standard xmlns="http://riboseinc.com/isoxml">
155
155
  <preface><foreword>
156
156
  <p>
@@ -178,7 +178,7 @@ RSpec.describe IsoDoc do
178
178
  end
179
179
 
180
180
  it "processes eref types" do
181
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
181
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
182
182
  <iso-standard xmlns="http://riboseinc.com/isoxml">
183
183
  <preface><foreword>
184
184
  <p>
@@ -222,7 +222,7 @@ RSpec.describe IsoDoc do
222
222
  end
223
223
 
224
224
  it "processes eref content" do
225
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
225
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
226
226
  <iso-standard xmlns="http://riboseinc.com/isoxml">
227
227
  <preface><foreword>
228
228
  <p>
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  RSpec.describe IsoDoc do
4
4
  it "processes unordered lists" do
5
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
5
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
7
  <preface><foreword>
8
8
  <ul id="_61961034-0fb1-436b-b281-828857a59ddb">
@@ -37,7 +37,7 @@ RSpec.describe IsoDoc do
37
37
  end
38
38
 
39
39
  it "processes ordered lists" do
40
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
40
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
41
41
  <iso-standard xmlns="http://riboseinc.com/isoxml">
42
42
  <preface><foreword>
43
43
  <ol id="_ae34a226-aab4-496d-987b-1aa7b6314026" type="alphabet">
@@ -86,7 +86,7 @@ RSpec.describe IsoDoc do
86
86
  end
87
87
 
88
88
  it "processes Roman Upper ordered lists" do
89
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
89
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
90
90
  <iso-standard xmlns="http://riboseinc.com/isoxml">
91
91
  <preface><foreword>
92
92
  <ol id="_ae34a226-aab4-496d-987b-1aa7b6314026" type="roman_upper">
@@ -127,7 +127,7 @@ RSpec.describe IsoDoc do
127
127
  end
128
128
 
129
129
  it "processes definition lists" do
130
- expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
130
+ expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
131
131
  <iso-standard xmlns="http://riboseinc.com/isoxml">
132
132
  <preface><foreword>
133
133
  <dl id="_732d3f57-4f88-40bf-9ae9-633891edc395">
@@ -176,7 +176,7 @@ RSpec.describe IsoDoc do
176
176
  end
177
177
 
178
178
  it "processes definition lists (Word)" do
179
- expect(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
179
+ expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", <<~"INPUT", true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
180
180
  <iso-standard xmlns="http://riboseinc.com/isoxml">
181
181
  <preface><foreword>
182
182
  <dl id="_732d3f57-4f88-40bf-9ae9-633891edc395">
@@ -208,7 +208,7 @@ RSpec.describe IsoDoc do
208
208
  INPUT
209
209
  word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
210
210
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "")
211
- expect(word).to be_equivalent_to <<~"OUTPUT"
211
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
212
212
  <div class="WordSection2">
213
213
  <p class="MsoNormal"><br clear="all" style="mso-special-character:line-break;page-break-before:always"/></p>
214
214
  <div>
@@ -257,7 +257,7 @@ RSpec.describe IsoDoc do
257
257
  INPUT
258
258
  word = File.read("test.doc").sub(/^.*<div class="WordSection3">/m, '<div class="WordSection3">').
259
259
  sub(%r{<div style="mso-element:footnote-list"/>.*$}m, "")
260
- expect(word).to be_equivalent_to <<~"OUTPUT"
260
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
261
261
  <div class="WordSection3">
262
262
  <p class="zzSTDTitle1"></p>
263
263
  <div><a name="_terms_and_definitions" id="_terms_and_definitions"></a><h1>1.<span style="mso-tab-count:1">&#xA0; </span>Terms and definitions</h1>
@@ -320,7 +320,7 @@ ICAgICAgIDogRU5EIERPQyBJRAoKRklMRU5BTUU6IHRlc3QKCg==
320
320
  INPUT
321
321
  word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
322
322
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "")
323
- expect(word.gsub(/_Toc\d\d+/, "_Toc")).to be_equivalent_to <<~'OUTPUT'
323
+ expect(xmlpp(word.gsub(/_Toc\d\d+/, "_Toc"))).to be_equivalent_to xmlpp(<<~'OUTPUT')
324
324
  <div class="WordSection2">
325
325
  /* an empty word intro page */
326
326
 
@@ -402,7 +402,7 @@ ICAgICAgIDogRU5EIERPQyBJRAoKRklMRU5BTUU6IHRlc3QKCg==
402
402
  INPUT
403
403
  word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
404
404
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "")
405
- expect(word.gsub(/_Toc\d\d+/, "_Toc")).to be_equivalent_to <<~'OUTPUT'
405
+ expect(xmlpp(word.gsub(/_Toc\d\d+/, "_Toc"))).to be_equivalent_to xmlpp(<<~'OUTPUT')
406
406
  <div class="WordSection2">
407
407
  /* an empty word intro page */
408
408
 
@@ -512,10 +512,10 @@ TOCLEVEL
512
512
  </sections>
513
513
  </iso-standard>
514
514
  INPUT
515
- html = File.read("test.html").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
515
+ html = File.read("test.html").sub(/^.*<main class="main-section">/m, '<main xmlns:epub="epub" class="main-section">').
516
516
  sub(%r{</main>.*$}m, "</main>")
517
- expect(html).to be_equivalent_to <<~"OUTPUT"
518
- <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
517
+ expect(xmlpp(html)).to be_equivalent_to xmlpp(<<~"OUTPUT")
518
+ <main xmlns:epub="epub" class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
519
519
  <p class="zzSTDTitle1"></p>
520
520
  <div>
521
521
  <h1>1.&#xA0; Clause 4</h1>
@@ -563,7 +563,7 @@ TOCLEVEL
563
563
  html = File.read("test.html").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
564
564
  sub(%r{</main>.*$}m, "</main>")
565
565
  expect(`ls test_htmlimages`).to match(/\.png$/)
566
- expect(html.gsub(/\/[0-9a-f-]+\.png/, "/_.png")).to be_equivalent_to <<~"OUTPUT"
566
+ expect(xmlpp(html.gsub(/\/[0-9a-f-]+\.png/, "/_.png"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
567
567
  <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
568
568
  <br />
569
569
  <div>
@@ -599,7 +599,7 @@ TOCLEVEL
599
599
  html = File.read("spec/test.html").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
600
600
  sub(%r{</main>.*$}m, "</main>")
601
601
  expect(`ls test_htmlimages`).to match(/\.png$/)
602
- expect(html.gsub(/\/[0-9a-f-]+\.png/, "/_.png")).to be_equivalent_to <<~"OUTPUT"
602
+ expect(xmlpp(html.gsub(/\/[0-9a-f-]+\.png/, "/_.png"))).to be_equivalent_to xmlpp(<<~"OUTPUT")
603
603
  <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
604
604
  <br />
605
605
  <div>
@@ -631,7 +631,7 @@ TOCLEVEL
631
631
  INPUT
632
632
  html = File.read("test.html").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
633
633
  sub(%r{</main>.*$}m, "</main>")
634
- expect(html.gsub(%r{src="data:image/png;base64,[^"]+"}, %{src="data:image/png;base64,_"})).to be_equivalent_to <<~"OUTPUT"
634
+ expect(xmlpp(html.gsub(%r{src="data:image/png;base64,[^"]+"}, %{src="data:image/png;base64,_"}))).to be_equivalent_to xmlpp(<<~"OUTPUT")
635
635
  <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
636
636
  <br />
637
637
  <div>
@@ -770,10 +770,10 @@ TOCLEVEL
770
770
  </foreword></preface>
771
771
  </iso-standard>
772
772
  INPUT
773
- word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
773
+ word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2" xmlns:m="m">').
774
774
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "")
775
- expect(word).to be_equivalent_to <<~"OUTPUT"
776
- <div class="WordSection2">
775
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
776
+ <div class="WordSection2" xmlns:m="m">
777
777
  <p class="MsoNormal">
778
778
  <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
779
779
  </p>
@@ -818,7 +818,7 @@ TOCLEVEL
818
818
  INPUT
819
819
  html = File.read("test.html").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
820
820
  sub(%r{</main>.*$}m, "</main>")
821
- expect(html).to be_equivalent_to <<~"OUTPUT"
821
+ expect(xmlpp(html)).to be_equivalent_to xmlpp(<<~"OUTPUT")
822
822
  <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
823
823
  <br />
824
824
  <div>
@@ -846,7 +846,7 @@ TOCLEVEL
846
846
  INPUT
847
847
  word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
848
848
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "")
849
- expect(word).to be_equivalent_to <<~"OUTPUT"
849
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
850
850
  <div class="WordSection2">
851
851
  <p class="MsoNormal">
852
852
  <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
@@ -875,7 +875,7 @@ TOCLEVEL
875
875
  INPUT
876
876
  word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
877
877
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "")
878
- expect(word).to be_equivalent_to <<~"OUTPUT"
878
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
879
879
  <div class="WordSection2">
880
880
  <p class="MsoNormal">
881
881
  <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
@@ -907,7 +907,7 @@ FileUtils.rm_f "test.doc"
907
907
  word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
908
908
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "").
909
909
  sub(/src="[^"]+"/, 'src="_"')
910
- expect(word).to be_equivalent_to <<~"OUTPUT"
910
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
911
911
  <div class="WordSection2">
912
912
  <p class="MsoNormal">
913
913
  <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
@@ -932,7 +932,7 @@ FileUtils.rm_f "test.doc"
932
932
  <iso-standard xmlns="http://riboseinc.com/isoxml">
933
933
  <preface><foreword>
934
934
  <table id="_fe12b8f8-6858-4cd6-af7d-d4b6f3ebd1a7" unnumbered="true"><thead><tr>
935
- <td rowspan="2" align="left">
935
+ <td rowspan="2">
936
936
  <p id="_c47d9b39-adb2-431d-9320-78cb148fdb56">Output wavelength <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mrow><mo>(</mo><mi>μ</mi><mi>m</mi><mo>)</mo></mrow></math></stem></p>
937
937
  </td>
938
938
  <th colspan="3" align="left">Predictive wavelengths</th>
@@ -942,11 +942,11 @@ FileUtils.rm_f "test.doc"
942
942
  </preface>
943
943
  </iso-standard>
944
944
  INPUT
945
- word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2">').
945
+ word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2" xmlns:m="m">').
946
946
  sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "").
947
947
  sub(/src="[^"]+"/, 'src="_"')
948
- expect(word).to be_equivalent_to <<~"OUTPUT"
949
- <div class="WordSection2">
948
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
949
+ <div class="WordSection2" xmlns:m="m">
950
950
  <p class="MsoNormal">
951
951
  <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
952
952
  </p>
@@ -957,7 +957,7 @@ word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="
957
957
  <table class="MsoISOTable" style="mso-table-lspace:15.0cm;margin-left:423.0pt;mso-table-rspace:15.0cm;margin-right:423.0pt;mso-table-bspace:14.2pt;mso-table-anchor-vertical:paragraph;mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;"><a name="_fe12b8f8-6858-4cd6-af7d-d4b6f3ebd1a7" id="_fe12b8f8-6858-4cd6-af7d-d4b6f3ebd1a7"></a>
958
958
  <thead>
959
959
  <tr>
960
- <td rowspan="2" align="left" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">
960
+ <td rowspan="2" style="border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;">
961
961
  <p class="MsoNormal"><a name="_c47d9b39-adb2-431d-9320-78cb148fdb56" id="_c47d9b39-adb2-431d-9320-78cb148fdb56"></a>Output wavelength <span class="stem"><m:oMath>
962
962
 
963
963
  <m:r><m:t>(&#x3BC;m)</m:t></m:r>
@@ -979,5 +979,64 @@ word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="
979
979
  OUTPUT
980
980
  end
981
981
 
982
+ it "propagates alignment of table cells (Word)" do
983
+ FileUtils.rm_f "test.doc"
984
+ FileUtils.rm_f "test.html"
985
+ IsoDoc::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", <<~"INPUT", false)
986
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
987
+ <preface><foreword>
988
+ <table id="_fe12b8f8-6858-4cd6-af7d-d4b6f3ebd1a7" unnumbered="true"><thead><tr>
989
+ <td rowspan="2" align="left">
990
+ <p id="_c47d9b39-adb2-431d-9320-78cb148fdb56">Output wavelength</p>
991
+ <p id="_c47d9b39-adb2-431d-9320-78cb148fdb57">Output wavelength</p>
992
+ </td>
993
+ <th colspan="3" align="right"><p id="_c47d9b39-adb2-431d-9320-78cb148fdb58">Predictive wavelengths</p></th>
994
+ </tr>
995
+ </thead>
996
+ </table>
997
+ </preface>
998
+ </iso-standard>
999
+ INPUT
1000
+ word = File.read("test.doc").sub(/^.*<div class="WordSection2">/m, '<div class="WordSection2" xmlns:m="m">').
1001
+ sub(%r{<p class="MsoNormal">\s*<br clear="all" class="section"/>\s*</p>\s*<div class="WordSection3">.*$}m, "").
1002
+ sub(/src="[^"]+"/, 'src="_"')
1003
+ expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
1004
+ <div class='WordSection2' xmlns:m='m'>
1005
+ <p class='MsoNormal'>
1006
+ <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
1007
+ </p>
1008
+ <div>
1009
+ <h1 class='ForewordTitle'>Foreword</h1>
1010
+ <p class='TableTitle' style='text-align:center;font-size:0pt;'>&#xA0;</p>
1011
+ <div align='center'>
1012
+ <table class='MsoISOTable' style='mso-table-lspace:15.0cm;margin-left:423.0pt;mso-table-rspace:15.0cm;margin-right:423.0pt;mso-table-bspace:14.2pt;mso-table-anchor-vertical:paragraph;mso-table-anchor-horizontal:column;mso-table-overlap:never;border-spacing:0;border-width:1px;'>
1013
+ <a name='_fe12b8f8-6858-4cd6-af7d-d4b6f3ebd1a7' id='_fe12b8f8-6858-4cd6-af7d-d4b6f3ebd1a7'/>
1014
+ <thead>
1015
+ <tr>
1016
+ <td rowspan='2' align='left' style='border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.0pt;mso-border-bottom-alt:solid windowtext 1.0pt;'>
1017
+ <p style='text-align: left' class='MsoNormal'>
1018
+ <a name='_c47d9b39-adb2-431d-9320-78cb148fdb56' id='_c47d9b39-adb2-431d-9320-78cb148fdb56'/>
1019
+ Output wavelength
1020
+ </p>
1021
+ <p style='text-align: left' class='MsoNormal'>
1022
+ <a name='_c47d9b39-adb2-431d-9320-78cb148fdb57' id='_c47d9b39-adb2-431d-9320-78cb148fdb57'/>
1023
+ Output wavelength
1024
+ </p>
1025
+ </td>
1026
+ <th colspan='3' align='right' style='font-weight:bold;border-top:solid windowtext 1.5pt;mso-border-top-alt:solid windowtext 1.5pt;border-bottom:solid windowtext 1.5pt;mso-border-bottom-alt:solid windowtext 1.5pt;'>
1027
+ <p style='text-align: right' class='MsoNormal'>
1028
+ <a name='_c47d9b39-adb2-431d-9320-78cb148fdb58' id='_c47d9b39-adb2-431d-9320-78cb148fdb58'/>
1029
+ Predictive wavelengths
1030
+ </p>
1031
+ </th>
1032
+ </tr>
1033
+ </thead>
1034
+ </table>
1035
+ </div>
1036
+ </div>
1037
+ <p class='MsoNormal'>&#xA0;</p>
1038
+ </div>
1039
+ OUTPUT
1040
+ end
982
1041
 
983
1042
  end