isodoc 1.7.0 → 1.7.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,7 @@ RSpec.describe IsoDoc do
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
7
  <sections>
8
8
  <clause id="A">
9
- <form action="/action_page.php" id="F0" name="F1">
9
+ <form action="/action_page.php" id="F0" name="F1" class="C">
10
10
  <label for="fname">First name:</label><br/>
11
11
  <input type="text" id="fname" name="fname"/><br/>
12
12
  <label for="lname">Last name:</label><br/>
@@ -46,111 +46,115 @@ RSpec.describe IsoDoc do
46
46
  INPUT
47
47
 
48
48
  html = <<~HTML
49
- #{HTML_HDR}
50
- <p class='zzSTDTitle1'/>
51
- <div id='A'>
52
- <h1/>
53
- <form id='F0' name='F1' action='/action_page.php'>
54
- <label for='fname'>First name:</label>
49
+ #{HTML_HDR}
50
+ <p class='zzSTDTitle1'/>
51
+ <div id='A'>
52
+ <h1/>
53
+ <form id='F0' name='F1' action='/action_page.php' class="C">
54
+ <label for='fname'>First name:</label>
55
+ <br/>
56
+ <input id='fname' name='fname' type='text'/>
57
+ <br/>
58
+ <label for='lname'>Last name:</label>
59
+ <br/>
60
+ <input id='lname' name='lname' type='text'/>
61
+ <br/>
62
+ <label for='pwd'>Password:</label>
63
+ <br/>
64
+ <input id='pwd' name='pwd' type='password'/>
65
+ <br/>
66
+ <input id='male' name='gender' type='radio' value='male'/>
67
+ <label for='male'>Male</label>
68
+ <br/>
69
+ <input id='female' name='gender' type='radio' value='female'/>
70
+ <label for='female'>Female</label>
71
+ <br/>
72
+ <input id='other' name='gender' type='radio' value='other'/>
73
+ <label for='other'>Other</label>
74
+ <br/>
75
+ <input id='vehicle1' name='vehicle1' type='checkbox' value='Bike' checked='true'/>
76
+ <label for='vehicle1'> I have a bike</label>
77
+ <br/>
78
+ <input id='vehicle2' name='vehicle2' type='checkbox' value='Car'/>
79
+ <label for='vehicle2'> I have a car</label>
80
+ <br/>
81
+ <input id='vehicle3' name='vehicle3' type='checkbox' value='Boat'/>
82
+ <label for='vehicle3'> I have a boat</label>
83
+ <br/>
84
+ <input id='birthday' name='birthday' type='date'/>
85
+ <br/>
86
+ <label for='myfile'>Select a file:</label>
87
+ <input id='myfile' name='myfile' type='file'/>
88
+ <br/>
89
+ <label for='cars'>Select a car:</label>
90
+ <select id='cars' name='cars'>
91
+ <option value='volvo'>Volvo</option>
92
+ <option value='saab'>Saab</option>
93
+ <option selected='true' value='fiat'>Fiat</option>
94
+ <option value='audi'>Audi</option>
95
+ </select>
96
+ <textarea id='t1' name='message' rows='10' cols='30'>The cat was playing in the garden.</textarea>
97
+ <input type='button' value='Click Me!'/>
98
+ <input type='button'/>
99
+ <input type='submit' value='Submit'/>
100
+ </form>
101
+ </div>
102
+ </div>
103
+ </body>
104
+ </html>
105
+ HTML
106
+
107
+ doc = <<~DOC
108
+ #{WORD_HDR}
109
+ <p class='zzSTDTitle1'/>
110
+ <div id='A'>
111
+ <h1/>
112
+ <div class="C" id="F0">
113
+ First name:
55
114
  <br/>
56
- <input id='fname' name='fname' type='text'/>
115
+ __________
57
116
  <br/>
58
- <label for='lname'>Last name:</label>
117
+ Last name:
59
118
  <br/>
60
- <input id='lname' name='lname' type='text'/>
119
+ __________
61
120
  <br/>
62
- <label for='pwd'>Password:</label>
121
+ Password:
63
122
  <br/>
64
- <input id='pwd' name='pwd' type='password'/>
123
+ __________
65
124
  <br/>
66
- <input id='male' name='gender' type='radio' value='male'/>
67
- <label for='male'>Male</label>
125
+ &#9678; Male
68
126
  <br/>
