isodoc 2.0.8.2 → 2.1.0

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/isodoc.gemspec +4 -2
  3. data/lib/isodoc/convert.rb +1 -1
  4. data/lib/isodoc/function/blocks.rb +0 -39
  5. data/lib/isodoc/function/blocks_example_note.rb +36 -1
  6. data/lib/isodoc/function/inline.rb +4 -0
  7. data/lib/isodoc/function/references.rb +2 -15
  8. data/lib/isodoc/function/section.rb +5 -0
  9. data/lib/isodoc/function/to_word_html.rb +7 -11
  10. data/lib/isodoc/html_function/postprocess.rb +16 -2
  11. data/lib/isodoc/metadata.rb +2 -1
  12. data/lib/isodoc/presentation_function/bibdata.rb +30 -4
  13. data/lib/isodoc/presentation_function/block.rb +13 -1
  14. data/lib/isodoc/presentation_function/section.rb +36 -0
  15. data/lib/isodoc/presentation_xml_convert.rb +7 -2
  16. data/lib/isodoc/version.rb +1 -1
  17. data/lib/isodoc/word_function/postprocess.rb +3 -4
  18. data/lib/isodoc/word_function/postprocess_cover.rb +14 -0
  19. data/lib/isodoc/word_function/table.rb +12 -10
  20. data/lib/isodoc/xref/xref_anchor.rb +1 -1
  21. data/lib/isodoc/xref/xref_counter.rb +4 -1
  22. data/lib/isodoc/xref/xref_gen_seq.rb +3 -3
  23. data/lib/isodoc/xref/xref_sect_gen.rb +34 -36
  24. data/lib/isodoc/xref.rb +19 -8
  25. data/lib/isodoc-yaml/i18n-ar.yaml +9 -0
  26. data/lib/isodoc-yaml/i18n-de.yaml +13 -0
  27. data/lib/isodoc-yaml/i18n-en.yaml +5 -0
  28. data/lib/isodoc-yaml/i18n-es.yaml +11 -0
  29. data/lib/isodoc-yaml/i18n-fr.yaml +12 -1
  30. data/lib/isodoc-yaml/i18n-ru.yaml +13 -0
  31. data/lib/isodoc-yaml/i18n-zh-Hans.yaml +5 -0
  32. data/lib/relaton/render/config.yml +4 -0
  33. data/lib/relaton/render/general.rb +35 -0
  34. data/spec/assets/i18n.yaml +6 -0
  35. data/spec/isodoc/blocks_spec.rb +249 -61
  36. data/spec/isodoc/i18n_spec.rb +266 -197
  37. data/spec/isodoc/inline_spec.rb +80 -106
  38. data/spec/isodoc/metadata_spec.rb +5 -3
  39. data/spec/isodoc/postproc_spec.rb +539 -397
  40. data/spec/isodoc/ref_spec.rb +52 -98
  41. data/spec/isodoc/section_spec.rb +4 -4
  42. data/spec/isodoc/xref_numbering_spec.rb +31 -0
  43. metadata +24 -8
@@ -6,6 +6,14 @@ RSpec.describe IsoDoc do
6
6
  <iso-standard xmlns="http://riboseinc.com/isoxml">
7
7
  <bibdata>
8
8
  <language>en</language>
9
+ <status>
10
+ <stage>published</stage>
11
+ <substage>withdrawn</substage>
12
+ </status>
13
+ <edition>2</edition>
14
+ <ext>
15
+ <doctype>brochure</doctype>
16
+ </ext>
9
17
  </bibdata>
10
18
  <preface>
11
19
  <foreword obligation="informative">
@@ -68,66 +76,75 @@ RSpec.describe IsoDoc do
68
76
  INPUT
69
77
 
70
78
  presxml = <<~"PRESXML"
