metanorma-iso 2.0.3 → 2.0.6

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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/lib/isodoc/iso/html/header.html +42 -33
  4. data/lib/isodoc/iso/html/html_iso_titlepage.html +1 -1
  5. data/lib/isodoc/iso/html/isodoc.css +9 -7
  6. data/lib/isodoc/iso/html/isodoc.scss +7 -5
  7. data/lib/isodoc/iso/html/style-human.css +0 -1
  8. data/lib/isodoc/iso/html/style-human.scss +0 -1
  9. data/lib/isodoc/iso/html/style-iso.css +0 -1
  10. data/lib/isodoc/iso/html/style-iso.scss +0 -1
  11. data/lib/isodoc/iso/html/word_iso_titlepage.html +12 -11
  12. data/lib/isodoc/iso/html/wordstyle.css +46 -19
  13. data/lib/isodoc/iso/html/wordstyle.scss +52 -25
  14. data/lib/isodoc/iso/i18n-en.yaml +29 -2
  15. data/lib/isodoc/iso/i18n-fr.yaml +27 -3
  16. data/lib/isodoc/iso/i18n-ru.yaml +45 -0
  17. data/lib/isodoc/iso/i18n-zh-Hans.yaml +27 -3
  18. data/lib/isodoc/iso/i18n.rb +1 -0
  19. data/lib/isodoc/iso/init.rb +1 -2
  20. data/lib/isodoc/iso/iso.amendment.xsl +1204 -615
  21. data/lib/isodoc/iso/iso.international-standard.xsl +1204 -615
  22. data/lib/isodoc/iso/metadata.rb +12 -2
  23. data/lib/isodoc/iso/presentation_xml_convert.rb +58 -21
  24. data/lib/metanorma/iso/boilerplate-fr.xml +6 -7
  25. data/lib/metanorma/iso/boilerplate-ru.xml +37 -0
  26. data/lib/metanorma/iso/boilerplate.xml +6 -7
  27. data/lib/metanorma/iso/cleanup.rb +48 -11
  28. data/lib/metanorma/iso/front.rb +1 -1
  29. data/lib/metanorma/iso/front_id.rb +2 -0
  30. data/lib/metanorma/iso/isodoc.rng +73 -3
  31. data/lib/metanorma/iso/processor.rb +14 -7
  32. data/lib/metanorma/iso/validate.rb +30 -2
  33. data/lib/metanorma/iso/validate_image.rb +3 -3
  34. data/lib/metanorma/iso/validate_list.rb +122 -0
  35. data/lib/metanorma/iso/validate_section.rb +39 -32
  36. data/lib/metanorma/iso/validate_style.rb +32 -2
  37. data/lib/metanorma/iso/validate_title.rb +13 -1
  38. data/lib/metanorma/iso/version.rb +1 -1
  39. data/metanorma-iso.gemspec +1 -1
  40. data/spec/isodoc/amd_spec.rb +10 -5
  41. data/spec/isodoc/i18n_spec.rb +350 -9
  42. data/spec/isodoc/inline_spec.rb +127 -10
  43. data/spec/isodoc/metadata_spec.rb +153 -3
  44. data/spec/isodoc/postproc_spec.rb +3 -4
  45. data/spec/isodoc/section_spec.rb +1 -0
  46. data/spec/isodoc/terms_spec.rb +4 -4
  47. data/spec/metanorma/base_spec.rb +434 -326
  48. data/spec/metanorma/cleanup_spec.rb +11 -11
  49. data/spec/metanorma/refs_spec.rb +273 -61
  50. data/spec/metanorma/section_spec.rb +18 -26
  51. data/spec/metanorma/validate_spec.rb +448 -17
  52. data/spec/spec_helper.rb +6 -4
  53. data/spec/vcr_cassettes/docrels.yml +393 -0
  54. data/spec/vcr_cassettes/withdrawn_iso.yml +301 -0
  55. metadata +10 -5
@@ -7,7 +7,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
7
7
  _ = c.convert_init(<<~"INPUT", "test", false)
8
8
  <iso-standard xmlns="http://riboseinc.com/isoxml">