69
- <input id='female' name='gender' type='radio' value='female'/>
70
- <label for='female'>Female</label>
127
+ &#9678; Female
71
128
  <br/>
72
- <input id='other' name='gender' type='radio' value='other'/>
73
- <label for='other'>Other</label>
129
+ &#9678; Other
74
130
  <br/>
75
- <input id='vehicle1' name='vehicle1' type='checkbox' value='Bike' checked='true'/>
76
- <label for='vehicle1'> I have a bike</label>
131
+ &#9744; I have a bike
77
132
  <br/>
78
- <input id='vehicle2' name='vehicle2' type='checkbox' value='Car'/>
79
- <label for='vehicle2'> I have a car</label>
133
+ &#9744; I have a car
80
134
  <br/>
81
- <input id='vehicle3' name='vehicle3' type='checkbox' value='Boat'/>
82
- <label for='vehicle3'> I have a boat</label>
135
+ &#9744; I have a boat
83
136
  <br/>
84
- <input id='birthday' name='birthday' type='date'/>
137
+ __________
85
138
  <br/>
86
- <label for='myfile'>Select a file:</label>
87
- <input id='myfile' name='myfile' type='file'/>
139
+ Select a file: __________
88
140
  <br/>
89
- <label for='cars'>Select a car:</label>
90
- <select id='cars' name='cars'>
91
- <option value='volvo'>Volvo</option>
92
- <option value='saab'>Saab</option>
93
- <option selected='true' value='fiat'>Fiat</option>
94
- <option value='audi'>Audi</option>
95
- </select>
96
- <textarea id='t1' name='message' rows='10' cols='30'>The cat was playing in the garden.</textarea>
97
- <input type='button' value='Click Me!'/>
98
- <input type='button'/>
99
- <input type='submit' value='Submit'/>
100
- </form>
101
- </div>
102
- </div>
103
- </body>
104
- </html>
105
- HTML
106
-
107
- doc = <<~DOC
108
- #{WORD_HDR}
109
- <p class='zzSTDTitle1'/>
110
- <div id='A'>
111
- <h1/>
112
- First name:
113
- <br/>
114
- __________
115
- <br/>
116
- Last name:
117
- <br/>
118
- __________
119
- <br/>
120
- Password:
121
- <br/>
122
- __________
123
- <br/>
124
- &#9678; Male
125
- <br/>
126
- &#9678; Female
127
- <br/>
128
- &#9678; Other
129
- <br/>
130
- &#9744; I have a bike
131
- <br/>
132
- &#9744; I have a car
133
- <br/>
134
- &#9744; I have a boat
135
- <br/>
136
- __________
137
- <br/>
138
- Select a file: __________
139
- <br/>
140
- Select a car: __________
141
- <table border='1' width='50%'>
142
- <tr>
143
- <td/>
144
- </tr>
145
- </table>
146
- [Click Me!] [BUTTON]
141
+ Select a car: __________
142
+ <table border='1' width='50%'>
143
+ <tr>
144
+ <td/>
145
+ </tr>
146
+ </table>
147
+ [Click Me!] [BUTTON]
148
+ </div>
149
+ </div>
147
150
  </div>
148
- </div>
149
- </body>
150
- </html>
151
+ </body>
152
+ </html>
151
153
  DOC
152
154
 