71
- <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
72
- <bibdata>
73
- <language current="true">en</language>
74
- </bibdata>
75
- <preface>
76
- <foreword obligation="informative" displayorder="1">
77
- <title>Foreword</title>
78
- <p id="A">See <xref target="M">Clause 5</xref></p>
79
- </foreword>
80
- <introduction id="B" obligation="informative" displayorder="2"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
81
- <title depth="2">Introduction Subsection</title>
82
- </clause>
83
- </introduction></preface><sections>
84
- <clause id="D" obligation="normative" type="scope" displayorder="3">
85
- <title depth="1">1.<tab/>Scope</title>
86
- <p id="E">Text</p>
87
- </clause>
88
- <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
89
- <title depth="2">3.1.<tab/>Normal Terms</title>
90
- <term id="J"><name>3.1.1.</name>
91
- <preferred><strong>Term2</strong></preferred>
92
- </term>
93
- </terms>
94
- <definitions id="K"><title>3.2.</title>
95
- <dl>
96
- <dt>Symbol</dt>
97
- <dd>Definition</dd>
98
- </dl>
99
- </definitions>
100
- </clause>
101
- <definitions id="L" displayorder="6"><title>4.</title>
102
- <dl>
103
- <dt>Symbol</dt>
104
- <dd>Definition</dd>
105
- </dl>
106
- </definitions>
107
- <clause id="M" inline-header="false" obligation="normative" displayorder="7"><title depth="1">5.<tab/>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
108
- <title depth="2">5.1.<tab/>Introduction</title>
109
- </clause>
110
- <clause id="O" inline-header="false" obligation="normative">
111
- <title depth="2">5.2.<tab/>Clause 4.2</title>
112
- </clause></clause>
113
- </sections><annex id="P" inline-header="false" obligation="normative" displayorder="8">
114
- <title><strong>Annex A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
115
- <clause id="Q" inline-header="false" obligation="normative">
116
- <title depth="2">A.1.<tab/>Annex A.1</title>
117
- <clause id="Q1" inline-header="false" obligation="normative">
118
- <title depth="3">A.1.1.<tab/>Annex A.1a</title>
79
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
80
+ <bibdata>
81
+ <language current="true">en</language>
82
+ <status>
83
+ <stage>published</stage>
84
+ <substage>withdrawn</substage>
85
+ </status>
86
+ <edition language=''>2</edition>
87
+ <edition language='en'>second edition</edition>
88
+ <ext>
89
+ <doctype>brochure</doctype>
90
+ </ext>
91
+ </bibdata>
92
+ <preface>
93
+ <foreword obligation="informative" displayorder="1">
94
+ <title>Foreword</title>
95
+ <p id="A">See <xref target="M">Clause 5</xref></p>
96
+ </foreword>
97
+ <introduction id="B" obligation="informative" displayorder="2"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
98
+ <title depth="2">Introduction Subsection</title>
119
99
  </clause>
120
- </clause>
121
- </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
122
- <title depth="1">2.<tab/>Normative References</title>
123
- </references><clause id="S" obligation="informative" displayorder="9">
124
- <title depth="1">Bibliography</title>
125
- <references id="T" obligation="informative" normative="false">
126
- <title depth="2">Bibliography Subsection</title>
127
- </references>
128
- </clause>
129
- </bibliography>
130
- </iso-standard>
100
+ </introduction></preface><sections>
101
+ <clause id="D" obligation="normative" type="scope" displayorder="3">
102
+ <title depth="1">1.<tab/>Scope</title>
103
+ <p id="E">Text</p>
104
+ </clause>
105
+ <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
106
+ <title depth="2">3.1.<tab/>Normal Terms</title>
107
+ <term id="J"><name>3.1.1.</name>
108
+ <preferred><strong>Term2</strong></preferred>
109
+ </term>
110
+ </terms>
111
+ <definitions id="K"><title>3.2.</title>
112
+ <dl>
113
+ <dt>Symbol</dt>
114
+ <dd>Definition</dd>
115
+ </dl>
116
+ </definitions>
117
+ </clause>
118
+ <definitions id="L" displayorder="6"><title>4.</title>
119
+ <dl>
120
+ <dt>Symbol</dt>
121
+ <dd>Definition</dd>
122
+ </dl>
123
+ </definitions>
124
+ <clause id="M" inline-header="false" obligation="normative" displayorder="7"><title depth="1">5.<tab/>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
125
+ <title depth="2">5.1.<tab/>Introduction</title>
126
+ </clause>
127
+ <clause id="O" inline-header="false" obligation="normative">
128
+ <title depth="2">5.2.<tab/>Clause 4.2</title>
129
+ </clause></clause>
130
+ </sections><annex id="P" inline-header="false" obligation="normative" displayorder="8">
131
+ <title><strong>Annex A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
132
+ <clause id="Q" inline-header="false" obligation="normative">
133
+ <title depth="2">A.1.<tab/>Annex A.1</title>
134
+ <clause id="Q1" inline-header="false" obligation="normative">
135
+ <title depth="3">A.1.1.<tab/>Annex A.1a</title>
136
+ </clause>
137
+ </clause>
138
+ </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
139
+ <title depth="1">2.<tab/>Normative References</title>
140
+ </references><clause id="S" obligation="informative" displayorder="9">
141
+ <title depth="1">Bibliography</title>
142
+ <references id="T" obligation="informative" normative="false">
143
+ <title depth="2">Bibliography Subsection</title>
144
+ </references>
145
+ </clause>
146
+ </bibliography>
147
+ </iso-standard>
131
148
  PRESXML