9
9
  INPUT
10
- expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
10
+ input = <<~INPUT
11
11
  <iso-standard xmlns="http://riboseinc.com/isoxml">
12
12
  <bibdata type="standard">
13
13
  <title format="text/plain" language="en" type="title-intro">Cereals and pulses</title>
@@ -90,6 +90,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
90
90
  </bibdata>
91
91
  </iso-standard>
92
92
  INPUT
93
+ output = <<~OUTPUT
93
94
  {:accesseddate=>"2012",
94
95
  :activateddate=>"2013",
95
96
  :agency=>"ISO",
@@ -146,6 +147,8 @@ RSpec.describe IsoDoc::Iso::Metadata do
146
147
  :vote_starteddate=>"XXX",
147
148
  :wg=>"WG 3"}
148
149
  OUTPUT
150
+ expect(metadata(c.info(Nokogiri::XML(input),
151
+ nil))).to be_equivalent_to output
149
152
  end
150
153
 
151
154
  it "processes IsoXML metadata #2" do
@@ -153,7 +156,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
153
156
  _ = c.convert_init(<<~"INPUT", "test", false)
154
157
  <iso-standard xmlns="http://riboseinc.com/isoxml">
155
158
  INPUT
156
- expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
159
+ input = <<~INPUT
157
160
  <iso-standard xmlns="http://riboseinc.com/isoxml">
158
161
  <bibdata type="standard">
159
162
  <title>
@@ -225,6 +228,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
225
228
  </bibdata>
226
229
  </iso-standard>
227
230
  INPUT
231
+ output = <<~OUTPUT
228
232
  {:accesseddate=>"XXX",
229
233
  :agency=>"ISO/IEC",
230
234
  :circulateddate=>"XXX",
@@ -274,6 +278,8 @@ RSpec.describe IsoDoc::Iso::Metadata do
274
278
  :vote_starteddate=>"XXX",
275
279
  :wg=>"GHI 3"}
276
280
  OUTPUT
281
+ expect(metadata(c.info(Nokogiri::XML(input),
282
+ nil))).to be_equivalent_to output
277
283
  end
278
284
 
279
285
  it "processes IsoXML metadata in French" do
@@ -285,7 +291,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
285
291
  </bibdata>
286
292
  </iso-standard>
287
293
  INPUT
288
- expect(metadata(c.info(Nokogiri::XML(<<~"INPUT"), nil))).to be_equivalent_to <<~"OUTPUT"
294
+ input = <<~INPUT
289
295
  <iso-standard xmlns="http://riboseinc.com/isoxml">
290
296
  <bibdata type="standard">
291
297
  <title>
@@ -358,6 +364,7 @@ RSpec.describe IsoDoc::Iso::Metadata do
358
364
  </bibdata>
359
365
  </iso-standard>
360
366
  INPUT
367
+ output = <<~OUTPUT
361
368
  {:accesseddate=>"XXX",
362
369
  :agency=>"ISO/IEC",
363
370
  :circulateddate=>"XXX",
@@ -407,5 +414,148 @@ RSpec.describe IsoDoc::Iso::Metadata do
407
414
  :vote_starteddate=>"XXX",
408
415
  :wg=>"GHI 3"}
409
416
  OUTPUT
