metanorma-iso 2.1.1 → 2.1.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/lib/html2doc/lists.rb +145 -10
- data/lib/isodoc/iso/base_convert.rb +10 -0
- data/lib/isodoc/iso/html/html_iso_titlepage.html +2 -0
- data/lib/isodoc/iso/html/isodoc-dis.css +173 -257
- data/lib/isodoc/iso/html/isodoc-dis.scss +173 -249
- data/lib/isodoc/iso/html/isodoc.css +38 -13
- data/lib/isodoc/iso/html/isodoc.scss +38 -12
- data/lib/isodoc/iso/html/style-human.css +14 -1
- data/lib/isodoc/iso/html/style-human.scss +10 -1
- data/lib/isodoc/iso/html/style-iso.css +35 -23
- data/lib/isodoc/iso/html/style-iso.scss +31 -23
- data/lib/isodoc/iso/html/word_iso_intro-dis.html +1 -6
- data/lib/isodoc/iso/html/word_iso_titlepage-dis.html +24 -13
- data/lib/isodoc/iso/html/word_iso_titlepage-prf.html +58 -0
- data/lib/isodoc/iso/html/word_iso_titlepage.html +6 -2
- data/lib/isodoc/iso/html_convert.rb +5 -0
- data/lib/isodoc/iso/i18n-en.yaml +32 -4
- data/lib/isodoc/iso/i18n-fr.yaml +29 -3
- data/lib/isodoc/iso/i18n-ru.yaml +32 -4
- data/lib/isodoc/iso/i18n-zh-Hans.yaml +32 -3
- data/lib/isodoc/iso/i18n.rb +1 -1
- data/lib/isodoc/iso/iso.amendment.xsl +750 -307
- data/lib/isodoc/iso/iso.international-standard.xsl +750 -307
- data/lib/isodoc/iso/metadata.rb +63 -63
- data/lib/isodoc/iso/presentation_bibdata.rb +74 -0
- data/lib/isodoc/iso/presentation_xml_convert.rb +15 -4
- data/lib/isodoc/iso/presentation_xref.rb +8 -2
- data/lib/isodoc/iso/sections.rb +1 -1
- data/lib/isodoc/iso/word_cleanup.rb +3 -0
- data/lib/isodoc/iso/word_convert.rb +6 -3
- data/lib/isodoc/iso/word_dis_cleanup.rb +243 -0
- data/lib/isodoc/iso/word_dis_convert.rb +47 -108
- data/lib/isodoc/iso/xref.rb +34 -6
- data/lib/metanorma/iso/base.rb +14 -1
- data/lib/metanorma/iso/biblio.rng +134 -39
- data/lib/metanorma/iso/boilerplate-fr.xml +3 -0
- data/lib/metanorma/iso/boilerplate-ru.xml +3 -0
- data/lib/metanorma/iso/boilerplate.xml +3 -0
- data/lib/metanorma/iso/cleanup.rb +53 -13
- data/lib/metanorma/iso/front.rb +38 -6
- data/lib/metanorma/iso/front_id.rb +2 -0
- data/lib/metanorma/iso/isodoc.rng +32 -0
- data/lib/metanorma/iso/isostandard.rng +32 -12
- data/lib/metanorma/iso/validate_section.rb +0 -12
- data/lib/metanorma/iso/version.rb +1 -1
- data/spec/isodoc/amd_spec.rb +4 -30
- data/spec/isodoc/blocks_spec.rb +499 -2
- data/spec/isodoc/i18n_spec.rb +145 -80
- data/spec/isodoc/iso_spec.rb +50 -169
- data/spec/isodoc/metadata_spec.rb +223 -83
- data/spec/isodoc/postproc_spec.rb +41 -5
- data/spec/isodoc/section_spec.rb +9 -9
- data/spec/isodoc/word_dis_spec.rb +1332 -146
- data/spec/isodoc/xref_spec.rb +87 -13
- data/spec/metanorma/amd_spec.rb +39 -23
- data/spec/metanorma/base_spec.rb +174 -44
- data/spec/metanorma/blocks_spec.rb +21 -0
- data/spec/metanorma/cleanup_spec.rb +196 -196
- data/spec/metanorma/lists_spec.rb +2 -2
- data/spec/metanorma/section_spec.rb +2 -2
- data/spec/metanorma/validate_spec.rb +8 -19
- data/spec/spec_helper.rb +10 -7
- data/spec/vcr_cassettes/withdrawn_iso.yml +30 -30
- metadata +6 -8
- data/docs/asciiiso-syntax.adoc +0 -307
- data/docs/guidance.adoc +0 -487
- data/docs/navigation.adoc +0 -23
- data/docs/quickstart.adoc +0 -179
- data/lib/isodoc/iso/presentation_inline.rb +0 -90
@@ -82,6 +82,11 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
82
82
|
<workgroup number="3">Rice Group</workgroup>
|
83
83
|
<secretariat>GB</secretariat>
|
84
84
|
</editorialgroup>
|
85
|
+
<approvalgroup>
|
86
|
+
<technical-committee number="34a">Food products A</technical-committee>
|
87
|
+
<subcommittee number="4a">Cereals and pulses A</subcommittee>
|
88
|
+
<workgroup number="3a">Rice Group A</workgroup>
|
89
|
+
</approvalgroup>
|
85
90
|
<structuredidentifier>
|
86
91
|
<project-number part="1">ISO/PreCD3 17301</project-number>
|
87
92
|
</structuredidentifier>
|
@@ -94,9 +99,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
94
99
|
{:accesseddate=>"2012",
|
95
100
|
:activateddate=>"2013",
|
96
101
|
:agency=>"ISO",
|
97
|
-
:
|
98
|
-
:confirmeddate=>"XXX",
|
99
|
-
:copieddate=>"XXX",
|
102
|
+
:approvalgroup=>["TC 34a", "SC 4a", "WG 3a"],
|
100
103
|
:createddate=>"2010–2011",
|
101
104
|
:docnumber=>"ISO/PreCD3 17301-1",
|
102
105
|
:docnumber_lang=>"ISO/PreCD3 17301-1 (E)",
|
@@ -120,14 +123,11 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
120
123
|
:edition=>"2",
|
121
124
|
:editorialgroup=>["TC 34", "SC 4", "WG 3"],
|
122
125
|
:horizontal=>"true",
|
123
|
-
:implementeddate=>"XXX",
|
124
|
-
:issueddate=>"XXX",
|
125
126
|
:keywords=>["kw2", "kw1"],
|
126
127
|
:lang=>"en",
|
127
128
|
:obsoleteddate=>"2014",
|
128
129
|
:publisheddate=>"2011",
|
129
130
|
:publisher=>"International Organization for Standardization",
|
130
|
-
:receiveddate=>"XXX",
|
131
131
|
:revdate=>"2016-05-01",
|
132
132
|
:revdate_monthyear=>"May 2016",
|
133
133
|
:sc=>"SC 4",
|
@@ -137,14 +137,10 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
137
137
|
:stage_int=>30,
|
138
138
|
:stageabbr=>"CD",
|
139
139
|
:statusabbr=>"PreCD3",
|
140
|
+
:substage_int=>"92",
|
140
141
|
:tc=>"TC 34",
|
141
142
|
:tc_docnumber=>["17301", "17302"],
|
142
|
-
:transmitteddate=>"XXX",
|
143
|
-
:unchangeddate=>"XXX",
|
144
143
|
:unpublished=>true,
|
145
|
-
:updateddate=>"XXX",
|
146
|
-
:vote_endeddate=>"XXX",
|
147
|
-
:vote_starteddate=>"XXX",
|
148
144
|
:wg=>"WG 3"}
|
149
145
|
OUTPUT
|
150
146
|
expect(metadata(c.info(Nokogiri::XML(input),
|
@@ -159,16 +155,9 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
159
155
|
input = <<~INPUT
|
160
156
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
161
157
|
<bibdata type="standard">
|
162
|
-
<title>
|
163
158
|
<title type="title-intro" language="en" format="text/plain">Cereals and pulses</title>
|
164
159
|
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
165
160
|
<title type="title-part" language="en" format="text/plain">Rice</title>
|
166
|
-
</title>
|
167
|
-
<title>
|
168
|
-
<title type="title-intro" language="fr" format="text/plain">Céréales et légumineuses</title>
|
169
|
-
<title type="title-main" language="fr" format="text/plain">Spécification et méthodes d'essai</title>
|
170
|
-
<title type="title-part" language="fr" format="text/plain">Riz</title>
|
171
|
-
</title>
|
172
161
|
<docidentifier type="ISO">ISO/IEC/CD 17301-1-3</docidentifier>
|
173
162
|
<docidentifier type="iso-with-lang">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
|
174
163
|
<docidentifier type="iso-reference">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
|
@@ -218,6 +207,10 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
218
207
|
<subcommittee number="4" type="DEF">Cereals and pulses</subcommittee>
|
219
208
|
<workgroup number="3" type="GHI">Rice Group</workgroup>
|
220
209
|
</editorialgroup>
|
210
|
+
<approvalgroup>
|
211
|
+
<technical-committee number="34" type="ABC">Food products</technical-committee>
|
212
|
+
<workgroup number="3" type="GHI">Rice Group</workgroup>
|
213
|
+
</approvalgroup>
|
221
214
|
<ics><code>1.2.3</code></ics>
|
222
215
|
<ics><code>1.2.3</code></ics>
|
223
216
|
<structuredidentifier>
|
@@ -229,19 +222,11 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
229
222
|
</iso-standard>
|
230
223
|
INPUT
|
231
224
|
output = <<~OUTPUT
|
232
|
-
{:
|
233
|
-
:
|
234
|
-
:circulateddate=>"XXX",
|
235
|
-
:confirmeddate=>"XXX",
|
236
|
-
:copieddate=>"XXX",
|
237
|
-
:createddate=>"XXX",
|
225
|
+
{:agency=>"ISO/IEC",
|
226
|
+
:approvalgroup=>["ABC 34", "GHI 3"],
|
238
227
|
:docnumber=>"ISO/IEC/CD 17301-1-3",
|
239
228
|
:docnumber_lang=>"ISO/IEC/CD 17301-1-3 (E)",
|
240
229
|
:docnumber_reference=>"ISO/IEC/CD 17301-1-3 (E)",
|
241
|
-
:docsubtitle=>"Céréales et légumineuses — Spécification et méthodes d'essai — Partie 1–3: Riz",
|
242
|
-
:docsubtitleintro=>"Céréales et légumineuses",
|
243
|
-
:docsubtitlemain=>"Spécification et méthodes d'essai",
|
244
|
-
:docsubtitlepart=>"Riz",
|
245
230
|
:docsubtitlepartlabel=>"Partie 1–3",
|
246
231
|
:doctitle=>"Cereals and pulses — Specifications and test methods — Part 1–3: Rice",
|
247
232
|
:doctitleintro=>"Cereals and pulses",
|
@@ -253,29 +238,19 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
253
238
|
:docyear=>"2016",
|
254
239
|
:editorialgroup=>["ABC 34", "DEF 4", "GHI 3"],
|
255
240
|
:ics=>"1.2.3, 1.2.3",
|
256
|
-
:implementeddate=>"XXX",
|
257
|
-
:issueddate=>"XXX",
|
258
241
|
:lang=>"en",
|
259
|
-
:obsoleteddate=>"XXX",
|
260
242
|
:obsoletes=>"IEC 8121",
|
261
243
|
:obsoletes_part=>"3.1",
|
262
|
-
:publisheddate=>"XXX",
|
263
244
|
:publisher=>"International Organization for Standardization and International Electrotechnical Commission",
|
264
|
-
:receiveddate=>"XXX",
|
265
245
|
:sc=>"DEF 4",
|
266
246
|
:script=>"Latn",
|
267
|
-
:secretariat=>"XXX",
|
268
247
|
:stage=>"60",
|
269
248
|
:stage_int=>60,
|
270
249
|
:statusabbr=>"IS",
|
250
|
+
:substage_int=>"92",
|
271
251
|
:tc=>"ABC 34",
|
272
252
|
:tc_docnumber=>["17301"],
|
273
|
-
:transmitteddate=>"XXX",
|
274
|
-
:unchangeddate=>"XXX",
|
275
253
|
:unpublished=>false,
|
276
|
-
:updateddate=>"XXX",
|
277
|
-
:vote_endeddate=>"XXX",
|
278
|
-
:vote_starteddate=>"XXX",
|
279
254
|
:wg=>"GHI 3"}
|
280
255
|
OUTPUT
|
281
256
|
expect(metadata(c.info(Nokogiri::XML(input),
|
@@ -294,16 +269,12 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
294
269
|
input = <<~INPUT
|
295
270
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
296
271
|
<bibdata type="standard">
|
297
|
-
<title>
|
298
272
|
<title type="title-intro" language="en" format="text/plain">Cereals and pulses</title>
|
299
273
|
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
300
274
|
<title type="title-part" language="en" format="text/plain">Rice</title>
|
301
|
-
</title>
|
302
|
-
<title>
|
303
275
|
<title type="title-intro" language="fr" format="text/plain">Céréales et légumineuses</title>
|
304
276
|
<title type="title-main" language="fr" format="text/plain">Spécification et méthodes d'essai</title>
|
305
277
|
<title type="title-part" language="fr" format="text/plain">Riz</title>
|
306
|
-
</title>
|
307
278
|
<docidentifier type="ISO">ISO/IEC/CD 17301-1-3</docidentifier>
|
308
279
|
<docidentifier type="iso-with-lang">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
|
309
280
|
<docidentifier type="iso-reference">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
|
@@ -365,12 +336,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
365
336
|
</iso-standard>
|
366
337
|
INPUT
|
367
338
|
output = <<~OUTPUT
|
368
|
-
{:
|
369
|
-
:agency=>"ISO/IEC",
|
370
|
-
:circulateddate=>"XXX",
|
371
|
-
:confirmeddate=>"XXX",
|
372
|
-
:copieddate=>"XXX",
|
373
|
-
:createddate=>"XXX",
|
339
|
+
{:agency=>"ISO/IEC",
|
374
340
|
:docnumber=>"ISO/IEC/CD 17301-1-3",
|
375
341
|
:docnumber_lang=>"ISO/IEC/CD 17301-1-3 (E)",
|
376
342
|
:docnumber_reference=>"ISO/IEC/CD 17301-1-3 (E)",
|
@@ -389,29 +355,19 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
389
355
|
:docyear=>"2016",
|
390
356
|
:editorialgroup=>["ABC 34", "DEF 4", "GHI 3"],
|
391
357
|
:ics=>"1.2.3, 1.2.3",
|
392
|
-
:implementeddate=>"XXX",
|
393
|
-
:issueddate=>"XXX",
|
394
358
|
:lang=>"fr",
|
395
|
-
:obsoleteddate=>"XXX",
|
396
359
|
:obsoletes=>"IEC 8121",
|
397
360
|
:obsoletes_part=>"3.1",
|
398
|
-
:publisheddate=>"XXX",
|
399
361
|
:publisher=>"International Organization for Standardization et International Electrotechnical Commission",
|
400
|
-
:receiveddate=>"XXX",
|
401
362
|
:sc=>"DEF 4",
|
402
363
|
:script=>"Latn",
|
403
|
-
:secretariat=>"XXX",
|
404
364
|
:stage=>"60",
|
405
365
|
:stage_int=>60,
|
406
366
|
:statusabbr=>"IS",
|
367
|
+
:substage_int=>"92",
|
407
368
|
:tc=>"ABC 34",
|
408
369
|
:tc_docnumber=>["17301"],
|
409
|
-
:transmitteddate=>"XXX",
|
410
|
-
:unchangeddate=>"XXX",
|
411
370
|
:unpublished=>false,
|
412
|
-
:updateddate=>"XXX",
|
413
|
-
:vote_endeddate=>"XXX",
|
414
|
-
:vote_starteddate=>"XXX",
|
415
371
|
:wg=>"GHI 3"}
|
416
372
|
OUTPUT
|
417
373
|
expect(metadata(c.info(Nokogiri::XML(input),
|
@@ -430,21 +386,15 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
430
386
|
input = <<~INPUT
|
431
387
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
432
388
|
<bibdata type="standard">
|
433
|
-
<title>
|
434
389
|
<title type="title-intro" language="en" format="text/plain">Cereals and pulses</title>
|
435
390
|
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
436
391
|
<title type="title-part" language="en" format="text/plain">Rice</title>
|
437
|
-
</title>
|
438
|
-
<title>
|
439
392
|
<title type="title-intro" language="fr" format="text/plain">Céréales et légumineuses</title>
|
440
393
|
<title type="title-main" language="fr" format="text/plain">Spécification et méthodes d'essai</title>
|
441
394
|
<title type="title-part" language="fr" format="text/plain">Riz</title>
|
442
|
-
</title>
|
443
|
-
<title>
|
444
395
|
<title type="title-intro" language="ru" format="text/plain">Зерновые и бобовые</title>
|
445
396
|
<title type="title-main" language="ru" format="text/plain">Технические характеристики и методы испытаний</title>
|
446
397
|
<title type="title-part" language="ru" format="text/plain">Рис</title>
|
447
|
-
</title>
|
448
398
|
<docidentifier type="ISO">ISO/IEC/CD 17301-1-3</docidentifier>
|
449
399
|
<docidentifier type="iso-with-lang">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
|
450
400
|
<docidentifier type="iso-reference">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
|
@@ -506,12 +456,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
506
456
|
</iso-standard>
|
507
457
|
INPUT
|
508
458
|
output = <<~OUTPUT
|
509
|
-
{:
|
510
|
-
:agency=>"ISO/IEC",
|
511
|
-
:circulateddate=>"XXX",
|
512
|
-
:confirmeddate=>"XXX",
|
513
|
-
:copieddate=>"XXX",
|
514
|
-
:createddate=>"XXX",
|
459
|
+
{:agency=>"ISO/IEC",
|
515
460
|
:docnumber=>"ISO/IEC/CD 17301-1-3",
|
516
461
|
:docnumber_lang=>"ISO/IEC/CD 17301-1-3 (E)",
|
517
462
|
:docnumber_reference=>"ISO/IEC/CD 17301-1-3 (E)",
|
@@ -530,32 +475,227 @@ RSpec.describe IsoDoc::Iso::Metadata do
|
|
530
475
|
:docyear=>"2016",
|
531
476
|
:editorialgroup=>["ABC 34", "DEF 4", "GHI 3"],
|
532
477
|
:ics=>"1.2.3, 1.2.3",
|
533
|
-
:implementeddate=>"XXX",
|
534
|
-
:issueddate=>"XXX",
|
535
478
|
:lang=>"ru",
|
536
|
-
:obsoleteddate=>"XXX",
|
537
479
|
:obsoletes=>"IEC 8121",
|
538
480
|
:obsoletes_part=>"3.1",
|
539
|
-
:publisheddate=>"XXX",
|
540
481
|
:publisher=>"International Organization for Standardization и International Electrotechnical Commission",
|
541
|
-
:receiveddate=>"XXX",
|
542
482
|
:sc=>"DEF 4",
|
543
483
|
:script=>"Latn",
|
544
|
-
:secretariat=>"XXX",
|
545
484
|
:stage=>"60",
|
546
485
|
:stage_int=>60,
|
547
486
|
:statusabbr=>"IS",
|
487
|
+
:substage_int=>"92",
|
548
488
|
:tc=>"ABC 34",
|
549
489
|
:tc_docnumber=>["17301"],
|
550
|
-
:transmitteddate=>"XXX",
|
551
|
-
:unchangeddate=>"XXX",
|
552
490
|
:unpublished=>false,
|
553
|
-
:updateddate=>"XXX",
|
554
|
-
:vote_endeddate=>"XXX",
|
555
|
-
:vote_starteddate=>"XXX",
|
556
491
|
:wg=>"GHI 3"}
|
557
492
|
OUTPUT
|
558
493
|
expect(metadata(c.info(Nokogiri::XML(input),
|
559
494
|
nil))).to be_equivalent_to output
|
560
495
|
end
|
496
|
+
|
497
|
+
it "warns of missing Secretariat" do
|
498
|
+
input = <<~INPUT
|
499
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
500
|
+
<bibdata type="standard">
|
501
|
+
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
502
|
+
<status><stage abbreviation="CD">30</stage></status>
|
503
|
+
<date type="published">2000</date>
|
504
|
+
<ext>
|
505
|
+
<editorialgroup>
|
506
|
+
</editorialgroup>
|
507
|
+
</ext>
|
508
|
+
</bibdata>
|
509
|
+
<sections>
|
510
|
+
<clause>
|
511
|
+
<title>Clause 1</title>
|
512
|
+
</clause>
|
513
|
+
</sections>
|
514
|
+
</iso-standard>
|
515
|
+
INPUT
|
516
|
+
output = <<~OUTPUT
|
517
|
+
<sections>
|
518
|
+
<clause displayorder="1">
|
519
|
+
<title depth="1">
|
520
|
+
<review date="#{Date.today}" reviewer="Metanorma" id="_">
|
521
|
+
<p>
|
522
|
+
<strong>
|
523
|
+
Metadata warnings:
|
524
|
+
<strong/>
|
525
|
+
<p>Secretariat is missing.</p>
|
526
|
+
</strong>
|
527
|
+
</p>
|
528
|
+
</review>
|
529
|
+
Clause 1
|
530
|
+
</title>
|
531
|
+
</clause>
|
532
|
+
</sections>
|
533
|
+
OUTPUT
|
534
|
+
expect(xmlpp(strip_guid(Nokogiri::XML(
|
535
|
+
IsoDoc::Iso::PresentationXMLConvert.new({})
|
536
|
+
.convert("test", input, true),
|
537
|
+
)
|
538
|
+
.at("//xmlns:sections").to_xml)))
|
539
|
+
.to be_equivalent_to xmlpp(output)
|
540
|
+
end
|
541
|
+
|
542
|
+
it "warns of missing publication date" do
|
543
|
+
input = <<~INPUT
|
544
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
545
|
+
<bibdata type="standard">
|
546
|
+
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
547
|
+
<status><stage abbreviation="CD">30</stage></status>
|
548
|
+
<ext>
|
549
|
+
<editorialgroup>
|
550
|
+
</editorialgroup>
|
551
|
+
<secretariat>BSI</secretariat>
|
552
|
+
</ext>
|
553
|
+
</bibdata>
|
554
|
+
<sections>
|
555
|
+
<clause>
|
556
|
+
<title>Clause 1</title>
|
557
|
+
</clause>
|
558
|
+
</sections>
|
559
|
+
</iso-standard>
|
560
|
+
INPUT
|
561
|
+
output = <<~OUTPUT
|
562
|
+
<sections>
|
563
|
+
<clause displayorder="1">
|
564
|
+
<title depth="1">
|
565
|
+
<review date="#{Date.today}" reviewer="Metanorma" id="_">
|
566
|
+
<p>
|
567
|
+
<strong>
|
568
|
+
Metadata warnings:
|
569
|
+
<strong/>
|
570
|
+
<p>Document date is missing.</p>
|
571
|
+
</strong>
|
572
|
+
</p>
|
573
|
+
</review>
|
574
|
+
Clause 1
|
575
|
+
</title>
|
576
|
+
</clause>
|
577
|
+
</sections>
|
578
|
+
OUTPUT
|
579
|
+
expect(strip_guid(xmlpp(Nokogiri::XML(
|
580
|
+
IsoDoc::Iso::PresentationXMLConvert.new({})
|
581
|
+
.convert("test", input, true),
|
582
|
+
)
|
583
|
+
.at("//xmlns:sections")
|
584
|
+
.at("//xmlns:sections").to_xml)))
|
585
|
+
.to be_equivalent_to xmlpp(output)
|
586
|
+
end
|
587
|
+
|
588
|
+
it "warns of missing editorial groups" do
|
589
|
+
input = <<~INPUT
|
590
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
591
|
+
<bibdata type="standard">
|
592
|
+
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
593
|
+
<status><stage abbreviation="CD">30</stage></status>
|
594
|
+
<date type="published">2000</date>
|
595
|
+
<ext>
|
596
|
+
<secretariat>BSI</secretariat>
|
597
|
+
</ext>
|
598
|
+
</bibdata>
|
599
|
+
<sections>
|
600
|
+
<clause>
|
601
|
+
<title>Clause 1</title>
|
602
|
+
</clause>
|
603
|
+
</sections>
|
604
|
+
</iso-standard>
|
605
|
+
INPUT
|
606
|
+
output = <<~OUTPUT
|
607
|
+
<sections>
|
608
|
+
<clause displayorder="1">
|
609
|
+
<title depth="1">
|
610
|
+
<review date="#{Date.today}" reviewer="Metanorma" id="_">
|
611
|
+
<p>
|
612
|
+
<strong>
|
613
|
+
Metadata warnings:
|
614
|
+
<strong/>
|
615
|
+
<p>Editorial groups are missing.</p>
|
616
|
+
</strong>
|
617
|
+
</p>
|
618
|
+
</review>
|
619
|
+
Clause 1
|
620
|
+
</title>
|
621
|
+
</clause>
|
622
|
+
</sections>
|
623
|
+
OUTPUT
|
624
|
+
expect(strip_guid(xmlpp(Nokogiri::XML(
|
625
|
+
IsoDoc::Iso::PresentationXMLConvert.new({})
|
626
|
+
.convert("test", input, true),
|
627
|
+
)
|
628
|
+
.at("//xmlns:sections")
|
629
|
+
.at("//xmlns:sections").to_xml)))
|
630
|
+
.to be_equivalent_to xmlpp(output)
|
631
|
+
end
|
632
|
+
|
633
|
+
it "does not warn of missing metadata in compliant document" do
|
634
|
+
input = <<~INPUT
|
635
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
636
|
+
<bibdata type="standard">
|
637
|
+
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
638
|
+
<status><stage abbreviation="CD">30</stage></status>
|
639
|
+
<date type="published">2000</date>
|
640
|
+
<ext>
|
641
|
+
<editorialgroup>
|
642
|
+
</editorialgroup>
|
643
|
+
<secretariat>BSI</secretariat>
|
644
|
+
</ext>
|
645
|
+
</bibdata>
|
646
|
+
<sections>
|
647
|
+
<clause>
|
648
|
+
<title>Clause 1</title>
|
649
|
+
</clause>
|
650
|
+
</sections>
|
651
|
+
</iso-standard>
|
652
|
+
INPUT
|
653
|
+
output = <<~OUTPUT
|
654
|
+
<sections>
|
655
|
+
<clause displayorder='1'>
|
656
|
+
<title depth='1'>Clause 1</title>
|
657
|
+
</clause>
|
658
|
+
</sections>
|
659
|
+
OUTPUT
|
660
|
+
expect(strip_guid(xmlpp(Nokogiri::XML(
|
661
|
+
IsoDoc::Iso::PresentationXMLConvert.new({})
|
662
|
+
.convert("test", input, true),
|
663
|
+
)
|
664
|
+
.at("//xmlns:sections").to_xml)))
|
665
|
+
.to be_equivalent_to xmlpp(output)
|
666
|
+
end
|
667
|
+
|
668
|
+
it "does not warn of missing metadata in published document" do
|
669
|
+
input = <<~INPUT
|
670
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
671
|
+
<bibdata type="standard">
|
672
|
+
<title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
|
673
|
+
<status><stage abbreviation="CD">90</stage></status>
|
674
|
+
<ext>
|
675
|
+
<editorialgroup>
|
676
|
+
</editorialgroup>
|
677
|
+
<secretariat>BSI</secretariat>
|
678
|
+
</ext>
|
679
|
+
</bibdata>
|
680
|
+
<sections>
|
681
|
+
<clause>
|
682
|
+
<title>Clause 1</title>
|
683
|
+
</clause>
|
684
|
+
</sections>
|
685
|
+
</iso-standard>
|
686
|
+
INPUT
|
687
|
+
output = <<~OUTPUT
|
688
|
+
<sections>
|
689
|
+
<clause displayorder='1'>
|
690
|
+
<title depth='1'>Clause 1</title>
|
691
|
+
</clause>
|
692
|
+
</sections>
|
693
|
+
OUTPUT
|
694
|
+
expect(strip_guid(xmlpp(Nokogiri::XML(
|
695
|
+
IsoDoc::Iso::PresentationXMLConvert.new({})
|
696
|
+
.convert("test", input, true),
|
697
|
+
)
|
698
|
+
.at("//xmlns:sections").to_xml)))
|
699
|
+
.to be_equivalent_to xmlpp(output)
|
700
|
+
end
|
561
701
|
end
|
@@ -30,11 +30,9 @@ RSpec.describe IsoDoc do
|
|
30
30
|
.convert("test", <<~"INPUT", false)
|
31
31
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
32
32
|
<bibdata>
|
33
|
-
<title>
|
34
33
|
<title format="text/plain" language="en" type="title-intro">Cereals and pulses</title>
|
35
34
|
<title format="text/plain" language="en" type="title-main">Specifications and test methods</title>
|
36
35
|
<title format="text/plain" language="en" type="title-part">Rice</title>
|
37
|
-
</title>
|
38
36
|
</bibdata>
|
39
37
|
<preface>
|
40
38
|
<foreword>
|
@@ -59,11 +57,9 @@ RSpec.describe IsoDoc do
|
|
59
57
|
.convert("test", <<~"INPUT", false)
|
60
58
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
61
59
|
<bibdata>
|
62
|
-
<title>
|
63
60
|
<title format="text/plain" language="en" type="title-intro">Cereals and pulses</title>
|
64
61
|
<title format="text/plain" language="en" type="title-main">Specifications and test methods</title>
|
65
62
|
<title format="text/plain" language="en" type="title-part">Rice</title>
|
66
|
-
</title>
|
67
63
|
</bibdata>
|
68
64
|
<preface>
|
69
65
|
<foreword>
|
@@ -381,7 +377,7 @@ RSpec.describe IsoDoc do
|
|
381
377
|
word = File.read("test.doc", encoding: "UTF-8")
|
382
378
|
.sub(/^.*An empty word intro page\./m, "")
|
383
379
|
.sub(%r{</div>.*$}m, "</div>")
|
384
|
-
|
380
|
+
.gsub(/<o:p> <\/o:p>/, "")
|
385
381
|
|
386
382
|
expect(xmlpp("<div>#{word.gsub(/_Toc\d\d+/, '_Toc')}"))
|
387
383
|
.to be_equivalent_to xmlpp(<<~'OUTPUT')
|
@@ -848,6 +844,46 @@ RSpec.describe IsoDoc do
|
|
848
844
|
OUTPUT
|
849
845
|
end
|
850
846
|
|
847
|
+
it "processes editorial notes (Word)" do
|
848
|
+
IsoDoc::Iso::WordConvert
|
849
|
+
.new(WORD_HTML_CSS.dup)
|
850
|
+
.convert("test", <<~"INPUT", false)
|
851
|
+
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
852
|
+
<annex id="P" inline-header="false" obligation="normative">
|
853
|
+
<admonition id="_70234f78-64e5-4dfc-8b6f-f3f037348b6a" type="editorial">
|
854
|
+
<p id='_e94663cc-2473-4ccc-9a72-983a74d989f2'>
|
855
|
+
Only use paddy or parboiled rice for the
|
856
|
+
determination of husked rice yield.
|
857
|
+
</p>
|
858
|
+
<p id="_e94663cc-2473-4ccc-9a72-983a74d989f3">Para 2.</p>
|
859
|
+
</admonition>
|
860
|
+
</annex>
|
861
|
+
</iso-standard>
|
862
|
+
INPUT
|
863
|
+
word = File.read("test.doc", encoding: "UTF-8")
|
864
|
+
.sub(/^.*<div class="WordSection3">/m, '<div class="WordSection3">')
|
865
|
+
.sub(%r{<br[^>]*>\s*<div class="colophon".*$}m, "")
|
866
|
+
expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
867
|
+
<div class='WordSection3'>
|
868
|
+
<p class='zzSTDTitle1'/>
|
869
|
+
<p class='MsoNormal'>
|
870
|
+
<br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
|
871
|
+
</p>
|
872
|
+
<div class='Section3'>
|
873
|
+
<a name='P' id='P'/>
|
874
|
+
<div class='zzHelp'>
|
875
|
+
<a name='_70234f78-64e5-4dfc-8b6f-f3f037348b6a' id='_70234f78-64e5-4dfc-8b6f-f3f037348b6a'/>
|
876
|
+
<p class='zzHelp'> Only use paddy or parboiled rice for the determination of husked rice yield. </p>
|
877
|
+
<p class='zzHelp'>
|
878
|
+
<a name='_e94663cc-2473-4ccc-9a72-983a74d989f3' id='_e94663cc-2473-4ccc-9a72-983a74d989f3'/>
|
879
|
+
Para 2.
|
880
|
+
</p>
|
881
|
+
</div>
|
882
|
+
</div>
|
883
|
+
</div>
|
884
|
+
OUTPUT
|
885
|
+
end
|
886
|
+
|
851
887
|
it "processes boilerplate" do
|
852
888
|
input = <<~INPUT
|
853
889
|
<iso-standard xmlns="http://riboseinc.com/isoxml">
|
data/spec/isodoc/section_spec.rb
CHANGED
@@ -526,7 +526,7 @@ RSpec.describe IsoDoc do
|
|
526
526
|
|
527
527
|
it "processes multiple terms & definitions sections" do
|
528
528
|
input = <<~INPUT
|
529
|
-
#{BLANK_HDR.sub(%r{<doctype>
|
529
|
+
#{BLANK_HDR.sub(%r{<doctype>standard</doctype>}, '<doctype>standard</doctype><subdoctype>vocabulary</subdoctype>')}
|
530
530
|
<sections>
|
531
531
|
<terms id='A' obligation='normative'>
|
532
532
|
<title>Terms and definitions</title>
|
@@ -561,8 +561,7 @@ RSpec.describe IsoDoc do
|
|
561
561
|
<language current='true'>en</language>
|
562
562
|
<script current='true'>Latn</script>
|
563
563
|
<status>
|
564
|
-
<stage abbreviation='IS'
|
565
|
-
<stage abbreviation='IS' language='en'>International standard</stage>
|
564
|
+
<stage abbreviation='IS'>60</stage>
|
566
565
|
<substage>60</substage>
|
567
566
|
</status>
|
568
567
|
<copyright>
|
@@ -575,13 +574,14 @@ RSpec.describe IsoDoc do
|
|
575
574
|
</owner>
|
576
575
|
</copyright>
|
577
576
|
<ext>
|
578
|
-
<doctype>
|
577
|
+
<doctype>standard</doctype>
|
579
578
|
<subdoctype>vocabulary</subdoctype>
|
580
|
-
<editorialgroup>
|
581
|
-
|
582
|
-
<subcommittee/>
|
583
|
-
<workgroup/>
|
579
|
+
<editorialgroup identifier='ISO'>
|
580
|
+
<agency>ISO</agency>
|
584
581
|
</editorialgroup>
|
582
|
+
<approvalgroup identifier='ISO'>
|
583
|
+
<agency>ISO</agency>
|
584
|
+
</approvalgroup>
|
585
585
|
<stagename>International standard</stagename>
|
586
586
|
</ext>
|
587
587
|
</bibdata>
|
@@ -708,7 +708,7 @@ RSpec.describe IsoDoc do
|
|
708
708
|
</div>
|
709
709
|
<p><br clear="all" class="section"/></p>
|
710
710
|
<div class="WordSection3">
|
711
|
-
<p class="
|
711
|
+
<p class="zzSTDTitle"/>
|
712
712
|
</div>
|
713
713
|
<br clear="all" style="page-break-before:left;mso-break-type:section-break"/>
|
714
714
|
<div class="colophon"/>
|