metanorma-iso 1.8.0 → 1.8.5
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/.github/workflows/rake.yml +3 -13
- data/.hound.yml +3 -1
- data/.rubocop.yml +4 -8
- data/lib/asciidoctor/iso/base.rb +14 -11
- data/lib/asciidoctor/iso/biblio.rng +1 -0
- data/lib/asciidoctor/iso/cleanup.rb +40 -24
- data/lib/asciidoctor/iso/front.rb +28 -16
- data/lib/asciidoctor/iso/front_id.rb +66 -50
- data/lib/asciidoctor/iso/isodoc.rng +191 -3
- data/lib/asciidoctor/iso/isostandard-amd.rng +3 -0
- data/lib/asciidoctor/iso/isostandard.rng +12 -0
- data/lib/asciidoctor/iso/section.rb +2 -1
- data/lib/asciidoctor/iso/validate.rb +22 -110
- data/lib/asciidoctor/iso/validate_image.rb +97 -0
- data/lib/asciidoctor/iso/validate_requirements.rb +26 -20
- data/lib/asciidoctor/iso/validate_section.rb +55 -29
- data/lib/asciidoctor/iso/validate_style.rb +36 -24
- data/lib/asciidoctor/iso/validate_title.rb +2 -4
- data/lib/isodoc/iso/base_convert.rb +20 -14
- data/lib/isodoc/iso/html/isodoc.css +475 -20
- data/lib/isodoc/iso/html/isodoc.scss +456 -23
- data/lib/isodoc/iso/html/wordstyle.css +202 -31
- data/lib/isodoc/iso/html/wordstyle.scss +194 -32
- data/lib/isodoc/iso/iso.amendment.xsl +666 -193
- data/lib/isodoc/iso/iso.international-standard.xsl +666 -193
- data/lib/isodoc/iso/metadata.rb +3 -2
- data/lib/isodoc/iso/presentation_xml_convert.rb +15 -14
- data/lib/isodoc/iso/sts_convert.rb +10 -13
- data/lib/isodoc/iso/word_convert.rb +153 -39
- data/lib/isodoc/iso/xref.rb +44 -29
- data/lib/metanorma/iso/processor.rb +1 -0
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +3 -3
- data/spec/asciidoctor/base_spec.rb +426 -305
- data/spec/asciidoctor/blocks_spec.rb +96 -34
- data/spec/asciidoctor/cleanup_spec.rb +383 -25
- data/spec/asciidoctor/section_spec.rb +0 -14
- data/spec/asciidoctor/validate_spec.rb +218 -83
- data/spec/isodoc/amd_spec.rb +193 -201
- data/spec/isodoc/blocks_spec.rb +100 -88
- data/spec/isodoc/i18n_spec.rb +36 -36
- data/spec/isodoc/inline_spec.rb +2 -2
- data/spec/isodoc/iso_spec.rb +86 -138
- data/spec/isodoc/postproc_spec.rb +492 -442
- data/spec/isodoc/ref_spec.rb +6 -6
- data/spec/isodoc/section_spec.rb +301 -306
- data/spec/isodoc/table_spec.rb +166 -231
- data/spec/isodoc/terms_spec.rb +11 -8
- data/spec/isodoc/xref_spec.rb +147 -118
- data/spec/spec_helper.rb +16 -15
- metadata +8 -7
data/spec/isodoc/amd_spec.rb
CHANGED
@@ -75,7 +75,7 @@ RSpec.describe IsoDoc do
|
|
75
75
|
</ext>
|
76
76
|
</bibdata>
|
77
77
|
<preface>
|
78
|
-
<foreword>
|
78
|
+
<foreword displayorder="1">
|
79
79
|
<p>
|
80
80
|
<xref target="N">Scope, Note</xref>
|
81
81
|
<xref target="note1">Widgets, 1, Note 1</xref>
|
@@ -87,7 +87,7 @@ RSpec.describe IsoDoc do
|
|
87
87
|
</foreword>
|
88
88
|
</preface>
|
89
89
|
<sections>
|
90
|
-
<clause id="scope">
|
90
|
+
<clause id="scope" displayorder="3">
|
91
91
|
<title depth="1">Scope</title>
|
92
92
|
<note id="N">
|
93
93
|
<name>NOTE</name>
|
@@ -99,8 +99,8 @@ RSpec.describe IsoDoc do
|
|
99
99
|
<xref target="N">Note</xref>
|
100
100
|
</p>
|
101
101
|
</clause>
|
102
|
-
<terms id="terms"/>
|
103
|
-
<clause id="widgets">
|
102
|
+
<terms id="terms" displayorder="2"/>
|
103
|
+
<clause id="widgets" displayorder="4">
|
104
104
|
<title depth="1">Widgets</title>
|
105
105
|
<clause id="widgets1" inline-header="true">
|
106
106
|
<note id="note1">
|
@@ -122,7 +122,7 @@ RSpec.describe IsoDoc do
|
|
122
122
|
</clause>
|
123
123
|
</clause>
|
124
124
|
</sections>
|
125
|
-
<annex id="annex1">
|
125
|
+
<annex id="annex1" displayorder="5">
|
126
126
|
<title>
|
127
127
|
<strong>Annex A</strong>
|
128
128
|
<br/>(informative)</title>
|
@@ -235,97 +235,102 @@ RSpec.describe IsoDoc do
|
|
235
235
|
INPUT
|
236
236
|
expect(xmlpp(output).sub(%r{<localized-strings>.*</localized-strings>}m, ""))
|
237
237
|
.to be_equivalent_to xmlpp(<<~"OUTPUT")
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
238
|
+
<iso-standard xmlns='http://riboseinc.com/isoxml' type='presentation'>
|
239
|
+
<bibdata>
|
240
|
+
<ext>
|
241
|
+
<doctype language=''>amendment</doctype>
|
242
|
+
</ext>
|
243
|
+
</bibdata>
|
244
|
+
|
245
|
+
<preface>
|
246
|
+
<foreword obligation='informative' displayorder='1'>
|
247
|
+
<title>Foreword</title>
|
248
|
+
<p id='A'>
|
249
|
+
This is a preamble
|
250
|
+
<xref target='C'>0.1</xref>
|
251
|
+
<xref target='C1'>0.2</xref>
|
252
|
+
<xref target='D'>Scope</xref>
|
253
|
+
<xref target='H'>[H]</xref>
|
254
|
+
<xref target='I'>[I]</xref>
|
255
|
+
<xref target='J'>[J]</xref>
|
256
|
+
<xref target='K'>[K]</xref>
|
257
|
+
<xref target='L'>[L]</xref>
|
258
|
+
<xref target='M'>Clause 4</xref>
|
259
|
+
<xref target='N'>Introduction</xref>
|
260
|
+
<xref target='O'>Clause 4.2</xref>
|
261
|
+
<xref target='P'>Annex A</xref>
|
262
|
+
<xref target='Q'>A.1</xref>
|
263
|
+
<xref target='Q1'>A.1.1</xref>
|
264
|
+
<xref target='Q2'>Annex A, Appendix 1</xref>
|
265
|
+
<xref target='R'>[R]</xref>
|
266
|
+
</p>
|
267
|
+
</foreword>
|
268
|
+
<introduction id='B' obligation='informative' displayorder='2'>
|
269
|
+
<title depth='1'>Introduction</title>
|
270
|
+
<clause id='C' inline-header='false' obligation='informative'>
|
271
|
+
<title depth='2'>Introduction Subsection</title>
|
272
|
+
</clause>
|
273
|
+
<clause id='C1' inline-header='true' obligation='informative'>Text</clause>
|
274
|
+
</introduction>
|
275
|
+
</preface>
|
276
|
+
<sections>
|
277
|
+
<clause id='D' obligation='normative' type='scope' displayorder='3'>
|
278
|
+
<title depth='1'>Scope</title>
|
279
|
+
<p id='E'>Text</p>
|
280
|
+
</clause>
|
281
|
+
<clause id='M' inline-header='false' obligation='normative' displayorder='5'>
|
282
|
+
<title depth='1'>Clause 4</title>
|
283
|
+
<clause id='N' inline-header='false' obligation='normative'>
|
284
|
+
<title depth='2'>Introduction</title>
|
285
|
+
</clause>
|
286
|
+
<clause id='O' inline-header='false' obligation='normative'>
|
287
|
+
<title depth='2'>Clause 4.2</title>
|
288
|
+
</clause>
|
289
|
+
</clause>
|
290
|
+
</sections>
|
291
|
+
<annex id='P' inline-header='false' obligation='normative' displayorder='6'>
|
292
|
+
<title>
|
293
|
+
<strong>Annex A</strong>
|
294
|
+
<br/>
|
295
|
+
(normative)
|
296
|
+
<br/>
|
297
|
+
<br/>
|
298
|
+
<strong>Annex</strong>
|
299
|
+
</title>
|
300
|
+
<clause id='Q' inline-header='false' obligation='normative'>
|
301
|
+
<title depth='2'>
|
302
|
+
A.1
|
303
|
+
<tab/>
|
304
|
+
Annex A.1
|
305
|
+
</title>
|
306
|
+
<clause id='Q1' inline-header='false' obligation='normative'>
|
307
|
+
<title depth='3'>
|
308
|
+
A.1.1
|
309
|
+
<tab/>
|
310
|
+
Annex A.1a
|
311
|
+
</title>
|
312
|
+
</clause>
|
313
|
+
</clause>
|
314
|
+
<appendix id='Q2' inline-header='false' obligation='normative'>
|
315
|
+
<title depth='2'>
|
316
|
+
Appendix 1
|
317
|
+
<tab/>
|
318
|
+
An Appendix
|
319
|
+
</title>
|
320
|
+
</appendix>
|
321
|
+
</annex>
|
322
|
+
<bibliography>
|
323
|
+
<references id='R' normative='true' obligation='informative' displayorder='4'>
|
324
|
+
<title depth='1'>Normative References</title>
|
325
|
+
</references>
|
326
|
+
<clause id='S' obligation='informative' displayorder='7'>
|
327
|
+
<title depth='1'>Bibliography</title>
|
328
|
+
<references id='T' normative='false' obligation='informative'>
|
329
|
+
<title depth='2'>Bibliography Subsection</title>
|
330
|
+
</references>
|
331
|
+
</clause>
|
332
|
+
</bibliography>
|
333
|
+
</iso-standard>
|
329
334
|
OUTPUT
|
330
335
|
end
|
331
336
|
|
@@ -423,109 +428,96 @@ RSpec.describe IsoDoc do
|
|
423
428
|
</iso-standard>
|
424
429
|
INPUT
|
425
430
|
presxml = <<~OUTPUT
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
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
|
-
|
516
|
-
</annex>
|
517
|
-
<bibliography>
|
518
|
-
<references id="R" normative="true" obligation="informative">
|
519
|
-
<title depth="1">Normative References</title>
|
520
|
-
</references>
|
521
|
-
<clause id="S" obligation="informative">
|
522
|
-
<title depth="1">Bibliography</title>
|
523
|
-
<references id="T" normative="false" obligation="informative">
|
524
|
-
<title depth="2">Bibliography Subsection</title>
|
525
|
-
</references>
|
526
|
-
</clause>
|
527
|
-
</bibliography>
|
528
|
-
</iso-standard>
|
431
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
|
432
|
+
<bibdata>
|
433
|
+
<ext>
|
434
|
+
<doctype language="">amendment</doctype>
|
435
|
+
</ext>
|
436
|
+
</bibdata>
|
437
|
+
<boilerplate>
|
438
|
+
<copyright-statement>
|
439
|
+
<clause>
|
440
|
+
<title depth="1">Copyright</title>
|
441
|
+
</clause>
|
442
|
+
</copyright-statement>
|
443
|
+
<license-statement>
|
444
|
+
<clause>
|
445
|
+
<title depth="1">License</title>
|
446
|
+
</clause>
|
447
|
+
</license-statement>
|
448
|
+
<legal-statement>
|
449
|
+
<clause>
|
450
|
+
<title depth="1">Legal</title>
|
451
|
+
</clause>
|
452
|
+
</legal-statement>
|
453
|
+
<feedback-statement>
|
454
|
+
<clause>
|
455
|
+
<title depth="1">Feedback</title>
|
456
|
+
</clause>
|
457
|
+
</feedback-statement>
|
458
|
+
</boilerplate>
|
459
|
+
<preface>
|
460
|
+
<abstract obligation="informative" displayorder="1">
|
461
|
+
<title>Abstract</title>
|
462
|
+
</abstract>
|
463
|
+
<foreword obligation="informative" displayorder="2">
|
464
|
+
<title>Foreword</title>
|
465
|
+
<p id="A">This is a preamble</p>
|
466
|
+
</foreword>
|
467
|
+
<introduction id="B" obligation="informative" displayorder="3">
|
468
|
+
<title depth="1">Introduction</title>
|
469
|
+
<clause id="C" inline-header="false" obligation="informative">
|
470
|
+
<title depth="2">Introduction Subsection</title>
|
471
|
+
</clause>
|
472
|
+
</introduction>
|
473
|
+
<clause id="B1" displayorder="4">
|
474
|
+
<title depth="1">Dedication</title>
|
475
|
+
</clause>
|
476
|
+
<clause id="B2" displayorder="5">
|
477
|
+
<title depth="1">Note to reader</title>
|
478
|
+
</clause>
|
479
|
+
<acknowledgements obligation="informative" displayorder="6">
|
480
|
+
<title>Acknowledgements</title>
|
481
|
+
</acknowledgements>
|
482
|
+
</preface>
|
483
|
+
<sections>
|
484
|
+
<clause id="M" inline-header="false" obligation="normative" displayorder="8">
|
485
|
+
<title depth="1">Clause 4</title>
|
486
|
+
<clause id="N" inline-header="false" obligation="normative">
|
487
|
+
<title depth="2">Introduction</title>
|
488
|
+
</clause>
|
489
|
+
<clause id="O" inline-header="false" obligation="normative">
|
490
|
+
<title depth="2">Clause 4.2</title>
|
491
|
+
</clause>
|
492
|
+
<clause id="O1" inline-header="true" obligation="normative"/>
|
493
|
+
</clause>
|
494
|
+
<clause id="D" obligation="normative" displayorder="9">
|
495
|
+
<title depth="1">Scope</title>
|
496
|
+
<p id="E">Text</p>
|
497
|
+
</clause>
|
498
|
+
</sections>
|
499
|
+
<annex id="P" inline-header="false" obligation="normative" displayorder="10">
|
500
|
+
<title><strong>Annex A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
|
501
|
+
<clause id="Q" inline-header="false" obligation="normative">
|
502
|
+
<title depth="2">A.1<tab/>Annex A.1</title>
|
503
|
+
<clause id="Q1" inline-header="false" obligation="normative">
|
504
|
+
<title depth="3">A.1.1<tab/>Annex A.1a</title>
|
505
|
+
</clause>
|
506
|
+
</clause>
|
507
|
+
</annex>
|
508
|
+
<annex id="P1" inline-header="false" obligation="normative" displayorder="11"><title><strong>Annex B</strong><br/>(normative)</title></annex>
|
509
|
+
<bibliography>
|
510
|
+
<references id="R" normative="true" obligation="informative" displayorder="7">
|
511
|
+
<title depth="1">Normative References</title>
|
512
|
+
</references>
|
513
|
+
<clause id="S" obligation="informative" displayorder="12">
|
514
|
+
<title depth="1">Bibliography</title>
|
515
|
+
<references id="T" normative="false" obligation="informative">
|
516
|
+
<title depth="2">Bibliography Subsection</title>
|
517
|
+
</references>
|
518
|
+
</clause>
|
519
|
+
</bibliography>
|
520
|
+
</iso-standard>
|
529
521
|
OUTPUT
|
530
522
|
html = <<~OUTPUT
|
531
523
|
<html lang="en" xmlns:epub="http://www.idpf.org/2007/ops">
|
@@ -617,9 +609,9 @@ RSpec.describe IsoDoc do
|
|
617
609
|
<br/>
|
618
610
|
<b>Annex</b></h1>
|
619
611
|
<div id="Q">
|
620
|
-
<h2>A.1
|
612
|
+
<h2>A.1  Annex A.1</h2>
|
621
613
|
<div id="Q1">
|
622
|
-
<h3>A.1.1
|
614
|
+
<h3>A.1.1  Annex A.1a</h3>
|
623
615
|
</div>
|
624
616
|
</div>
|
625
617
|
</div>
|
data/spec/isodoc/blocks_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
RSpec.describe IsoDoc do
|
4
|
-
it "renders figures
|
5
|
-
|
4
|
+
it "renders figures" do
|
5
|
+
input = <<~INPUT
|
6
6
|
<iso-standard xmlns='http://riboseinc.com/isoxml'>
|
7
7
|
<preface>
|
8
8
|
<foreword id='fwd'>
|
@@ -57,7 +57,7 @@ RSpec.describe IsoDoc do
|
|
57
57
|
</annex>
|
58
58
|
</iso-standard>
|
59
59
|
INPUT
|
60
|
-
|
60
|
+
html = <<~OUTPUT
|
61
61
|
#{HTML_HDR}
|
62
62
|
<br/>
|
63
63
|
<div id="fwd">
|
@@ -113,6 +113,85 @@ RSpec.describe IsoDoc do
|
|
113
113
|
</body>
|
114
114
|
</html>
|
115
115
|
OUTPUT
|
116
|
+
word = <<~OUTPUT
|
117
|
+
<body lang='EN-US' link='blue' vlink='#954F72'>
|
118
|
+
<div class='WordSection1'>
|
119
|
+
<p> </p>
|
120
|
+
</div>
|
121
|
+
<p>
|
122
|
+
<br clear='all' class='section'/>
|
123
|
+
</p>
|
124
|
+
<div class='WordSection2'>
|
125
|
+
<p>
|
126
|
+
<br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
|
127
|
+
</p>
|
128
|
+
<div id='fwd'>
|
129
|
+
<h1 class='ForewordTitle'>Foreword</h1>
|
130
|
+
<p class='ForewordText'> </p>
|
131
|
+
</div>
|
132
|
+
<p> </p>
|
133
|
+
</div>
|
134
|
+
<p>
|
135
|
+
<br clear='all' class='section'/>
|
136
|
+
</p>
|
137
|
+
<div class='WordSection3'>
|
138
|
+
<p class='zzSTDTitle1'/>
|
139
|
+
<div id='scope'>
|
140
|
+
<h1>Scope</h1>
|
141
|
+
<div id='N' class='figure'>
|
142
|
+
<img src='rice_images/rice_image1.png'/>
|
143
|
+
<p class='FigureTitle' style='text-align:center;'>Figure 1 — Split-it-right sample divider</p>
|
144
|
+
</div>
|
145
|
+
<p> </p>
|
146
|
+
</div>
|
147
|
+
<div id='terms'>
|
148
|
+
<h1/>
|
149
|
+
</div>
|
150
|
+
<div id='widgets'>
|
151
|
+
<h1>Widgets</h1>
|
152
|
+
<div id='widgets1'>
|
153
|
+
<div id='note1' class='figure'>
|
154
|
+
<img src='rice_images/rice_image1.png'/>
|
155
|
+
<p class='FigureTitle' style='text-align:center;'>Figure 2 — Split-it-right sample divider</p>
|
156
|
+
</div>
|
157
|
+
<div id='note2' class='figure'>
|
158
|
+
<img src='rice_images/rice_image1.png'/>
|
159
|
+
<p class='FigureTitle' style='text-align:center;'>Figure 3 — Split-it-right sample divider</p>
|
160
|
+
</div>
|
161
|
+
<p> </p>
|
162
|
+
</div>
|
163
|
+
</div>
|
164
|
+
<p>
|
165
|
+
<br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
|
166
|
+
</p>
|
167
|
+
<div id='annex1' class='Section3'>
|
168
|
+
<div id='annex1a'>
|
169
|
+
<div id='AN' class='figure'>
|
170
|
+
<img src='rice_images/rice_image1.png'/>
|
171
|
+
<p class='AnnexFigureTitle' style='text-align:center;'>Figure A.1 — Split-it-right sample divider</p>
|
172
|
+
</div>
|
173
|
+
</div>
|
174
|
+
<div id='annex1b'>
|
175
|
+
<div id='Anote1' class='figure'>
|
176
|
+
<img src='rice_images/rice_image1.png'/>
|
177
|
+
<p class='AnnexFigureTitle' style='text-align:center;'>Figure A.2 — Split-it-right sample divider</p>
|
178
|
+
</div>
|
179
|
+
<div id='Anote2' class='figure'>
|
180
|
+
<img src='rice_images/rice_image1.png'/>
|
181
|
+
<p class='AnnexFigureTitle' style='text-align:center;'>Figure A.3 — Split-it-right sample divider</p>
|
182
|
+
</div>
|
183
|
+
</div>
|
184
|
+
</div>
|
185
|
+
</div>
|
186
|
+
<br clear='all' style='page-break-before:left;mso-break-type:section-break'/>
|
187
|
+
<div class='colophon'/>
|
188
|
+
</body>
|
189
|
+
OUTPUT
|
190
|
+
output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", input, true)
|
191
|
+
expect(xmlpp(output)).to be_equivalent_to xmlpp(html)
|
192
|
+
output = IsoDoc::Iso::WordConvert.new({}).convert("test", input, true)
|
193
|
+
expect(xmlpp(Nokogiri::XML(output).at("//body").to_xml))
|
194
|
+
.to be_equivalent_to xmlpp(word)
|
116
195
|
end
|
117
196
|
|
118
197
|
it "renders subfigures (HTML)" do
|
@@ -250,8 +329,8 @@ RSpec.describe IsoDoc do
|
|
250
329
|
OUTPUT
|
251
330
|
end
|
252
331
|
|
253
|
-
it "processes formulae
|
254
|
-
|
332
|
+
it "processes formulae" do
|
333
|
+
input = <<~INPUT
|
255
334
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
256
335
|
<preface>
|
257
336
|
<foreword>
|
@@ -282,11 +361,11 @@ RSpec.describe IsoDoc do
|
|
282
361
|
</preface>
|
283
362
|
</iso-standard>
|
284
363
|
INPUT
|
285
|
-
|
364
|
+
presxml = <<~OUTPUT
|
286
365
|
<?xml version='1.0'?>
|
287
366
|
<iso-standard type="presentation" xmlns="http://riboseinc.com/isoxml">
|
288
367
|
<preface>
|
289
|
-
<foreword>
|
368
|
+
<foreword displayorder="1">
|
290
369
|
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
|
291
370
|
<stem type="AsciiMath">r = 1 %</stem>
|
292
371
|
<dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
|
@@ -319,45 +398,8 @@ RSpec.describe IsoDoc do
|
|
319
398
|
</preface>
|
320
399
|
</iso-standard>
|
321
400
|
OUTPUT
|
322
|
-
end
|
323
401
|
|
324
|
-
|
325
|
-
output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", <<~"INPUT", true)
|
326
|
-
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
327
|
-
<preface>
|
328
|
-
<foreword>
|
329
|
-
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
|
330
|
-
<stem type="AsciiMath">r = 1 %</stem>
|
331
|
-
<dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
|
332
|
-
<dt>
|
333
|
-
<stem type="AsciiMath">r</stem>
|
334
|
-
</dt>
|
335
|
-
<dd>
|
336
|
-
<p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
|
337
|
-
</dd>
|
338
|
-
<dt>
|
339
|
-
<stem type="AsciiMath">s_1</stem>
|
340
|
-
</dt>
|
341
|
-
<dd>
|
342
|
-
<p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
|
343
|
-
</dd>
|
344
|
-
</dl>
|
345
|
-
<note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
|
346
|
-
<p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P"
|
347
|
-
prefix. "P" is unnecessary because between "G" and "U" duration is
|
348
|
-
always expressed.
|
349
|
-
</p>
|
350
|
-
</note>
|
351
|
-
</formula>
|
352
|
-
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
|
353
|
-
<name>1</name>
|
354
|
-
<stem type="AsciiMath">r = 1 %</stem>
|
355
|
-
</formula>
|
356
|
-
</foreword>
|
357
|
-
</preface>
|
358
|
-
</iso-standard>
|
359
|
-
INPUT
|
360
|
-
expect(xmlpp(output)).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
402
|
+
html = <<~OUTPUT
|
361
403
|
#{HTML_HDR}
|
362
404
|
<br/>
|
363
405
|
<div>
|
@@ -385,6 +427,7 @@ RSpec.describe IsoDoc do
|
|
385
427
|
</dl>
|
386
428
|
<div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
|
387
429
|
<p>
|
430
|
+
<span class='note_label'>NOTE</span>
|
388
431
|
  [durationUnits] is essentially a duration statement without