417
+ expect(metadata(c.info(Nokogiri::XML(input),
418
+ nil))).to be_equivalent_to output
419
+ end
420
+
421
+ it "processes IsoXML metadata in Russian" do
422
+ c = IsoDoc::Iso::HtmlConvert.new({})
423
+ _ = c.convert_init(<<~"INPUT", "test", false)
424
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
425
+ <bibdata>
426
+ <language>ru</language>
427
+ </bibdata>
428
+ </iso-standard>
429
+ INPUT
430
+ input = <<~INPUT
431
+ <iso-standard xmlns="http://riboseinc.com/isoxml">
432
+ <bibdata type="standard">
433
+ <title>
434
+ <title type="title-intro" language="en" format="text/plain">Cereals and pulses</title>
435
+ <title type="title-main" language="en" format="text/plain">Specifications and test methods</title>
436
+ <title type="title-part" language="en" format="text/plain">Rice</title>
437
+ </title>
438
+ <title>
439
+ <title type="title-intro" language="fr" format="text/plain">Céréales et légumineuses</title>
440
+ <title type="title-main" language="fr" format="text/plain">Spécification et méthodes d'essai</title>
441
+ <title type="title-part" language="fr" format="text/plain">Riz</title>
442
+ </title>
443
+ <title>
444
+ <title type="title-intro" language="ru" format="text/plain">Зерновые и бобовые</title>
445
+ <title type="title-main" language="ru" format="text/plain">Технические характеристики и методы испытаний</title>
446
+ <title type="title-part" language="ru" format="text/plain">Рис</title>
447
+ </title>
448
+ <docidentifier type="ISO">ISO/IEC/CD 17301-1-3</docidentifier>
449
+ <docidentifier type="iso-with-lang">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
450
+ <docidentifier type="iso-reference">ISO/IEC/CD 17301-1-3 (E)</docidentifier>
451
+ <docidentifier type="iso-tc">17301</docidentifier>
452
+ <contributor>
453
+ <role type="author"/>
454
+ <organization>
455
+ <name>ISO</name>
456
+ </organization>
457
+ </contributor>
458
+ <contributor>
459
+ <role type="publisher"/>
460
+ <organization>
461
+ <name>International Organization for Standardization</name>
462
+ <abbreviation>ISO</abbreviation>
463
+ </organization>
464
+ </contributor>
465
+ <contributor>
466
+ <role type="publisher"/>
467
+ <organization>
468
+ <name>International Electrotechnical Commission</name>
469
+ <abbreviation>IEC</abbreviation>
470
+ </organization>
471
+ </contributor>
472
+ <language>ru</language>
473
+ <script>Cyrl</script>
474
+ <status>
475
+ <stage abbreviation="IS">60</stage>
476
+ <substage>92</substage>
477
+ </status>
478
+ <copyright>
479
+ <from>2016</from>
480
+ <owner>
481
+ <organization>
482
+ <name>International Organization for Standardization</name>
483
+ </organization>
484
+ </owner>
485
+ </copyright>
486
+ <relation type="obsoletes">
487
+ <locality type="clause"><referenceFrom>3.1</referenceFrom></locality>
488
+ <docidentifier>IEC 8121</docidentifier>
489
+ </relation>
490
+ <ext>
491
+ <doctype language="">international-standard</doctype>
492
+ <doctype language="fr">Standard International</doctype>
493
+ <editorialgroup>
494
+ <technical-committee number="34" type="ABC">Food products</technical-committee>
495
+ <subcommittee number="4" type="DEF">Cereals and pulses</subcommittee>
496
+ <workgroup number="3" type="GHI">Rice Group</workgroup>
497
+ </editorialgroup>
498
+ <ics><code>1.2.3</code></ics>
499
+ <ics><code>1.2.3</code></ics>
500
+ <structuredidentifier>
501
+ <project-number part="1" subpart="3">ISO/IEC/CD 17301</project-number>
502
+ </strucuredidentifier>
503
+ <stagename>International standard</stagename>
504
+ </ext>
505
+ </bibdata>
506
+ </iso-standard>
507
+ INPUT
508
+ output = <<~OUTPUT
509
+ {:accesseddate=>"XXX",
510
+ :agency=>"ISO/IEC",
511
+ :circulateddate=>"XXX",
512
+ :confirmeddate=>"XXX",
513
+ :copieddate=>"XXX",
514
+ :createddate=>"XXX",
515
+ :docnumber=>"ISO/IEC/CD 17301-1-3",
516
+ :docnumber_lang=>"ISO/IEC/CD 17301-1-3 (E)",
517
+ :docnumber_reference=>"ISO/IEC/CD 17301-1-3 (E)",
518
+ :docsubtitle=>"Cereals and pulses&nbsp;&mdash; Specifications and test methods&nbsp;&mdash; Part&nbsp;1&ndash;3: Rice",
519
+ :docsubtitleintro=>"Cereals and pulses",
520
+ :docsubtitlemain=>"Specifications and test methods",
521
+ :docsubtitlepart=>"Rice",
522
+ :docsubtitlepartlabel=>"Part&nbsp;1&ndash;3",
523
+ :doctitle=>"&#x417;&#x435;&#x440;&#x43d;&#x43e;&#x432;&#x44b;&#x435; &#x438; &#x431;&#x43e;&#x431;&#x43e;&#x432;&#x44b;&#x435;&nbsp;&mdash; &#x422;&#x435;&#x445;&#x43d;&#x438;&#x447;&#x435;&#x441;&#x43a;&#x438;&#x435; &#x445;&#x430;&#x440;&#x430;&#x43a;&#x442;&#x435;&#x440;&#x438;&#x441;&#x442;&#x438;&#x43a;&#x438; &#x438; &#x43c;&#x435;&#x442;&#x43e;&#x434;&#x44b; &#x438;&#x441;&#x43f;&#x44b;&#x442;&#x430;&#x43d;&#x438;&#x439;&nbsp;&mdash; Часть&nbsp;1&ndash;3: &#x420;&#x438;&#x441;",
524
+ :doctitleintro=>"&#x417;&#x435;&#x440;&#x43d;&#x43e;&#x432;&#x44b;&#x435; &#x438; &#x431;&#x43e;&#x431;&#x43e;&#x432;&#x44b;&#x435;",
525
+ :doctitlemain=>"&#x422;&#x435;&#x445;&#x43d;&#x438;&#x447;&#x435;&#x441;&#x43a;&#x438;&#x435; &#x445;&#x430;&#x440;&#x430;&#x43a;&#x442;&#x435;&#x440;&#x438;&#x441;&#x442;&#x438;&#x43a;&#x438; &#x438; &#x43c;&#x435;&#x442;&#x43e;&#x434;&#x44b; &#x438;&#x441;&#x43f;&#x44b;&#x442;&#x430;&#x43d;&#x438;&#x439;",
526
+ :doctitlepart=>"&#x420;&#x438;&#x441;",
527
+ :doctitlepartlabel=>"Часть&nbsp;1&ndash;3",
528
+ :doctype=>"International Standard",
529
+ :doctype_display=>"International Standard",
530
+ :docyear=>"2016",
531
+ :editorialgroup=>["ABC 34", "DEF 4", "GHI 3"],
532
+ :ics=>"1.2.3, 1.2.3",
533
+ :implementeddate=>"XXX",
534
+ :issueddate=>"XXX",
535
+ :lang=>"ru",
536
+ :obsoleteddate=>"XXX",
537
+ :obsoletes=>"IEC 8121",
538
+ :obsoletes_part=>"3.1",
539
+ :publisheddate=>"XXX",
540
+ :publisher=>"International Organization for Standardization &#x438; International Electrotechnical Commission",
541
+ :receiveddate=>"XXX",
542
+ :sc=>"DEF 4",
543
+ :script=>"Latn",
544
+ :secretariat=>"XXX",
545
+ :stage=>"60",
546
+ :stage_int=>60,
547
+ :statusabbr=>"IS",
548
+ :tc=>"ABC 34",
549
+ :tc_docnumber=>["17301"],
550
+ :transmitteddate=>"XXX",
551
+ :unchangeddate=>"XXX",
552
+ :unpublished=>false,
553
+ :updateddate=>"XXX",
554
+ :vote_endeddate=>"XXX",
555
+ :vote_starteddate=>"XXX",
556
+ :wg=>"GHI 3"}
557
+ OUTPUT
558
+ expect(metadata(c.info(Nokogiri::XML(input),
559
+ nil))).to be_equivalent_to output
410
560
  end