132
149
 
133
150
  output = <<~"OUTPUT"
@@ -215,6 +232,14 @@ RSpec.describe IsoDoc do
215
232
  <iso-standard xmlns="http://riboseinc.com/isoxml">
216
233
  <bibdata>
217
234
  <language>tlh</language>
235
+ <status>
236
+ <stage>published</stage>
237
+ <substage>withdrawn</substage>
238
+ </status>
239
+ <edition>2</edition>
240
+ <ext>
241
+ <doctype>brochure</doctype>
242
+ </ext>
218
243
  </bibdata>
219
244
  <preface>
220
245
  <foreword obligation="informative">
@@ -276,66 +301,75 @@ RSpec.describe IsoDoc do
276
301
  </iso-standard>
277
302
  INPUT
278
303
  output = <<~OUTPUT
279
- <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
280
- <bibdata>
281
- <language current="true">tlh</language>
282
- </bibdata>
283
- <preface>
284
- <foreword obligation="informative" displayorder="1">
285
- <title>Foreword</title>
286
- <p id="A">See <xref target="M">Clause 5</xref></p>
287
- </foreword>
288
- <introduction id="B" obligation="informative" displayorder="2"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
289
- <title depth="2">Introduction Subsection</title>
290
- </clause>
291
- </introduction></preface><sections>
292
- <clause id="D" obligation="normative" type="scope" displayorder="3">
293
- <title depth="1">1.<tab/>Scope</title>
294
- <p id="E">Text</p>
295
- </clause>
296
- <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
297
- <title depth="2">3.1.<tab/>Normal Terms</title>
298
- <term id="J"><name>3.1.1.</name>
299
- <preferred><strong>Term2</strong></preferred>
300
- </term>
301
- </terms>
302
- <definitions id="K"><title>3.2.</title>
303
- <dl>
304
- <dt>Symbol</dt>
305
- <dd>Definition</dd>
306
- </dl>
307
- </definitions>
308
- </clause>
309
- <definitions id="L" displayorder="6"><title>4.</title>
310
- <dl>
311
- <dt>Symbol</dt>
312
- <dd>Definition</dd>
313
- </dl>
314
- </definitions>
315
- <clause id="M" inline-header="false" obligation="normative" displayorder="7"><title depth="1">5.<tab/>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
316
- <title depth="2">5.1.<tab/>Introduction</title>
317
- </clause>
318
- <clause id="O" inline-header="false" obligation="normative">
319
- <title depth="2">5.2.<tab/>Clause 4.2</title>
320
- </clause></clause>
321
- </sections><annex id="P" inline-header="false" obligation="normative" displayorder="8">
322
- <title><strong>Annex A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
323
- <clause id="Q" inline-header="false" obligation="normative">
324
- <title depth="2">A.1.<tab/>Annex A.1</title>
325
- <clause id="Q1" inline-header="false" obligation="normative">
326
- <title depth="3">A.1.1.<tab/>Annex A.1a</title>
327
- </clause>
328
- </clause>
329
- </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
330
- <title depth="1">2.<tab/>Normative References</title>
331
- </references><clause id="S" obligation="informative" displayorder="9">
332
- <title depth="1">Bibliography</title>
333
- <references id="T" obligation="informative" normative="false">
334
- <title depth="2">Bibliography Subsection</title>
335
- </references>
336
- </clause>
337
- </bibliography>
338
- </iso-standard>
304
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
305
+ <bibdata>
306
+ <language current="true">tlh</language>
307
+ <status>
308
+ <stage>published</stage>
309
+ <substage>withdrawn</substage>
310
+ </status>
311
+ <edition language=''>2</edition>
312
+ <edition language='tlh'>second edition</edition>
313
+ <ext>
314
+ <doctype>brochure</doctype>
315
+ </ext>
316
+ </bibdata>
317
+ <preface>
318
+ <foreword obligation="informative" displayorder="1">
319
+ <title>Foreword</title>
320
+ <p id="A">See <xref target="M">Clause 5</xref></p>
321
+ </foreword>
322
+ <introduction id="B" obligation="informative" displayorder="2"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
323
+ <title depth="2">Introduction Subsection</title>
324
+ </clause>
325
+ </introduction></preface><sections>
326
+ <clause id="D" obligation="normative" type="scope" displayorder="3">
327
+ <title depth="1">1.<tab/>Scope</title>
328
+ <p id="E">Text</p>
329
+ </clause>
330
+ <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
331
+ <title depth="2">3.1.<tab/>Normal Terms</title>
332
+ <term id="J"><name>3.1.1.</name>
333
+ <preferred><strong>Term2</strong></preferred>
334
+ </term>
335
+ </terms>
336
+ <definitions id="K"><title>3.2.</title>
337
+ <dl>
338
+ <dt>Symbol</dt>
339
+ <dd>Definition</dd>
340
+ </dl>
341
+ </definitions>
342
+ </clause>
343
+ <definitions id="L" displayorder="6"><title>4.</title>
344
+ <dl>
345
+ <dt>Symbol</dt>
346
+ <dd>Definition</dd>
347
+ </dl>
348
+ </definitions>
349
+ <clause id="M" inline-header="false" obligation="normative" displayorder="7"><title depth="1">5.<tab/>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
350
+ <title depth="2">5.1.<tab/>Introduction</title>
351
+ </clause>
352
+ <clause id="O" inline-header="false" obligation="normative">
353
+ <title depth="2">5.2.<tab/>Clause 4.2</title>
354
+ </clause></clause>
355
+ </sections><annex id="P" inline-header="false" obligation="normative" displayorder="8">
356
+ <title><strong>Annex A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
357
+ <clause id="Q" inline-header="false" obligation="normative">
358
+ <title depth="2">A.1.<tab/>Annex A.1</title>
359
+ <clause id="Q1" inline-header="false" obligation="normative">
360
+ <title depth="3">A.1.1.<tab/>Annex A.1a</title>
361
+ </clause>
362
+ </clause>
363
+ </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
364
+ <title depth="1">2.<tab/>Normative References</title>
365
+ </references><clause id="S" obligation="informative" displayorder="9">
366
+ <title depth="1">Bibliography</title>
367
+ <references id="T" obligation="informative" normative="false">
368
+ <title depth="2">Bibliography Subsection</title>
369
+ </references>
370
+ </clause>
371
+ </bibliography>
372
+ </iso-standard>
339
373
  OUTPUT