|
389
432
|
the "P" prefix. "P" is unnecessary because between "G" and "U"
|
390
433
|
duration is always expressed.
|
@@ -405,47 +448,8 @@ RSpec.describe IsoDoc do
|
|
405
448
|
</body>
|
406
449
|
</html>
|
407
450
|
OUTPUT
|
408
|
-
end
|
409
451
|
|
410
|
-
|
411
|
-
output = IsoDoc::Iso::WordConvert.new({}).convert("test", <<~"INPUT", true)
|
412
|
-
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
413
|
-
<preface>
|
414
|
-
<foreword>
|
415
|
-
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181934" unnumbered="true">
|
416
|
-
<stem type="AsciiMath">r = 1 %</stem>
|
417
|
-
<dl id="_e4fe94fe-1cde-49d9-b1ad-743293b7e21d">
|
418
|
-
<dt>
|
419
|
-
<stem type="AsciiMath">r</stem>
|
420
|
-
</dt>
|
421
|
-
<dd>
|
422
|
-
<p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
|
423
|
-
</dd>
|
424
|
-
<dt>
|
425
|
-
<stem type="AsciiMath">s_1</stem>
|
426
|
-
</dt>
|
427
|
-
<dd>
|
428
|
-
<p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
|
429
|
-
</dd>
|
430
|
-
</dl>
|
431
|
-
<note id="_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0">
|
432
|
-
<p id="_511aaa98-4116-42af-8e5b-c87cdf5bfdc8">[durationUnits] is essentially a duration statement without the "P"
|
433
|
-
prefix. "P" is unnecessary because between "G" and "U" duration is
|
434
|
-
always expressed.
|
435
|
-
</p>
|
436
|
-
</note>
|
437
|
-
</formula>
|
438
|
-
<formula id="_be9158af-7e93-4ee2-90c5-26d31c181935">
|
439
|
-
<name>1</name>
|
440
|
-
<stem type="AsciiMath">r = 1 %</stem>
|
441
|
-
</formula>
|
442
|
-
</foreword>
|
443
|
-
</preface>
|
444
|
-
</iso-standard>
|
445
|
-
INPUT
|
446
|
-
expect(xmlpp(output
|
447
|
-
.sub(%r{^.*<div>\s*<h1 class="ForewordTitle">}m, '<div><h1 class="ForewordTitle">')
|
448
|
-
.sub(%r{<p> </p>\s*</div>.*$}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
452
|
+
word = <<~OUTPUT
|
449
453
|
<div>
|
450
454
|
<h1 class='ForewordTitle'>Foreword</h1>
|
451
455
|
<div id='_be9158af-7e93-4ee2-90c5-26d31c181934'><div class='formula'>
|
@@ -463,7 +467,7 @@ RSpec.describe IsoDoc do
|
|
463
467
|
</p>
|
464
468
|
</td>
|
465
469
|
<td valign="top">
|
466
|
-
<p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
|
470
|
+
<p class="ForewordText" id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the repeatability limit.</p>
|
467
471
|
</td>
|
468
472
|
</tr>
|
469
473
|
<tr>
|
@@ -473,13 +477,13 @@ RSpec.describe IsoDoc do
|
|
473
477
|
</p>
|
474
478
|
</td>
|
475
479
|
<td valign="top">
|
476
|
-
<p id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
|
480
|
+
<p class="ForewordText" id="_1b99995d-ff03-40f5-8f2e-ab9665a69b77">is the other repeatability limit.</p>
|
477
481
|
</td>
|
478
482
|
</tr>
|
479
483
|
</table>
|
480
484
|
<div id='_83083c7a-6c85-43db-a9fa-4d8edd0c9fc0' class='Note'>
|
481
485
|
<p class='Note'>
|
482
|
-
|
486
|
+
<span class='note_label'>NOTE</span>
|
483
487
|
<span style='mso-tab-count:1'>  </span>
|
484
488
|
[durationUnits] is essentially a duration statement without the "P"
|
485
489
|
prefix. "P" is unnecessary because between "G" and "U" duration is
|
@@ -497,6 +501,14 @@ RSpec.describe IsoDoc do
|
|
497
501
|
</div>
|
498
502
|
</div>
|
499
503
|
OUTPUT
|
504
|
+
output = IsoDoc::Iso::PresentationXMLConvert.new({}).convert("test", input, true)
|
505
|
+
expect(xmlpp(output)).to be_equivalent_to xmlpp(presxml)
|
506
|
+
output = IsoDoc::Iso::HtmlConvert.new({}).convert("test", presxml, true)
|
507
|
+
expect(xmlpp(output)).to be_equivalent_to xmlpp(html)
|
508
|
+
output = IsoDoc::Iso::WordConvert.new({}).convert("test", presxml, true)
|
509
|
+
expect(xmlpp(output
|
510
|
+
.sub(%r{^.*<div>\s*<h1 class="ForewordTitle">}m, '<div><h1 class="ForewordTitle">')
|
511
|
+
.sub(%r{<p> </p>\s*</div>.*$}m, ""))).to be_equivalent_to xmlpp(word)
|
500
512
|
end
|
501
513
|
|
502
514
|
it "processes formulae with single definition list entry" do
|