411
561
  end
@@ -222,7 +222,7 @@ RSpec.describe IsoDoc do
222
222
  .sub(%r{<br[^>]*>\s*<div class="colophon".*$}m, "")
223
223
 
224
224
  expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
225
- <div class='WordSection3'>
225
+ <div class='WordSection3'>
226
226
  <p class='zzSTDTitle1'/>
227
227
  <div>
228
228
  <a name='_terms_and_definitions' id='_terms_and_definitions'/>
@@ -241,9 +241,7 @@ RSpec.describe IsoDoc do
241
241
  rice retaining its husk after threshing
242
242
  </p>
243
243
  <p class='Source'>
244
- [SOURCE:
245
- <a href='#ISO7301'>ISO 7301:2011, 3.1</a>
246
- , modified &#x2013; The term "cargo rice" is shown as deprecated, and Note
244
+ [SOURCE: ISO 7301:2011, 3.1, modified &#x2013; The term "cargo rice" is shown as deprecated, and Note
247
245
  1 to entry is not included here]
248
246
  </p>
249
247
  </div>
@@ -875,6 +873,7 @@ RSpec.describe IsoDoc do
875
873
  <bibdata type="standard">
876
874
  <status>
877
875
  <stage language="">30</stage>
876
+ <stage language='en'>Committee draft</stage>
878
877
  </status>
879
878
  </bibdata>
880
879
  <boilerplate>
@@ -562,6 +562,7 @@ RSpec.describe IsoDoc do
562
562
  <script current='true'>Latn</script>
563
563
  <status>
564
564
  <stage abbreviation='IS' language=''>60</stage>
565
+ <stage abbreviation='IS' language='en'>International standard</stage>
565
566
  <substage language=''>60</substage>
566
567
  </status>
567
568
  <copyright>
@@ -161,7 +161,7 @@ RSpec.describe IsoDoc do
161
161
  </ul>
162
162
  </div>
163
163
  <p>[SOURCE:
164
- <a href="#ISO7301">ISO 7301:2011, 3.1</a>, modified &#8211;
164
+ ISO 7301:2011, 3.1, modified &#8211;
165
165
  The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here]</p>
166
166
  <p class="TermNum" id="paddy">1.2</p>
167
167
  <p class="Terms" style="text-align:left;"><b>paddy</b></p>
@@ -187,7 +187,7 @@ RSpec.describe IsoDoc do
187
187
  <p id="_19830f33-e46c-42cc-94ca-a5ef101132d5">The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p>
188
188
  </p>
189
189
  </div>
190
- <p>[SOURCE: <a href="#ISO7301">ISO 7301:2011, 3.1</a>]</p>
190
+ <p>[SOURCE: ISO 7301:2011, 3.1]</p>
191
191
  <p class='TermNum' id='A'>1.3</p>
192
192
  <p class='Terms' style='text-align:left;'><b>term1</b></p>
193
193
  term1 definition
@@ -213,7 +213,7 @@ RSpec.describe IsoDoc do
213
213
  </ul></div>
214
214
 
215
215
  <p class="Source">[SOURCE:
216
- <a href="#ISO7301">ISO 7301:2011, 3.1</a>, modified &#8211;
216
+ ISO 7301:2011, 3.1, modified &#8211;
217
217
  The term "cargo rice" is shown as deprecated, and Note 1 to entry is not included here]</p>
218
218
  <p class="TermNum" id="paddy">1.2</p>
219
219
  <p class="Terms" style="text-align:left;"><b>paddy</b></p>
@@ -228,7 +228,7 @@ RSpec.describe IsoDoc do
228
228
  </div>
229
229
  <div id='_671a1994-4783-40d0-bc81-987d06ffb74e' class="Note"><p class="Note">Note 1 to entry: The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></div>
230
230
  <div id='_671a1994-4783-40d0-bc81-987d06ffb74f' class="Note"><p class="Note">Note 2 to entry: <ul><li>A</li></ul><p id="_19830f33-e46c-42cc-94ca-a5ef101132d5">The starch of waxy rice consists almost entirely of amylopectin. The kernels have a tendency to stick together after cooking.</p></p></div>
231
- <p class="Source">[SOURCE: <a href="#ISO7301">ISO 7301:2011, 3.1</a>]</p>
231
+ <p class="Source">[SOURCE: ISO 7301:2011, 3.1]</p>
232
232
  <p class='TermNum' id='A'>1.3</p>
233
233
  <p class='Terms' style='text-align:left;'><b>term1</b></p>
234
234
  term1 definition