340
374
  expect(xmlpp(IsoDoc::PresentationXMLConvert.new({})
341
375
  .convert("test", input, true)
@@ -348,6 +382,14 @@ RSpec.describe IsoDoc do
348
382
  <iso-standard xmlns="http://riboseinc.com/isoxml">
349
383
  <bibdata>
350
384
  <language>fr</language>
385
+ <status>
386
+ <stage>published</stage>
387
+ <substage>withdrawn</substage>
388
+ </status>
389
+ <edition>2</edition>
390
+ <ext>
391
+ <doctype>brochure</doctype>
392
+ </ext>
351
393
  </bibdata>
352
394
  <preface>
353
395
  <foreword obligation="informative">
@@ -410,66 +452,75 @@ RSpec.describe IsoDoc do
410
452
  INPUT
411
453
 
412
454
  presxml = <<~"PRESXML"
413
- <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
414
- <bibdata>
415
- <language current="true">fr</language>
416
- </bibdata>
417
- <preface>
418
- <foreword obligation="informative" displayorder="1">
419
- <title>Foreword</title>
420
- <p id="A">See <xref target="M">Article 5</xref></p>
421
- </foreword>
422
- <introduction id="B" obligation="informative" displayorder="2"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
423
- <title depth="2">Introduction Subsection</title>
424
- </clause>
425
- </introduction></preface><sections>
426
- <clause id="D" obligation="normative" type="scope" displayorder="3">
427
- <title depth="1">1.<tab/>Scope</title>
428
- <p id="E">Text</p>
429
- </clause>
430
- <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
431
- <title depth="2">3.1.<tab/>Normal Terms</title>
432
- <term id="J"><name>3.1.1.</name>
433
- <preferred><strong>Term2</strong></preferred>
434
- </term>
435
- </terms>
436
- <definitions id="K"><title>3.2.</title>
437
- <dl>
438
- <dt>Symbol</dt>
439
- <dd>Definition</dd>
440
- </dl>
441
- </definitions>
442
- </clause>
443
- <definitions id="L" displayorder="6"><title>4.</title>
444
- <dl>
445
- <dt>Symbol</dt>
446
- <dd>Definition</dd>
447
- </dl>
448
- </definitions>
449
- <clause id="M" inline-header="false" obligation="normative" displayorder="7"><title depth="1">5.<tab/>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
450
- <title depth="2">5.1.<tab/>Introduction</title>
451
- </clause>
452
- <clause id="O" inline-header="false" obligation="normative">
453
- <title depth="2">5.2.<tab/>Clause 4.2</title>
454
- </clause></clause>
455
- </sections><annex id="P" inline-header="false" obligation="normative" displayorder="8">
456
- <title><strong>Annexe A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
457
- <clause id="Q" inline-header="false" obligation="normative">
458
- <title depth="2">A.1.<tab/>Annex A.1</title>
459
- <clause id="Q1" inline-header="false" obligation="normative">
460
- <title depth="3">A.1.1.<tab/>Annex A.1a</title>
455
+ <iso-standard xmlns="http://riboseinc.com/isoxml" type="presentation">
456
+ <bibdata>
457
+ <language current="true">fr</language>
458
+ <status>
459
+ <stage>published</stage>
460
+ <substage>withdrawn</substage>
461
+ </status>
462
+ <edition language=''>2</edition>
463
+ <edition language='fr'>deuxi&#xE8;me &#xE9;dition</edition>
464
+ <ext>
465
+ <doctype>brochure</doctype>
466
+ </ext>
467
+ </bibdata>
468
+ <preface>
469
+ <foreword obligation="informative" displayorder="1">
470
+ <title>Foreword</title>
471
+ <p id="A">See <xref target="M">Article 5</xref></p>
472
+ </foreword>
473
+ <introduction id="B" obligation="informative" displayorder="2"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
474
+ <title depth="2">Introduction Subsection</title>
461
475
  </clause>
462
- </clause>
463
- </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
464
- <title depth="1">2.<tab/>Normative References</title>
465
- </references><clause id="S" obligation="informative" displayorder="9">
466
- <title depth="1">Bibliographie</title>
467
- <references id="T" obligation="informative" normative="false">
468
- <title depth="2">Bibliography Subsection</title>
469
- </references>
470
- </clause>
471
- </bibliography>
472
- </iso-standard>
476
+ </introduction></preface><sections>
477
+ <clause id="D" obligation="normative" type="scope" displayorder="3">
478
+ <title depth="1">1.<tab/>Scope</title>
479
+ <p id="E">Text</p>
480
+ </clause>
481
+ <clause id="H" obligation="normative" displayorder="5"><title depth="1">3.<tab/>Terms, definitions, symbols and abbreviated terms</title><terms id="I" obligation="normative">
482
+ <title depth="2">3.1.<tab/>Normal Terms</title>
483
+ <term id="J"><name>3.1.1.</name>
484
+ <preferred><strong>Term2</strong></preferred>
485
+ </term>
486
+ </terms>
487
+ <definitions id="K"><title>3.2.</title>
488
+ <dl>
489
+ <dt>Symbol</dt>
490
+ <dd>Definition</dd>
491
+ </dl>
492
+ </definitions>
493
+ </clause>
494
+ <definitions id="L" displayorder="6"><title>4.</title>
495
+ <dl>
496
+ <dt>Symbol</dt>
497
+ <dd>Definition</dd>
498
+ </dl>
499
+ </definitions>
500
+ <clause id="M" inline-header="false" obligation="normative" displayorder="7"><title depth="1">5.<tab/>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
501
+ <title depth="2">5.1.<tab/>Introduction</title>
502
+ </clause>
503
+ <clause id="O" inline-header="false" obligation="normative">
504
+ <title depth="2">5.2.<tab/>Clause 4.2</title>
505
+ </clause></clause>
506
+ </sections><annex id="P" inline-header="false" obligation="normative" displayorder="8">
507
+ <title><strong>Annexe A</strong><br/>(normative)<br/><br/><strong>Annex</strong></title>
508
+ <clause id="Q" inline-header="false" obligation="normative">
509
+ <title depth="2">A.1.<tab/>Annex A.1</title>
510
+ <clause id="Q1" inline-header="false" obligation="normative">
511
+ <title depth="3">A.1.1.<tab/>Annex A.1a</title>
512
+ </clause>
513
+ </clause>
514
+ </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
515
+ <title depth="1">2.<tab/>Normative References</title>
516
+ </references><clause id="S" obligation="informative" displayorder="9">
517
+ <title depth="1">Bibliographie</title>
518
+ <references id="T" obligation="informative" normative="false">
519
+ <title depth="2">Bibliography Subsection</title>
520
+ </references>
521
+ </clause>
522
+ </bibliography>
523
+ </iso-standard>
473
524
  PRESXML
474
525
 
475
526
  output = <<~"OUTPUT"
@@ -558,6 +609,14 @@ RSpec.describe IsoDoc do
558
609
  <bibdata>
559
610
  <language>zh</language>
560
611
  <script>Hans</script>
612
+ <status>
613
+ <stage>published</stage>
614
+ <substage>withdrawn</substage>
615
+ </status>
616
+ <edition>2</edition>
617
+ <ext>
618
+ <doctype>brochure</doctype>
619
+ </ext>
561
620
  </bibdata>
562
621
  <preface>
563
622
  <foreword obligation="informative">
@@ -632,6 +691,15 @@ RSpec.describe IsoDoc do
632
691
  <bibdata>
633
692
  <language current="true">zh</language>
634
693
  <script current="true">Hans</script>
694
+ <status>
695
+ <stage>published</stage>
696
+ <substage>withdrawn</substage>
697
+ </status>
698
+ <edition language=''>2</edition>
699
+ <edition language='zh'>&#x7B2C;&#x7B2C;&#x4E8C;&#x7248;</edition>
700
+ <ext>
701
+ <doctype>brochure</doctype>
702
+ </ext>
635
703
  </bibdata>
636
704
  <preface>
637
705
  <foreword obligation="informative" displayorder="1">
@@ -682,14 +750,8 @@ RSpec.describe IsoDoc do
682
750
  </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
683
751
  <title depth="1">2.<tab/>Normative References</title>
684
752
  <bibitem id="ISO712" type="standard">
685
- <title format="text/plain">Cereals and cereal products</title>
753
+ <formattedref><em>Cereals and cereal products</em>.</formattedref>
686
754
  <docidentifier>ISO 712</docidentifier>
687
- <contributor>
688
- <role type="publisher"/>
689
- <organization>
690
- <abbreviation>ISO</abbreviation>
691
- </organization>
692
- </contributor>
693
755
  </bibitem>
694
756
  </references><clause id="S" obligation="informative" displayorder="9">
695
757
  <title depth="1">Bibliography</title>
@@ -727,7 +789,7 @@ RSpec.describe IsoDoc do
727
789
  </div>
728
790
  <div>
729
791
  <h1>2.&#12288;Normative References</h1>
730
- <p id="ISO712" class="NormRef">ISO 712, <i>Cereals and cereal products</i></p>
792
+ <p id="ISO712" class="NormRef">ISO 712, <i>Cereals and cereal products</i>.</p>
731
793
  </div>
732
794
  <div id="H"><h1>3.&#12288;Terms, definitions, symbols and abbreviated terms</h1>
733
795
  <div id="I">
@@ -795,6 +857,7 @@ RSpec.describe IsoDoc do
795
857
  <stage>published</stage>
796
858
  <substage>withdrawn</substage>
797
859
  </status>
860
+ <edition>2</edition>
798
861
  <ext>
799
862
  <doctype>brochure</doctype>
800
863
  </ext>
@@ -879,10 +942,18 @@ RSpec.describe IsoDoc do
879
942
  <stage language="">published</stage><stage language="eo">publikigita</stage>
880
943
  <substage language="">withdrawn</substage><substage language="eo">fortirita</substage>
881
944
  </status>
945
+ <edition language=''>2</edition>
946
+ <edition language='eo'>eldono dua</edition>
882
947
  <ext>
883
948
  <doctype language="">brochure</doctype><doctype language="eo">bro&#x15D;uro</doctype>
884
949
  </ext>
885
- </bibdata><localized-strings><localized-string key="foreword" language="eo">Anta&#x16D;parolo</localized-string><localized-string key="introduction" language="eo">Enkonduko</localized-string><localized-string key="clause" language="eo">kla&#x16D;zo</localized-string><localized-string key="table" language="eo">tabelo</localized-string><localized-string key="source" language="eo">SOURCE</localized-string><localized-string key="modified" language="eo">modified</localized-string><localized-string key="scope" language="eo">Amplekso</localized-string><localized-string key="symbols" language="eo">Simboloj kai mallongigitaj terminoj</localized-string><localized-string key="annex" language="eo"><strong>aldono</strong></localized-string><localized-string key="normref" language="eo">Normaj cita&#x135;oj</localized-string><localized-string key="bibliography" language="eo">Bibliografio</localized-string><localized-string key="inform_annex" language="eo">informa</localized-string><localized-string key="all_parts" language="eo">&#x109;iuj partoj</localized-string><localized-string key="norm_annex" language="eo">normative</localized-string><localized-string key='figure' language='eo'>figur-etikedo duvorta</localized-string><localized-string key='example' language='eo'>Ekzempl-etikedo Duvorta</localized-string><localized-string key="note" language="eo">NOTO</localized-string><localized-string key="locality.table" language="eo">Tabelo</localized-string><localized-string key="doctype_dict.brochure" language="eo">bro&#x15D;uro</localized-string><localized-string key="doctype_dict.conference_proceedings" language="eo">konferencaktoj</localized-string><localized-string key="stage_dict.published" language="eo">publikigita</localized-string><localized-string key="substage_dict.withdrawn" language="eo">fortirita</localized-string><localized-string key="array.0" language="eo">elem1</localized-string><localized-string key="array.1" language="eo">elem2</localized-string><localized-string key="array.2.elem3" language="eo">elem4</localized-string><localized-string key="array.2.elem5" language="eo">elem6</localized-string><localized-string key="language" language="eo">eo</localized-string><localized-string key="script" language="eo">Latn</localized-string></localized-strings>
950
+ </bibdata><localized-strings><localized-string key="foreword" language="eo">Anta&#x16D;parolo</localized-string><localized-string key="introduction" language="eo">Enkonduko</localized-string><localized-string key="clause" language="eo">kla&#x16D;zo</localized-string><localized-string key="table" language="eo">tabelo</localized-string><localized-string key="source" language="eo">SOURCE</localized-string><localized-string key="modified" language="eo">modified</localized-string><localized-string key="scope" language="eo">Amplekso</localized-string><localized-string key="symbols" language="eo">Simboloj kai mallongigitaj terminoj</localized-string><localized-string key="annex" language="eo"><strong>aldono</strong></localized-string><localized-string key="normref" language="eo">Normaj cita&#x135;oj</localized-string><localized-string key="bibliography" language="eo">Bibliografio</localized-string><localized-string key="inform_annex" language="eo">informa</localized-string><localized-string key="all_parts" language="eo">&#x109;iuj partoj</localized-string><localized-string key="norm_annex" language="eo">normative</localized-string><localized-string key='figure' language='eo'>figur-etikedo duvorta</localized-string><localized-string key='example' language='eo'>Ekzempl-etikedo Duvorta</localized-string><localized-string key="note" language="eo">NOTO</localized-string><localized-string key="locality.table" language="eo">Tabelo</localized-string><localized-string key="doctype_dict.brochure" language="eo">bro&#x15D;uro</localized-string><localized-string key="doctype_dict.conference_proceedings" language="eo">konferencaktoj</localized-string><localized-string key="stage_dict.published" language="eo">publikigita</localized-string><localized-string key="substage_dict.withdrawn" language="eo">fortirita</localized-string><localized-string key="array.0" language="eo">elem1</localized-string><localized-string key="array.1" language="eo">elem2</localized-string><localized-string key="array.2.elem3" language="eo">elem4</localized-string><localized-string key="array.2.elem5" language="eo">elem6</localized-string>
951
+ <localized-string key='ordinal_keys.0' language='eo'>number</localized-string>
952
+ <localized-string key='SpelloutRules.sg' language='eo'>spellout-ordinal</localized-string>
953
+ <localized-string key='SpelloutRules.pl' language='eo'>spellout-ordinal</localized-string>
954
+ <localized-string key='edition_ordinal' language='eo'>eldono %Spellout</localized-string>
955
+ <localized-string key='edition' language='eo'>eldono</localized-string>
956
+ <localized-string key="language" language="eo">eo</localized-string><localized-string key="script" language="eo">Latn</localized-string></localized-strings>
886
957
  <preface>
887
958
  <foreword obligation="informative" displayorder="1">
888
959
  <title>Foreword</title>
@@ -935,14 +1006,8 @@ RSpec.describe IsoDoc do
935
1006
  </annex><bibliography><references id="R" obligation="informative" normative="true" displayorder="4">
936
1007
  <title depth="1">2.<tab/>Normative References</title>
937
1008
  <bibitem id="ISO712" type="standard">
938
- <title format="text/plain">Cereals and cereal products</title>
1009
+ <formattedref><em>Cereals and cereal products</em>.</formattedref>
939
1010
  <docidentifier>ISO 712</docidentifier>
940
- <contributor>
941
- <role type="publisher"/>
942
- <organization>
943
- <abbreviation>ISO</abbreviation>
944
- </organization>
945
- </contributor>
946
1011
  </bibitem>
947
1012
  </references><clause id="S" obligation="informative" displayorder="9">
948
1013
  <title depth="1">Bibliography</title>
@@ -999,7 +1064,7 @@ RSpec.describe IsoDoc do
999
1064
  <h1>2.&#160; Normative References</h1>
1000
1065
  <p id='ISO712' class='NormRef'>
1001
1066
  ISO 712,
1002
- <i>Cereals and cereal products</i>
1067
+ <i>Cereals and cereal products</i>.
1003
1068
  </p>
1004
1069
  </div>
1005
1070
  <div id='H'>
@@ -1119,13 +1184,17 @@ RSpec.describe IsoDoc do
1119
1184
  expect(c.i18n.l10n("hello!", "fa", "Arab")).to eq "&#x61c;hello!&#x61c;"
1120
1185
  end
1121
1186
 
1122
-
1123
1187
  private
1124
1188
 
1125
1189
  def mock_i18n
1126
1190
  allow_any_instance_of(::IsoDoc::I18n)
1127
1191
  .to receive(:load_yaml)
1128
- .with("eo", "Latn", "spec/assets/i18n.yaml")
1192
+ .with("eo", "Latn", nil, nil)
1193
+ .and_return(IsoDoc::I18n.new("eo", "Latn")
1194
+ .normalise_hash(YAML.load_file("spec/assets/i18n.yaml")))
1195
+ allow_any_instance_of(::IsoDoc::I18n)
1196
+ .to receive(:load_yaml)
1197
+ .with("eo", "Latn", "spec/assets/i18n.yaml", nil)
1129
1198
  .and_return(IsoDoc::I18n.new("eo", "Latn")
1130
1199
  .normalise_hash(YAML.load_file("spec/assets/i18n.yaml")))
1131
1200
  end