metanorma-standoc 1.9.0 → 1.10.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.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +3 -13
- data/.hound.yml +3 -1
- data/.rubocop.yml +4 -8
- data/lib/asciidoctor/standoc/base.rb +31 -35
- data/lib/asciidoctor/standoc/biblio.rng +1 -0
- data/lib/asciidoctor/standoc/blocks.rb +25 -9
- data/lib/asciidoctor/standoc/blocks_notes.rb +41 -24
- data/lib/asciidoctor/standoc/cleanup.rb +59 -84
- data/lib/asciidoctor/standoc/cleanup_block.rb +63 -85
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +28 -15
- data/lib/asciidoctor/standoc/cleanup_footnotes.rb +1 -0
- data/lib/asciidoctor/standoc/cleanup_image.rb +71 -0
- data/lib/asciidoctor/standoc/cleanup_inline.rb +117 -77
- data/lib/asciidoctor/standoc/cleanup_maths.rb +36 -27
- data/lib/asciidoctor/standoc/cleanup_ref.rb +31 -15
- data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +1 -1
- data/lib/asciidoctor/standoc/cleanup_reqt.rb +47 -0
- data/lib/asciidoctor/standoc/cleanup_section.rb +77 -135
- data/lib/asciidoctor/standoc/cleanup_section_names.rb +75 -0
- data/lib/asciidoctor/standoc/cleanup_terms.rb +19 -18
- data/lib/asciidoctor/standoc/converter.rb +7 -2
- data/lib/asciidoctor/standoc/datamodel/plantuml_renderer.rb +67 -66
- data/lib/asciidoctor/standoc/front.rb +35 -18
- data/lib/asciidoctor/standoc/front_contributor.rb +70 -45
- data/lib/asciidoctor/standoc/inline.rb +45 -34
- data/lib/asciidoctor/standoc/isodoc.rng +209 -4
- data/lib/asciidoctor/standoc/lists.rb +4 -2
- data/lib/asciidoctor/standoc/macros.rb +11 -11
- data/lib/asciidoctor/standoc/macros_form.rb +63 -0
- data/lib/asciidoctor/standoc/macros_plantuml.rb +19 -21
- data/lib/asciidoctor/standoc/macros_terms.rb +33 -23
- data/lib/asciidoctor/standoc/ref.rb +87 -112
- data/lib/asciidoctor/standoc/ref_date_id.rb +62 -0
- data/lib/asciidoctor/standoc/ref_sect.rb +20 -17
- data/lib/asciidoctor/standoc/section.rb +3 -1
- data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +40 -27
- data/lib/asciidoctor/standoc/terms.rb +25 -18
- data/lib/asciidoctor/standoc/utils.rb +35 -9
- data/lib/asciidoctor/standoc/validate.rb +48 -33
- data/lib/metanorma-standoc.rb +0 -1
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +4 -4
- data/spec/asciidoctor/base_spec.rb +701 -508
- data/spec/asciidoctor/blocks_spec.rb +831 -738
- data/spec/asciidoctor/cleanup_sections_spec.rb +51 -14
- data/spec/asciidoctor/cleanup_spec.rb +889 -682
- data/spec/asciidoctor/inline_spec.rb +62 -14
- data/spec/asciidoctor/isobib_cache_spec.rb +404 -358
- data/spec/asciidoctor/lists_spec.rb +149 -137
- data/spec/asciidoctor/macros_plantuml_spec.rb +8 -8
- data/spec/asciidoctor/macros_spec.rb +923 -503
- data/spec/asciidoctor/macros_yaml2text_spec.rb +1 -1
- data/spec/asciidoctor/refs_dl_spec.rb +4 -4
- data/spec/asciidoctor/refs_spec.rb +1528 -1533
- data/spec/asciidoctor/section_spec.rb +405 -299
- data/spec/asciidoctor/table_spec.rb +6 -6
- data/spec/asciidoctor/validate_spec.rb +342 -304
- data/spec/spec_helper.rb +13 -9
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +54 -54
- data/spec/vcr_cassettes/isobib_get_123.yml +13 -13
- data/spec/vcr_cassettes/isobib_get_123_1.yml +25 -25
- data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +37 -37
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +12 -12
- data/spec/vcr_cassettes/isobib_get_124.yml +13 -13
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +14 -14
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +46 -46
- metadata +16 -15
- data/lib/liquid/custom_blocks/key_iterator.rb +0 -21
- data/lib/liquid/custom_blocks/with_json_nested_context.rb +0 -18
- data/lib/liquid/custom_blocks/with_yaml_nested_context.rb +0 -19
- data/lib/liquid/custom_filters/values.rb +0 -7
@@ -2,7 +2,7 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
RSpec.describe Asciidoctor::Standoc do
|
4
4
|
it "processes sections" do
|
5
|
-
|
5
|
+
input = <<~INPUT
|
6
6
|
#{ASCIIDOC_BLANK_HDR}
|
7
7
|
.Foreword
|
8
8
|
|
@@ -95,112 +95,115 @@ RSpec.describe Asciidoctor::Standoc do
|
|
95
95
|
[index,type=thematic]
|
96
96
|
== Thematic Index
|
97
97
|
INPUT
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
98
|
+
output = <<~OUTPUT
|
99
|
+
#{BLANK_HDR.sub(/<status>/, '<abstract> <p>Text</p> </abstract><status>')}
|
100
|
+
<preface><abstract id="_">
|
101
|
+
<title>Abstract</title>
|
102
|
+
<p id="_">Text</p>
|
103
|
+
</abstract><foreword id='_' obligation="informative">
|
104
|
+
<title>Foreword</title>
|
105
|
+
<p id="_">Text</p>
|
106
|
+
</foreword><introduction id="_" obligation="informative">
|
107
|
+
<title>Introduction</title>
|
108
|
+
<clause id="_" inline-header="false" obligation="informative">
|
109
|
+
<title>Introduction Subsection</title>
|
110
|
+
</clause>
|
111
|
+
</introduction>
|
112
|
+
<clause id='_' inline-header='false' obligation='informative'>
|
113
|
+
<title>Dedication</title>
|
114
|
+
</clause>
|
115
|
+
<acknowledgements id='_' obligation='informative'>
|
116
|
+
<title>Acknowledgements</title>
|
117
|
+
</acknowledgements>
|
118
|
+
</preface><sections>
|
119
|
+
<clause id="_" inline-header="false" obligation="normative" type="scope">
|
120
|
+
<title>Scope</title>
|
121
|
+
<p id="_">Text</p>
|
122
|
+
</clause>
|
123
|
+
<terms id="_" obligation="normative">
|
124
|
+
<title>Terms and definitions</title>
|
125
|
+
<p id="_">For the purposes of this document,
|
126
|
+
the following terms and definitions apply.</p>
|
127
|
+
<term id="term-term1">
|
128
|
+
<preferred>Term1</preferred>
|
129
|
+
</term>
|
130
|
+
</terms>
|
131
|
+
<clause id="_" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title>
|
132
|
+
<p id='_'>Boilerplate text</p>
|
133
|
+
<clause id="_" inline-header="false" obligation="normative">
|
134
|
+
<title>Introduction</title>
|
135
|
+
<clause id="_" inline-header="false" obligation="normative">
|
136
|
+
<title>Intro 1</title>
|
137
|
+
</clause>
|
138
|
+
</clause>
|
139
|
+
<terms id="_" obligation="normative">
|
140
|
+
<title>Intro 2</title>
|
141
|
+
<clause id="_" inline-header="false" obligation="normative">
|
142
|
+
<title>Intro 3</title>
|
143
|
+
</clause>
|
144
|
+
</terms>
|
145
|
+
<clause id="_" obligation="normative">
|
146
|
+
<title>Intro 4</title>
|
147
|
+
<terms id="_" obligation="normative">
|
148
|
+
<title>Intro 5</title>
|
149
|
+
<term id="term-term1-1">
|
150
|
+
<preferred>Term1</preferred>
|
151
|
+
</term>
|
152
|
+
</terms>
|
153
|
+
</clause>
|
154
|
+
<terms id="_" obligation="normative">
|
155
|
+
<title>Normal Terms</title>
|
156
|
+
<term id="term-term2">
|
157
|
+
<preferred>Term2</preferred>
|
158
|
+
</term>
|
159
|
+
</terms>
|
160
|
+
<definitions id="_" obligation="normative"><title>Symbols and abbreviated terms</title><clause id="_" inline-header="false" obligation="normative">
|
161
|
+
<title>General</title>
|
162
|
+
</clause>
|
163
|
+
<definitions id="_" obligation="normative" type="symbols">
|
164
|
+
<title>Symbols</title>
|
165
|
+
</definitions></definitions></clause>
|
166
|
+
<definitions id="_" obligation="normative" type="abbreviated_terms">
|
167
|
+
<title>Abbreviated terms</title>
|
168
|
+
</definitions>
|
169
|
+
<clause id="_" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="_" inline-header="false" obligation="normative">
|
170
|
+
<title>Introduction</title>
|
171
|
+
</clause>
|
172
|
+
<clause id="_" inline-header="false" obligation="normative">
|
173
|
+
<title>Clause 4.2</title>
|
174
|
+
</clause></clause>
|
175
|
+
<clause id="_" inline-header="false" obligation="normative">
|
176
|
+
<title>Terms and Definitions</title>
|
177
|
+
</clause>
|
178
|
+
</sections><annex id="_" inline-header="false" obligation="normative">
|
179
|
+
<title>Annex</title>
|
180
|
+
<clause id="_" inline-header="false" obligation="normative">
|
181
|
+
<title>Annex A.1</title>
|
182
|
+
</clause>
|
183
|
+
</annex><bibliography><references id="_" obligation="informative" normative="true">
|
184
|
+
<title>Normative references</title>
|
185
|
+
<p id="_">There are no normative references in this document.</p>
|
186
|
+
</references><clause id="_" obligation="informative">
|
187
|
+
<title>Bibliography</title>
|
188
|
+
<references id="_" obligation="informative" normative="false">
|
189
|
+
<title>Bibliography Subsection</title>
|
190
|
+
</references>
|
191
|
+
</clause></bibliography>
|
192
|
+
<indexsect id='_'>
|
193
|
+
<title>Index</title>
|
194
|
+
<p id='_'>This is an index</p>
|
195
|
+
</indexsect>
|
196
|
+
<indexsect id='_' type='thematic'>
|
197
|
+
<title>Thematic Index</title>
|
198
|
+
</indexsect>
|
199
|
+
</standard-document>
|
199
200
|
OUTPUT
|
201
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
202
|
+
.to be_equivalent_to xmlpp(output)
|
200
203
|
end
|
201
204
|
|
202
205
|
it "processes sections with number attributes" do
|
203
|
-
|
206
|
+
input = <<~INPUT
|
204
207
|
#{ASCIIDOC_BLANK_HDR}
|
205
208
|
[number=1bis]
|
206
209
|
== Scope
|
@@ -264,6 +267,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
264
267
|
[number=20bis]
|
265
268
|
=== Bibliography Subsection
|
266
269
|
INPUT
|
270
|
+
output = <<~OUTPUT
|
267
271
|
#{BLANK_HDR}
|
268
272
|
<sections>
|
269
273
|
<clause id='_' number='1bis' type='scope' inline-header='false' obligation='normative'>
|
@@ -335,10 +339,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
335
339
|
</bibliography>
|
336
340
|
</standard-document>
|
337
341
|
OUTPUT
|
342
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
343
|
+
.to be_equivalent_to xmlpp(output)
|
338
344
|
end
|
339
345
|
|
340
346
|
it "processes sections with language and script attributes" do
|
341
|
-
|
347
|
+
input = <<~INPUT
|
342
348
|
#{ASCIIDOC_BLANK_HDR}
|
343
349
|
[language=en,script=Latn]
|
344
350
|
== Foreword
|
@@ -442,105 +448,108 @@ RSpec.describe Asciidoctor::Standoc do
|
|
442
448
|
[language=en,script=Latn]
|
443
449
|
=== Bibliography Subsection
|
444
450
|
INPUT
|
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
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
451
|
+
output = <<~OUTPUT
|
452
|
+
#{BLANK_HDR.sub(/<status>/, '<abstract> <p>Text</p> </abstract><status>')}
|
453
|
+
<preface><abstract id="_" language="en" script="Latn">
|
454
|
+
<title>Abstract</title>
|
455
|
+
<p id="_">Text</p>
|
456
|
+
</abstract><foreword id='_' language='en' script='Latn' obligation='informative'>
|
457
|
+
<title>Foreword</title>
|
458
|
+
<p id="_">Text</p>
|
459
|
+
</foreword><introduction id="_" language="en" script="Latn" obligation="informative">
|
460
|
+
<title>Introduction</title>
|
461
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="informative">
|
462
|
+
<title>Introduction Subsection</title>
|
463
|
+
</clause>
|
464
|
+
</introduction>
|
465
|
+
<clause id='_' language='en' script='Latn' inline-header='false' obligation='informative'>
|
466
|
+
<title>Dedication</title>
|
467
|
+
</clause>
|
468
|
+
<acknowledgements id='_' language='en' script='Latn' obligation='informative'>
|
469
|
+
<title>Acknowledgements</title>
|
470
|
+
</acknowledgements>
|
471
|
+
</preface><sections>
|
472
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="normative" type="scope">
|
473
|
+
<title>Scope</title>
|
474
|
+
<p id="_">Text</p>
|
475
|
+
</clause>
|
476
|
+
<terms id="_" language="en" script="Latn" obligation="normative">
|
477
|
+
<title>Terms and definitions</title>
|
478
|
+
<p id="_">For the purposes of this document,
|
479
|
+
the following terms and definitions apply.</p>
|
480
|
+
<term id="term-term1" language="en" script="Latn">
|
481
|
+
<preferred>Term1</preferred>
|
482
|
+
</term>
|
483
|
+
</terms>
|
484
|
+
<clause id="_" language="en" script="Latn" obligation="normative"><title>Terms, definitions, symbols and abbreviated terms</title>
|
485
|
+
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
486
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
487
|
+
<title>Introduction</title>
|
488
|
+
<clause id="_" inline-header="false" obligation="normative">
|
489
|
+
<title>Intro 1</title>
|
490
|
+
</clause>
|
491
|
+
</clause>
|
492
|
+
<terms id="_" language="en" script="Latn" obligation="normative">
|
493
|
+
<title>Intro 2</title>
|
494
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
495
|
+
<title>Intro 3</title>
|
496
|
+
</clause>
|
497
|
+
</terms>
|
498
|
+
<clause id="_" language="en" script="Latn" obligation="normative">
|
499
|
+
<title>Intro 4</title>
|
500
|
+
<terms id="_" language="en" script="Latn" obligation="normative">
|
501
|
+
<title>Intro 5</title>
|
502
|
+
<term id="term-term1-1">
|
503
|
+
<preferred>Term1</preferred>
|
504
|
+
</term>
|
505
|
+
</terms>
|
506
|
+
</clause>
|
507
|
+
<terms id="_" language="en" script="Latn" obligation="normative">
|
508
|
+
<title>Normal Terms</title>
|
509
|
+
<term id="term-term2">
|
510
|
+
<preferred>Term2</preferred>
|
511
|
+
</term>
|
512
|
+
</terms>
|
513
|
+
<definitions id="_" language="en" script="Latn" obligation="normative"><title>Symbols and abbreviated terms</title><clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
514
|
+
<title>General</title>
|
515
|
+
</clause>
|
516
|
+
<definitions id="_" obligation="normative" type="symbols">
|
517
|
+
<title>Symbols</title>
|
518
|
+
</definitions></definitions></clause>
|
519
|
+
<definitions id="_" language="en" script="Latn" obligation="normative" type="abbreviated_terms">
|
520
|
+
<title>Abbreviated terms</title>
|
521
|
+
</definitions>
|
522
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
523
|
+
<title>Introduction</title>
|
524
|
+
</clause>
|
525
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
526
|
+
<title>Clause 4.2</title>
|
527
|
+
</clause></clause>
|
528
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
529
|
+
<title>Terms and Definitions</title>
|
530
|
+
</clause>
|
531
|
+
</sections><annex id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
532
|
+
<title>Annex</title>
|
533
|
+
<clause id="_" language="en" script="Latn" inline-header="false" obligation="normative">
|
534
|
+
<title>Annex A.1</title>
|
535
|
+
</clause>
|
536
|
+
</annex><bibliography><references id="_" language="en" script="Latn" obligation="informative" normative="true">
|
537
|
+
<title>Normative references</title>
|
538
|
+
<p id="_">There are no normative references in this document.</p>
|
539
|
+
</references><clause id="_" language="en" script="Latn" obligation="informative">
|
540
|
+
<title>Bibliography</title>
|
541
|
+
<references id="_" language="en" script="Latn" obligation="informative" normative="false">
|
542
|
+
<title>Bibliography Subsection</title>
|
543
|
+
</references>
|
544
|
+
</clause></bibliography>
|
545
|
+
</standard-document>
|
539
546
|
OUTPUT
|
547
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
548
|
+
.to be_equivalent_to xmlpp(output)
|
540
549
|
end
|
541
550
|
|
542
551
|
it "processes sections with title and type attributes" do
|
543
|
-
|
552
|
+
input = <<~INPUT
|
544
553
|
#{ASCIIDOC_BLANK_HDR}
|
545
554
|
.Foreword
|
546
555
|
|
@@ -598,6 +607,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
598
607
|
|
599
608
|
=== Bibliography Subsection
|
600
609
|
INPUT
|
610
|
+
output = <<~OUTPUT
|
601
611
|
#{BLANK_HDR.sub(/<status>/, '<abstract> <p>Text</p> </abstract><status>')}
|
602
612
|
<preface>
|
603
613
|
<abstract id='_'>
|
@@ -672,10 +682,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
672
682
|
</bibliography>
|
673
683
|
</standard-document>
|
674
684
|
OUTPUT
|
685
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
686
|
+
.to be_equivalent_to xmlpp(output)
|
675
687
|
end
|
676
688
|
|
677
689
|
it "varies terms & symbols title" do
|
678
|
-
|
690
|
+
input = <<~INPUT
|
679
691
|
#{ASCIIDOC_BLANK_HDR}
|
680
692
|
[heading="terms, definitions, symbols and abbreviated terms"]
|
681
693
|
== Terms, Definitions, Symbols Section
|
@@ -685,8 +697,9 @@ RSpec.describe Asciidoctor::Standoc do
|
|
685
697
|
=== Symbols
|
686
698
|
|
687
699
|
INPUT
|
688
|
-
|
689
|
-
|
700
|
+
output = <<~OUTPUT
|
701
|
+
#{BLANK_HDR}
|
702
|
+
<sections>
|
690
703
|
<terms id='_' obligation='normative'>
|
691
704
|
<title>Terms, definitions and symbols</title>
|
692
705
|
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
@@ -700,20 +713,23 @@ RSpec.describe Asciidoctor::Standoc do
|
|
700
713
|
</sections>
|
701
714
|
</standard-document>
|
702
715
|
OUTPUT
|
716
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
717
|
+
.to be_equivalent_to xmlpp(output)
|
703
718
|
end
|
704
719
|
|
705
720
|
it "varies terms & abbreviated terms title" do
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
721
|
+
input = <<~INPUT
|
722
|
+
#{ASCIIDOC_BLANK_HDR}
|
723
|
+
[heading="terms, definitions, symbols and abbreviated terms"]
|
724
|
+
== Terms, Definitions, Abbreviated Terms Section
|
710
725
|
|
711
|
-
|
726
|
+
=== Term
|
712
727
|
|
713
|
-
|
714
|
-
|
728
|
+
[heading="abbreviated terms"]
|
729
|
+
=== Symbols
|
715
730
|
|
716
731
|
INPUT
|
732
|
+
output = <<~OUTPUT
|
717
733
|
#{BLANK_HDR}
|
718
734
|
<sections>
|
719
735
|
<terms id='_' obligation='normative'>
|
@@ -729,10 +745,48 @@ RSpec.describe Asciidoctor::Standoc do
|
|
729
745
|
</sections>
|
730
746
|
</standard-document>
|
731
747
|
OUTPUT
|
748
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
749
|
+
.to be_equivalent_to xmlpp(output)
|
750
|
+
end
|
751
|
+
|
752
|
+
it "varies terms symbols & abbreviated terms title" do
|
753
|
+
input = <<~INPUT
|
754
|
+
#{ASCIIDOC_BLANK_HDR}
|
755
|
+
[heading="terms, definitions, symbols and abbreviated terms"]
|
756
|
+
== Terms, Definitions, Abbreviated Terms Section
|
757
|
+
|
758
|
+
=== Term
|
759
|
+
|
760
|
+
=== Abbreviated Terms
|
761
|
+
|
762
|
+
=== Symbols
|
763
|
+
|
764
|
+
INPUT
|
765
|
+
output = <<~OUTPUT
|
766
|
+
#{BLANK_HDR}
|
767
|
+
<sections>
|
768
|
+
<terms id='_' obligation='normative'>
|
769
|
+
<title>Terms, definitions, symbols and abbreviated terms</title>
|
770
|
+
<p id='_'>For the purposes of this document, the following terms and definitions apply.</p>
|
771
|
+
<term id='term-term'>
|
772
|
+
<preferred>Term</preferred>
|
773
|
+
</term>
|
774
|
+
<definitions id='_' type='abbreviated_terms' obligation='normative'>
|
775
|
+
<title>Abbreviated terms</title>
|
776
|
+
</definitions>
|
777
|
+
<definitions id='_' type='symbols' obligation='normative'>
|
778
|
+
<title>Symbols</title>
|
779
|
+
</definitions>
|
780
|
+
</terms>
|
781
|
+
</sections>
|
782
|
+
</standard-document>
|
783
|
+
OUTPUT
|
784
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
785
|
+
.to be_equivalent_to xmlpp(output)
|
732
786
|
end
|
733
787
|
|
734
788
|
it "processes section obligations" do
|
735
|
-
|
789
|
+
input = <<~INPUT
|
736
790
|
#{ASCIIDOC_BLANK_HDR}
|
737
791
|
[obligation=informative]
|
738
792
|
== Clause 1
|
@@ -745,6 +799,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
745
799
|
[appendix,obligation=informative]
|
746
800
|
== Annex
|
747
801
|
INPUT
|
802
|
+
output = <<~OUTPUT
|
748
803
|
#{BLANK_HDR}
|
749
804
|
<sections><clause id="_" inline-header="false" obligation="informative">
|
750
805
|
<title>Clause 1</title>
|
@@ -760,10 +815,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
760
815
|
</annex>
|
761
816
|
</standard-document>
|
762
817
|
OUTPUT
|
818
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
819
|
+
.to be_equivalent_to xmlpp(output)
|
763
820
|
end
|
764
821
|
|
765
822
|
it "processes inline headers" do
|
766
|
-
|
823
|
+
input = <<~INPUT
|
767
824
|
#{ASCIIDOC_BLANK_HDR}
|
768
825
|
== Clause 1
|
769
826
|
|
@@ -776,6 +833,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
776
833
|
[%inline-header]
|
777
834
|
=== Clause Aa
|
778
835
|
INPUT
|
836
|
+
output = <<~OUTPUT
|
779
837
|
#{BLANK_HDR}
|
780
838
|
<sections><clause id="_" inline-header="false" obligation="normative">
|
781
839
|
<title>Clause 1</title>
|
@@ -791,16 +849,19 @@ RSpec.describe Asciidoctor::Standoc do
|
|
791
849
|
</annex>
|
792
850
|
</standard-document>
|
793
851
|
OUTPUT
|
852
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
853
|
+
.to be_equivalent_to xmlpp(output)
|
794
854
|
end
|
795
855
|
|
796
856
|
it "processes blank headers" do
|
797
|
-
|
857
|
+
input = <<~INPUT
|
798
858
|
#{ASCIIDOC_BLANK_HDR}
|
799
859
|
== Clause 1
|
800
860
|
|
801
861
|
=== {blank}
|
802
862
|
|
803
863
|
INPUT
|
864
|
+
output = <<~OUTPUT
|
804
865
|
#{BLANK_HDR}
|
805
866
|
<sections>
|
806
867
|
<clause id="_" inline-header="false" obligation="normative">
|
@@ -811,10 +872,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
811
872
|
</sections>
|
812
873
|
</standard-document>
|
813
874
|
OUTPUT
|
875
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
876
|
+
.to be_equivalent_to xmlpp(output)
|
814
877
|
end
|
815
878
|
|
816
879
|
it "processes terminal nodes in terms with term subsection names" do
|
817
|
-
|
880
|
+
input = <<~INPUT
|
818
881
|
#{ASCIIDOC_BLANK_HDR}
|
819
882
|
|
820
883
|
== Terms, definitions, symbols and abbreviated terms
|
@@ -824,6 +887,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
824
887
|
=== Symbols
|
825
888
|
|
826
889
|
INPUT
|
890
|
+
output = <<~OUTPUT
|
827
891
|
#{BLANK_HDR}
|
828
892
|
<sections>
|
829
893
|
<terms id='_' obligation='normative'>
|
@@ -839,10 +903,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
839
903
|
</sections>
|
840
904
|
</standard-document>
|
841
905
|
OUTPUT
|
906
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
907
|
+
.to be_equivalent_to xmlpp(output)
|
842
908
|
end
|
843
909
|
|
844
910
|
it "processes terms & definitions with external source" do
|
845
|
-
|
911
|
+
input = <<~INPUT
|
846
912
|
#{ASCIIDOC_BLANK_HDR}
|
847
913
|
|
848
914
|
Foreword
|
@@ -853,25 +919,28 @@ RSpec.describe Asciidoctor::Standoc do
|
|
853
919
|
=== Term1
|
854
920
|
|
855
921
|
INPUT
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
922
|
+
output = <<~OUTPUT
|
923
|
+
#{BLANK_HDR}
|
924
|
+
<termdocsource bibitemid="iso1234"/><termdocsource bibitemid="iso5678"/>
|
925
|
+
<preface><foreword id='_' obligation="informative">
|
926
|
+
<title>Foreword</title>
|
927
|
+
<p id="_">Foreword</p>
|
928
|
+
</foreword></preface><sections>
|
929
|
+
<terms id="_" obligation="normative">
|
930
|
+
<title>Terms and definitions</title><p id="_">For the purposes of this document, the terms and definitions
|
931
|
+
given in <eref bibitemid="iso1234"/> and <eref bibitemid="iso5678"/> and the following apply.</p>
|
932
|
+
<term id="term-term1">
|
933
|
+
<preferred>Term1</preferred>
|
934
|
+
</term>
|
935
|
+
</terms></sections>
|
936
|
+
</standard-document>
|
870
937
|
OUTPUT
|
938
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
939
|
+
.to be_equivalent_to xmlpp(output)
|
871
940
|
end
|
872
941
|
|
873
942
|
it "processes empty terms & definitions" do
|
874
|
-
|
943
|
+
input = <<~INPUT
|
875
944
|
#{ASCIIDOC_BLANK_HDR}
|
876
945
|
|
877
946
|
Foreword
|
@@ -880,6 +949,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
880
949
|
|
881
950
|
|
882
951
|
INPUT
|
952
|
+
output = <<~OUTPUT
|
883
953
|
#{BLANK_HDR}
|
884
954
|
<preface><foreword id='_' obligation="informative">
|
885
955
|
<title>Foreword</title>
|
@@ -891,10 +961,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
891
961
|
</standard-document>
|
892
962
|
|
893
963
|
OUTPUT
|
964
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
965
|
+
.to be_equivalent_to xmlpp(output)
|
894
966
|
end
|
895
967
|
|
896
968
|
it "processes empty terms & definitions with external source" do
|
897
|
-
|
969
|
+
input = <<~INPUT
|
898
970
|
#{ASCIIDOC_BLANK_HDR}
|
899
971
|
|
900
972
|
Foreword
|
@@ -903,6 +975,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
903
975
|
== Terms and Definitions
|
904
976
|
|
905
977
|
INPUT
|
978
|
+
output = <<~OUTPUT
|
906
979
|
#{BLANK_HDR}
|
907
980
|
<termdocsource bibitemid="iso1234"/><termdocsource bibitemid="iso5678"/>
|
908
981
|
<preface><foreword id='_' obligation="informative">
|
@@ -913,16 +986,15 @@ RSpec.describe Asciidoctor::Standoc do
|
|
913
986
|
<title>Terms and definitions</title>
|
914
987
|
<p id="_">For the purposes of this document,
|
915
988
|
the terms and definitions given in <eref bibitemid="iso1234"/> and <eref bibitemid="iso5678"/> apply.</p>
|
916
|
-
|
917
|
-
|
918
989
|
</terms></sections>
|
919
990
|
</standard-document>
|
920
|
-
|
921
991
|
OUTPUT
|
992
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
993
|
+
.to be_equivalent_to xmlpp(output)
|
922
994
|
end
|
923
995
|
|
924
996
|
it "processes term document sources in French" do
|
925
|
-
|
997
|
+
input = <<~INPUT
|
926
998
|
= Document title
|
927
999
|
Author
|
928
1000
|
:docfile: test.adoc
|
@@ -937,6 +1009,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
937
1009
|
== Terms and Definitions
|
938
1010
|
|
939
1011
|
INPUT
|
1012
|
+
output = <<~OUTPUT
|
940
1013
|
#{BLANK_HDR.sub(%r{<language>en</language>}, '<language>fr</language>')}
|
941
1014
|
<termdocsource bibitemid="iso1234"/><termdocsource bibitemid="iso5678"/>
|
942
1015
|
<preface><foreword id='_' obligation="informative">
|
@@ -946,16 +1019,15 @@ RSpec.describe Asciidoctor::Standoc do
|
|
946
1019
|
<terms id="_" obligation="normative">
|
947
1020
|
<title>Terms et définitions</title>
|
948
1021
|
<p id="_">Pour les besoins du présent document, les termes et définitions de <eref bibitemid="iso1234"/> et <eref bibitemid="iso5678"/> s’appliquent.</p>
|
949
|
-
|
950
|
-
|
951
1022
|
</terms></sections>
|
952
1023
|
</standard-document>
|
953
|
-
|
954
1024
|
OUTPUT
|
1025
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1026
|
+
.to be_equivalent_to xmlpp(output)
|
955
1027
|
end
|
956
1028
|
|
957
1029
|
it "processes term document sources in Chinese" do
|
958
|
-
|
1030
|
+
input = <<~INPUT
|
959
1031
|
= Document title
|
960
1032
|
Author
|
961
1033
|
:docfile: test.adoc
|
@@ -971,77 +1043,86 @@ RSpec.describe Asciidoctor::Standoc do
|
|
971
1043
|
== Terms and Definitions
|
972
1044
|
|
973
1045
|
INPUT
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
1046
|
+
output = <<~OUTPUT
|
1047
|
+
#{BLANK_HDR.sub(%r{<language>en</language>}, '<language>zh</language>').sub(%r{<script>Latn</script>}, '<script>Hans</script>')}
|
1048
|
+
<termdocsource bibitemid="iso1234"/><termdocsource bibitemid="iso5678"/><preface><foreword id='_' obligation="informative">
|
1049
|
+
<title>前言</title>
|
1050
|
+
<p id="_">Foreword</p>
|
1051
|
+
</foreword></preface><sections>
|
1052
|
+
<terms id="_" obligation="normative">
|
1053
|
+
<title>术语和定义</title><p id="_"><eref bibitemid="iso1234"/>和<eref bibitemid="iso5678"/>界定的术语和定义适用于本文件。</p>
|
1054
|
+
</terms></sections>
|
1055
|
+
</standard-document>
|
983
1056
|
OUTPUT
|
1057
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1058
|
+
.to be_equivalent_to xmlpp(output)
|
984
1059
|
end
|
985
1060
|
|
986
1061
|
it "warn about external source for terms & definitions that does not point anywhere" do
|
987
|
-
|
988
|
-
|
1062
|
+
input = <<~INPUT
|
1063
|
+
#{ASCIIDOC_BLANK_HDR}
|
989
1064
|
|
990
|
-
|
991
|
-
|
992
|
-
|
1065
|
+
[source="iso712"]
|
1066
|
+
== Terms and Definitions
|
1067
|
+
=== Term2
|
993
1068
|
INPUT
|
1069
|
+
expect { Asciidoctor.convert(input, *OPTIONS) }
|
1070
|
+
.to output(/not referenced/).to_stderr
|
994
1071
|
end
|
995
1072
|
|
996
1073
|
it "treats terminal terms subclause named as terms clause as a normal clause" do
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1074
|
+
input = <<~INPUT
|
1075
|
+
#{ASCIIDOC_BLANK_HDR}
|
1076
|
+
[[tda]]
|
1077
|
+
== Terms, definitions, symbols and abbreviations
|
1001
1078
|
|
1002
|
-
|
1003
|
-
|
1079
|
+
[[terms]]
|
1080
|
+
=== Terms and definitions
|
1004
1081
|
|
1005
|
-
|
1082
|
+
=== Symbols
|
1006
1083
|
|
1007
1084
|
INPUT
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1085
|
+
output = <<~OUTPUT
|
1086
|
+
#{BLANK_HDR}
|
1087
|
+
<sections>
|
1088
|
+
<terms id='tda' obligation='normative'>
|
1089
|
+
<title>Terms, definitions and symbols</title>
|
1090
|
+
<p id='_'>No terms and definitions are listed in this document.</p>
|
1091
|
+
<clause id='terms' inline-header='false' obligation='normative'>
|
1092
|
+
<title>Terms and definitions</title>
|
1093
|
+
</clause>
|
1094
|
+
<definitions id='_' obligation="normative" type="symbols">
|
1095
|
+
<title>Symbols</title>
|
1096
|
+
</definitions>
|
1097
|
+
</terms>
|
1098
|
+
</sections>
|
1099
|
+
</standard-document>
|
1022
1100
|
OUTPUT
|
1101
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1102
|
+
.to be_equivalent_to xmlpp(output)
|
1023
1103
|
end
|
1024
1104
|
|
1025
1105
|
it "treats non-terminal terms subclause named as terms clause as a terms clause" do
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1106
|
+
input = <<~INPUT
|
1107
|
+
#{ASCIIDOC_BLANK_HDR}
|
1108
|
+
== Scope
|
1029
1109
|
|
1030
|
-
|
1031
|
-
|
1110
|
+
[[tda]]
|
1111
|
+
== Terms, definitions, symbols and abbreviations
|
1032
1112
|
|
1033
|
-
|
1034
|
-
|
1113
|
+
[[terms]]
|
1114
|
+
=== Terms and definitions
|
1035
1115
|
|
1036
|
-
|
1037
|
-
|
1116
|
+
[[terms-concepts]]
|
1117
|
+
==== Basic concepts
|
1038
1118
|
|
1039
|
-
|
1040
|
-
|
1119
|
+
[[term-date]]
|
1120
|
+
===== date
|
1041
1121
|
|
1042
|
-
|
1122
|
+
_time_ (<<term-time>>) on the _calendar_ (<<term-calendar>>) _time scale_ (<<term-time-scale>>)
|
1043
1123
|
|
1044
1124
|
INPUT
|
1125
|
+
output = <<~OUTPUT
|
1045
1126
|
#{BLANK_HDR}
|
1046
1127
|
<sections>
|
1047
1128
|
<clause id='_' inline-header='false' obligation='normative' type="scope">
|
@@ -1079,28 +1160,31 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1079
1160
|
</sections>
|
1080
1161
|
</standard-document>
|
1081
1162
|
OUTPUT
|
1163
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1164
|
+
.to be_equivalent_to xmlpp(output)
|
1082
1165
|
end
|
1083
1166
|
|
1084
1167
|
it "leaves alone special titles in preface or appendix" do
|
1085
|
-
|
1086
|
-
|
1168
|
+
input = <<~INPUT
|
1169
|
+
#{ASCIIDOC_BLANK_HDR}
|
1087
1170
|
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1171
|
+
[.preface]
|
1172
|
+
[[t1]]
|
1173
|
+
== Terms and definitions
|
1091
1174
|
|
1092
|
-
|
1093
|
-
|
1175
|
+
[[t2]]
|
1176
|
+
=== Term1
|
1094
1177
|
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1178
|
+
[appendix,language=fr]
|
1179
|
+
[[sym]]
|
1180
|
+
== Symbols and abbreviated terms
|
1098
1181
|
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1182
|
+
[.appendix]
|
1183
|
+
[[app]]
|
1184
|
+
[bibliography]
|
1185
|
+
== Normative Reference
|
1103
1186
|
INPUT
|
1187
|
+
output = <<~OUTPUT
|
1104
1188
|
#{BLANK_HDR}
|
1105
1189
|
<preface>
|
1106
1190
|
<terms id='t1' obligation='normative'>
|
@@ -1123,5 +1207,27 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1123
1207
|
</annex>
|
1124
1208
|
</standard-document>
|
1125
1209
|
OUTPUT
|
1210
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1211
|
+
.to be_equivalent_to xmlpp(output)
|
1126
1212
|
end
|
1213
|
+
|
1214
|
+
it "recognises special titles despite following indexterms" do
|
1215
|
+
input = <<~INPUT
|
1216
|
+
#{ASCIIDOC_BLANK_HDR}
|
1217
|
+
|
1218
|
+
== Scope (((indexterm)))
|
1219
|
+
INPUT
|
1220
|
+
output = <<~OUTPUT
|
1221
|
+
#{BLANK_HDR}
|
1222
|
+
<sections>
|
1223
|
+
<clause id='_' type='scope' inline-header='false' obligation='normative'>
|
1224
|
+
<title>Scope</title>
|
1225
|
+
</clause>
|
1226
|
+
</sections>
|
1227
|
+
</standard-document>
|
1228
|
+
OUTPUT
|
1229
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
|
1230
|
+
.to be_equivalent_to xmlpp(output)
|
1231
|
+
end
|
1232
|
+
|
1127
1233
|
end
|