153
- expect(xmlpp(IsoDoc::HtmlConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(html)
154
- expect(xmlpp(IsoDoc::WordConvert.new({}).convert("test", input, true))).to be_equivalent_to xmlpp(doc)
155
+ expect(xmlpp(IsoDoc::HtmlConvert.new({})
156
+ .convert("test", input, true))).to be_equivalent_to xmlpp(html)
157
+ expect(xmlpp(IsoDoc::WordConvert.new({})
158
+ .convert("test", input, true))).to be_equivalent_to xmlpp(doc)
155
159
  end
156
160
  end
@@ -139,7 +139,8 @@ RSpec.describe IsoDoc do
139
139
  <preface><foreword>
140
140
  <p>
141
141
  <ul>
142
- <li><concept><refterm>term</refterm>
142
+ <li>
143
+ <concept><refterm>term</refterm>
143
144
  <xref target='clause1'/>
144
145
  </concept></li>
145
146
  <li><concept><refterm>term</refterm>
@@ -208,6 +209,11 @@ RSpec.describe IsoDoc do
208
209
  <renderterm>word</renderterm>
209
210
  <termref base='IEV' target='135-13-13'>The IEV database</termref>
210
211
  </concept></li>
212
+ <li><concept><refterm>term</refterm>
213
+ <renderterm>word</renderterm>
214
+ <strong>error!</strong>
215
+ </concept>
216
+ </li>
211
217
  </ul>
212
218
  </p>
213
219
  </foreword></preface>
@@ -231,98 +237,90 @@ RSpec.describe IsoDoc do
231
237
  </iso-standard>
232
238
  INPUT
233
239
  presxml = <<~OUTPUT
234
- <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
235
- <preface><foreword displayorder="1">
236
- <p>
237
- <ul>
238
- <li>
239
- [term defined in <xref target="clause1">Clause 2</xref>]
240
- </li>
241
- <li>
242
- <em>term</em>
243
- [term defined in <xref target="clause1">Clause 2</xref>]
244
- </li>
245
- <li>
246
- <em>w[o]rd</em>
247
- [term defined in <xref target="clause1">Clause #1</xref>]
248
- </li>
249
- <li>
250
- <em>term</em>
251
- [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712">ISO 712</eref>]
252
- </li>
253
- <li>
254
- <em>word</em>
255
- [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712">The Aforementioned Citation</eref>]
256
- </li>
257
- <li>
258
- <em>word</em>
259
- [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712"><locality type="clause">
260
- <referenceFrom>3.1</referenceFrom>
261
- </locality><locality type="figure">
262
- <referenceFrom>a</referenceFrom>
263
- </locality>ISO 712, Clause 3.1, Figure a</eref>]
264
- </li>
265
- <li>
266
- <em>word</em>
267
- [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712"><localityStack>
268
- <locality type="clause">
269
- <referenceFrom>3.1</referenceFrom>
270
- </locality>
271
- </localityStack><localityStack>
272
- <locality type="figure">
273
- <referenceFrom>b</referenceFrom>
274
- </locality>
275
- </localityStack>ISO 712, Clause 3.1; Figure b</eref>]
276
- </li>
277
- <li>
278
- <em>word</em>
279
- [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712">
280
- <localityStack>
281
- <locality type="clause">
282
- <referenceFrom>3.1</referenceFrom>
283
- </locality>
284
- </localityStack>
285
- <localityStack>
286
- <locality type="figure">
287
- <referenceFrom>b</referenceFrom>
288
- </locality>
289
- </localityStack>
290
- The Aforementioned Citation
291
- </eref>]
292
- </li>
293
- <li>
294
- <em>word</em>
295
- [term defined in <termref base="IEV" target="135-13-13"/>]
296
- </li>
297
- <li>
298
- <em>word</em>
299
- [term defined in <termref base="IEV" target="135-13-13">The IEV database</termref>]
300
- </li>
301
- </ul>
302
- </p>
303
- </foreword></preface>
304
- <sections>
305
- <clause id="clause1" displayorder="3"><title depth="1">2.<tab/>Clause 1</title></clause>
306
- </sections>
307
- <bibliography><references id="_normative_references" obligation="informative" normative="true" displayorder="2"><title depth="1">1.<tab/>Normative References</title>
308
- <p>The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
309
- <bibitem id="ISO712" type="standard">
310
- <title format="text/plain">Cereals or cereal products</title>
311
- <title type="main" format="text/plain">Cereals and cereal products</title>
312
- <docidentifier type="ISO">ISO 712</docidentifier>
313
- <contributor>
314
- <role type="publisher"/>
315
- <organization>
316
- <name>International Organization for Standardization</name>
317
- </organization>
318
- </contributor>
319
- </bibitem>
320
- </references></bibliography>
321
- </iso-standard>
240
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
241
+ <preface><foreword displayorder="1">
242
+ <p>
243
+ <ul>
244
+ <li>
245
+ [term defined in <xref target="clause1">Clause 2</xref>]
246
+ </li>
247
+ <li>
248
+ <em>term</em> [term defined in <xref target="clause1">Clause 2</xref>]
249
+ </li>
250
+ <li>
251
+ <em>w[o]rd</em> [<xref target="clause1">Clause #1</xref>]
252
+ </li>
253
+ <li>
254
+ <em>term</em> [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712">ISO 712</eref>]
255
+ </li>
256
+ <li>
257
+ <em>word</em> [<eref bibitemid="ISO712" type="inline" citeas="ISO 712">The Aforementioned Citation</eref>]
258
+ </li>
259
+ <li>
260
+ <em>word</em> [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712"><locality type="clause">
261
+ <referenceFrom>3.1</referenceFrom>
262
+ </locality><locality type="figure">
263
+ <referenceFrom>a</referenceFrom>
264
+ </locality>ISO 712, Clause 3.1, Figure a</eref>]
265
+ </li>
266
+ <li>
267
+ <em>word</em> [term defined in <eref bibitemid="ISO712" type="inline" citeas="ISO 712"><localityStack>
268
+ <locality type="clause">
269
+ <referenceFrom>3.1</referenceFrom>
270
+ </locality>
271
+ </localityStack><localityStack>
272
+ <locality type="figure">
273
+ <referenceFrom>b</referenceFrom>
274
+ </locality>
275
+ </localityStack>ISO 712, Clause 3.1; Figure b</eref>]
276
+ </li>
277
+ <li>
278
+ <em>word</em> [<eref bibitemid="ISO712" type="inline" citeas="ISO 712">
279
+ <localityStack>
280
+ <locality type="clause">
281
+ <referenceFrom>3.1</referenceFrom>
282
+ </locality>
283
+ </localityStack>
284
+ <localityStack>
285
+ <locality type="figure">
286
+ <referenceFrom>b</referenceFrom>
287
+ </locality>
288
+ </localityStack>
289
+ The Aforementioned Citation
290
+ </eref>]
291
+ </li>
292
+ <li>
293
+ <em>word</em> [term defined in <termref base="IEV" target="135-13-13"/>]
294
+ </li>
295
+ <li>
296
+ <em>word</em> [<termref base="IEV" target="135-13-13">The IEV database</termref>]
297
+ </li>
298
+ <li> <em>word</em> <strong>error!</strong> </li>
299
+ </ul>
300
+ </p>
301
+ </foreword></preface>
302
+ <sections>
303
+ <clause id="clause1" displayorder="3"><title depth="1">2.<tab/>Clause 1</title></clause>
304
+ </sections>
305
+ <bibliography><references id="_normative_references" obligation="informative" normative="true" displayorder="2"><title depth="1">1.<tab/>Normative References</title>
306
+ <p>The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>
307
+ <bibitem id="ISO712" type="standard">
308
+ <title format="text/plain">Cereals or cereal products</title>
309
+ <title type="main" format="text/plain">Cereals and cereal products</title>
310
+ <docidentifier type="ISO">ISO 712</docidentifier>
311
+ <contributor>
312
+ <role type="publisher"/>
313
+ <organization>
314
+ <name>International Organization for Standardization</name>
315
+ </organization>
316
+ </contributor>
317
+ </bibitem>
318
+ </references></bibliography>
319
+ </iso-standard>
322
320
  OUTPUT
323
321
  output = <<~OUTPUT
324
322
  #{HTML_HDR}
325
- <br/>
323
+ <br/>
326
324
  <div>
327
325
  <h1 class='ForewordTitle'>Foreword</h1>
328
326
  <p>
@@ -340,7 +338,7 @@ RSpec.describe IsoDoc do
340
338
  </li>
341
339
  <li>
342
340
  <i>w[o]rd</i>
343
- [term defined in
341
+ [
344
342
  <a href='#clause1'>Clause #1</a>
345
343
  ]
346
344
  </li>
@@ -352,7 +350,7 @@ RSpec.describe IsoDoc do
352
350
  </li>
353
351
  <li>
354
352
  <i>word</i>
355
- [term defined in
353
+ [
356
354
  <a href='#ISO712'>The Aforementioned Citation</a>
357
355
  ]
358
356
  </li>
@@ -370,7 +368,7 @@ RSpec.describe IsoDoc do
370
368
  </li>
371
369
  <li>
372
370
  <i>word</i>
373
- [term defined in
371
+ [
374
372
  <a href='#ISO712'> The Aforementioned Citation </a>
375
373
  ]
376
374
  </li>
@@ -380,8 +378,9 @@ RSpec.describe IsoDoc do
380
378
  </li>
381
379
  <li>
382
380
  <i>word</i>
383
- [term defined in Termbase IEV, term ID 135-13-13]
381
+ [The IEV database]
384
382
  </li>
383
+ <li> <i>word</i> <b>error!</b> </li>
385
384
  </ul>
386
385
  </p>
387
386
  </div>
@@ -413,6 +412,198 @@ RSpec.describe IsoDoc do
413
412
  .convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
414
413
  end
415
414
 
415
+ it "processes concept attributes" do
416
+ input = <<~INPUT
417
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
418
+ <preface><foreword>
419
+ <p>
420
+ <ul>
421
+ <li>
422
+ <concept ital="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
423
+ <li><concept ref="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
424
+ <li><concept ital="true" ref="true"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
425
+ <li><concept ital="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
426
+ <li><concept ref="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
427
+ <li><concept ital="false" ref="false"><refterm>term</refterm><renderterm>term</renderterm><xref target='clause1'/></concept>,</li>
428
+ </ul></p>
429
+ </foreword></preface>
430
+ <sections>
431
+ <clause id="clause1"><title>Clause 1</title></clause>
432
+ </sections>
433
+ </iso-standard>
434
+ INPUT
435
+ presxml = <<~OUTPUT
436
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
437
+ <preface><foreword displayorder="1">
438
+ <p>
439
+ <ul>
440
+ <li>
441
+
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>
453
+ <li>
454
+ term
455
+ [term defined in <xref target="clause1">Clause 1</xref>],
456
+ </li>
457
+ <li>
458
+ <em>term</em>,
459
+
460
+ </li>
461
+ <li>
462
+ term,
463
+
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
+ OUTPUT
472
+ output = <<~OUTPUT
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.&#160; Clause 1</h1>
512
+ </div>
513
+ </div>
514
+ </body>
515
+ </html>
516
+ OUTPUT
517
+ expect((IsoDoc::PresentationXMLConvert.new({})
518
+ .convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
519
+ expect(xmlpp(IsoDoc::HtmlConvert.new({})
520
+ .convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
521
+ end
522
+
523
+ it "processes concept markup for symbols" do
524
+ input = <<~INPUT
525
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
526
+ <preface><foreword>
527
+ <p>
528
+ <ul>
529
+ <li><concept>
530
+ <refterm>term</refterm>
531
+ <renderterm>ISO</renderterm>
532
+ <xref target='d1'/>
533
+ </concept></li>
534
+ </ul>
535
+ </p>
536
+ </foreword>
537
+ </preface>
538
+ <sections>
539
+ <definitions id="d">
540
+ <dl>
541
+ <dt id="d1">ISO</dt> <dd>xyz</xyz>
542
+ <dt id="d2">IEC</dt> <dd>abc</xyz>
543
+ </dl>
544
+ </definitions>
545
+ </sections>
546
+ </iso-standard>
547
+ INPUT
548
+ presxml = <<~OUTPUT
549
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
550
+ <preface>
551
+ <foreword displayorder='1'>
552
+ <p>
553
+ <ul>
554
+ <li>ISO</li>
555
+ </ul>
556
+ </p>
557
+ </foreword>
558
+ </preface>
559
+ <sections>
560
+ <definitions id='d' displayorder='2'>
561
+ <title>1.</title>
562
+ <dl>
563
+ <dt id='d1'>ISO</dt>
564
+ <dd>xyz</dd>
565
+ <dt id='d2'>IEC</dt>
566
+ <dd>abc</dd>
567
+ </dl>
568
+ </definitions>
569
+ </sections>
570
+ </iso-standard>
571
+ OUTPUT
572
+ output = <<~OUTPUT
573
+ #{HTML_HDR}
574
+ <br/>
575
+ <div>
576
+ <h1 class='ForewordTitle'>Foreword</h1>
577
+ <p>
578
+ <ul>
579
+ <li>ISO</li>
580
+ </ul>
581
+ </p>
582
+ </div>
583
+ <p class='zzSTDTitle1'/>
584
+ <div id='d' class='Symbols'>
585
+ <h1>1.</h1>
586
+ <dl>
587
+ <dt id='d1'>
588
+ <p>ISO</p>
589
+ </dt>
590
+ <dd>xyz</dd>
591
+ <dt id='d2'>
592
+ <p>IEC</p>
593
+ </dt>
594
+ <dd>abc</dd>
595
+ </dl>
596
+ </div>
597
+ </div>
598
+ </body>
599
+ </html>
600
+ OUTPUT
601
+ expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
602
+ .convert("test", input, true))).to be_equivalent_to xmlpp(presxml)
603
+ expect(xmlpp(IsoDoc::HtmlConvert.new({})
604
+ .convert("test", presxml, true))).to be_equivalent_to xmlpp(output)
605
+ end
606
+
416
607
  it "processes embedded inline formatting" do
417
608
  input = <<~INPUT
418
609
  <iso-standard xmlns="http://riboseinc.com/isoxml">
@@ -733,43 +924,43 @@ RSpec.describe IsoDoc do
733
924
  </iso-standard>
734
925
  INPUT
735
926
  presxml = <<~OUTPUT
736
- <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
737
- <preface><foreword displayorder="1">
738
- <p>
739
- <eref type="inline" bibitemid="ISO712" citeas="ISO 712">ISO 712</eref>
740
- <eref type="inline" bibitemid="ISO712">ISO 712</eref>
741
- <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>ISO 712, Table 1</eref>
742
- <eref type="inline" bibitemid="ISO712"><localityStack><locality type="table"><referenceFrom>1</referenceFrom></locality></localityStack>ISO 712, Table 1</eref>
743
- <eref type="inline" bibitemid="ISO712"><localityStack><locality type="table"><referenceFrom>1</referenceFrom></locality></localityStack><localityStack><locality type="clause"><referenceFrom>1</referenceFrom></locality></localityStack>ISO 712, Table 1; Clause 1</eref>
744
- <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712, Table 1&#x2013;1</eref>
745
- <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality><locality type="table"><referenceFrom>1</referenceFrom></locality>ISO 712, Clause 1, Table 1</eref>
746
- <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, Clause 1</eref>
747
- <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1.5</referenceFrom></locality>ISO 712, Clause 1.5</eref>
748
- <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>A</eref>
749
- <eref type="inline" bibitemid="ISO712"><locality type="whole"/>ISO 712, Whole of text</eref>
750
- <eref type="inline" bibitemid="ISO712"><locality type="locality:prelude"><referenceFrom>7</referenceFrom></locality>ISO 712, Prelude 7</eref>
751
- <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</eref>
752
- <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality>ISO 712</eref>
753
- <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, Clause 1</eref>
754
- <eref type="inline" droploc="true" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, 1</eref>
755
- <eref type="inline" case="lowercase" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, clause 1</eref>
756
- </p>
757
- </foreword></preface>
758
- <bibliography><references id="_normative_references" obligation="informative" normative="true" displayorder=
759
- "2"><title depth='1'>1.<tab/>Normative References</title>
760
- <bibitem id="ISO712" type="standard">
761
- <title format="text/plain">Cereals and cereal products</title>
762
- <docidentifier>ISO 712</docidentifier>
763
- <contributor>
764
- <role type="publisher"/>
765
- <organization>
766
- <abbreviation>ISO</abbreviation>
767
- </organization>
768
- </contributor>
769
- </bibitem>
770
- </references>
771
- </bibliography>
772
- </iso-standard>
927
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
928
+ <preface><foreword displayorder="1">
929
+ <p>
930
+ <eref type="inline" bibitemid="ISO712" citeas="ISO 712">ISO 712</eref>
931
+ <eref type="inline" bibitemid="ISO712">ISO 712</eref>
932
+ <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>ISO 712, Table 1</eref>
933
+ <eref type="inline" bibitemid="ISO712"><localityStack><locality type="table"><referenceFrom>1</referenceFrom></locality></localityStack>ISO 712, Table 1</eref>
934
+ <eref type="inline" bibitemid="ISO712"><localityStack><locality type="table"><referenceFrom>1</referenceFrom></locality></localityStack><localityStack><locality type="clause"><referenceFrom>1</referenceFrom></locality></localityStack>ISO 712, Table 1; Clause 1</eref>
935
+ <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom><referenceTo>1</referenceTo></locality>ISO 712, Table 1&#x2013;1</eref>
936
+ <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality><locality type="table"><referenceFrom>1</referenceFrom></locality>ISO 712, Clause 1, Table 1</eref>
937
+ <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, Clause 1</eref>
938
+ <eref type="inline" bibitemid="ISO712"><locality type="clause"><referenceFrom>1.5</referenceFrom></locality>ISO 712, Clause 1.5</eref>
939
+ <eref type="inline" bibitemid="ISO712"><locality type="table"><referenceFrom>1</referenceFrom></locality>A</eref>
940
+ <eref type="inline" bibitemid="ISO712"><locality type="whole"/>ISO 712, Whole of text</eref>
941
+ <eref type="inline" bibitemid="ISO712"><locality type="locality:prelude"><referenceFrom>7</referenceFrom></locality>ISO 712, Prelude 7</eref>
942
+ <eref type="inline" bibitemid="ISO712" citeas="ISO 712">A</eref>
943
+ <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality>ISO 712</eref>
944
+ <eref type="inline" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, Clause 1</eref>
945
+ <eref type="inline" droploc="true" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, 1</eref>
946
+ <eref type="inline" case="lowercase" bibitemid="ISO712"><locality type="anchor"><referenceFrom>1</referenceFrom></locality><locality type="clause"><referenceFrom>1</referenceFrom></locality>ISO 712, clause 1</eref>
947
+ </p>
948
+ </foreword></preface>
949
+ <bibliography><references id="_normative_references" obligation="informative" normative="true" displayorder=
950
+ "2"><title depth='1'>1.<tab/>Normative References</title>
951
+ <bibitem id="ISO712" type="standard">
952
+ <title format="text/plain">Cereals and cereal products</title>
953
+ <docidentifier>ISO 712</docidentifier>
954
+ <contributor>
955
+ <role type="publisher"/>
956
+ <organization>
957
+ <abbreviation>ISO</abbreviation>
958
+ </organization>
959
+ </contributor>
960
+ </bibitem>
961
+ </references>
962
+ </bibliography>
963
+ </iso-standard>
773
964
  OUTPUT
774
965
 
775
966
  html = <<~OUTPUT
@@ -1092,36 +1283,36 @@ RSpec.describe IsoDoc do
1092
1283
  </iso-standard>
1093
1284
  INPUT
1094
1285
  output = <<~OUTPUT
1095
- <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
1096
- <bibdata>
1097
- <language current='true'>en</language>
1098
- <script current='true'>Latn</script>
1099
- </bibdata>
1100
- <preface>
1101
- <clause id='A' displayorder='1'>
1102
- <title depth='1'>ABC</title>
1103
- </clause>
1104
- <clause id='A1' displayorder='2'>
1105
- <title depth='1'>ABC/DEF</title>
1106
- </clause>
1107
- <clause id='A2' displayorder='3'>
1108
- <title depth='1'>ABC</title>
1109
- </clause>
1110
- <clause id='B' displayorder='4'>
1111
- <title depth='1'>GHI/JKL</title>
1112
- </clause>
1113
- <clause id='C' displayorder='5'>
1114
- <title depth='1'>DEF</title>
1115
- </clause>
1116
- <clause id='C1' displayorder='6'>
1117
- <title depth='1'>ABC/DEF</title>
1118
- </clause>
1119
- <clause id='C2' displayorder='7'>
1120
- <title depth='1'>DEF</title>
1121
- </clause>
1122
- <p displayorder='8'>A B D E</p>
1123
- </preface>
1124
- </iso-standard>
1286
+ <iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
1287
+ <bibdata>
1288
+ <language current='true'>en</language>
1289
+ <script current='true'>Latn</script>
1290
+ </bibdata>
1291
+ <preface>
1292
+ <clause id='A' displayorder='1'>
1293
+ <title depth='1'>ABC</title>
1294
+ </clause>
1295
+ <clause id='A1' displayorder='2'>
1296
+ <title depth='1'>ABC/DEF</title>
1297
+ </clause>
1298
+ <clause id='A2' displayorder='3'>
1299
+ <title depth='1'>ABC</title>
1300
+ </clause>
1301
+ <clause id='B' displayorder='4'>
1302
+ <title depth='1'>GHI/JKL</title>
1303
+ </clause>
1304
+ <clause id='C' displayorder='5'>
1305
+ <title depth='1'>DEF</title>
1306
+ </clause>
1307
+ <clause id='C1' displayorder='6'>
1308
+ <title depth='1'>ABC/DEF</title>
1309
+ </clause>
1310
+ <clause id='C2' displayorder='7'>
1311
+ <title depth='1'>DEF</title>
1312
+ </clause>
1313
+ <p displayorder='8'>A B D E</p>
1314
+ </preface>
1315
+ </iso-standard>
1125
1316
  OUTPUT
1126
1317
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
1127
1318
  .convert("test", input, true)