metanorma-standoc 1.11.0 → 1.11.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/lib/asciidoctor/standoc/base.rb +4 -100
  4. data/lib/asciidoctor/standoc/blocks.rb +1 -1
  5. data/lib/asciidoctor/standoc/cleanup.rb +2 -1
  6. data/lib/asciidoctor/standoc/cleanup_block.rb +1 -2
  7. data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +28 -20
  8. data/lib/asciidoctor/standoc/cleanup_inline.rb +14 -4
  9. data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +25 -15
  10. data/lib/asciidoctor/standoc/cleanup_reqt.rb +3 -3
  11. data/lib/asciidoctor/standoc/cleanup_section_names.rb +2 -2
  12. data/lib/asciidoctor/standoc/cleanup_terms.rb +58 -21
  13. data/lib/asciidoctor/standoc/cleanup_terms_designations.rb +50 -19
  14. data/lib/asciidoctor/standoc/cleanup_text.rb +23 -0
  15. data/lib/asciidoctor/standoc/datamodel/attributes_table_preprocessor.rb +6 -6
  16. data/lib/asciidoctor/standoc/front.rb +1 -1
  17. data/lib/asciidoctor/standoc/inline.rb +13 -11
  18. data/lib/asciidoctor/standoc/isodoc.rng +68 -18
  19. data/lib/asciidoctor/standoc/lists.rb +1 -3
  20. data/lib/asciidoctor/standoc/ref.rb +101 -75
  21. data/lib/asciidoctor/standoc/ref_date_id.rb +30 -1
  22. data/lib/asciidoctor/standoc/ref_sect.rb +18 -7
  23. data/lib/asciidoctor/standoc/render.rb +117 -0
  24. data/lib/asciidoctor/standoc/reqt.rb +1 -1
  25. data/lib/asciidoctor/standoc/section.rb +20 -15
  26. data/lib/asciidoctor/standoc/utils.rb +0 -16
  27. data/lib/asciidoctor/standoc/validate.rb +1 -1
  28. data/lib/isodoc/html/htmlstyle.css +1 -1
  29. data/lib/isodoc/html/htmlstyle.scss +1 -1
  30. data/lib/metanorma/standoc/version.rb +1 -1
  31. data/metanorma-standoc.gemspec +3 -3
  32. data/spec/asciidoctor/blocks_spec.rb +99 -17
  33. data/spec/asciidoctor/cleanup_blocks_spec.rb +24 -0
  34. data/spec/asciidoctor/cleanup_sections_spec.rb +1 -1
  35. data/spec/asciidoctor/cleanup_spec.rb +6 -6
  36. data/spec/asciidoctor/cleanup_terms_spec.rb +448 -89
  37. data/spec/asciidoctor/datamodel/attributes_table_preprocessor_spec.rb +21 -21
  38. data/spec/asciidoctor/datamodel/diagram_preprocessor_spec.rb +16 -16
  39. data/spec/asciidoctor/inline_spec.rb +5 -5
  40. data/spec/asciidoctor/isobib_cache_spec.rb +4 -8
  41. data/spec/asciidoctor/macros_spec.rb +2 -2
  42. data/spec/asciidoctor/refs_dl_spec.rb +4 -4
  43. data/spec/asciidoctor/refs_spec.rb +858 -498
  44. data/spec/asciidoctor/section_spec.rb +32 -3
  45. data/spec/spec_helper.rb +2 -2
  46. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +179 -179
  47. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec1.yml +14 -14
  48. data/spec/vcr_cassettes/isobib_get_123.yml +13 -13
  49. data/spec/vcr_cassettes/isobib_get_123_1.yml +96 -96
  50. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +108 -108
  51. data/spec/vcr_cassettes/isobib_get_123_2001.yml +12 -12
  52. data/spec/vcr_cassettes/isobib_get_124.yml +13 -13
  53. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +18 -18
  54. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +46 -46
  55. metadata +9 -8
@@ -4,7 +4,7 @@ require "relaton_ietf"
4
4
 
5
5
  RSpec.describe Asciidoctor::Standoc do
6
6
  it "processes simple ISO reference" do
7
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
7
+ input = <<~INPUT
8
8
  #{ASCIIDOC_BLANK_HDR}
9
9
  [bibliography]
10
10
  == Normative References
@@ -12,6 +12,7 @@ RSpec.describe Asciidoctor::Standoc do
12
12
  * [[[iso123,ISO 123]]] _Standard_
13
13
  * [[[iso124,(1)ISO 123]]] _Standard_
14
14
  INPUT
15
+ output = <<~OUTPUT
15
16
  #{BLANK_HDR}
16
17
  <sections>
17
18
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -44,10 +45,12 @@ RSpec.describe Asciidoctor::Standoc do
44
45
  </bibliography>
45
46
  </standard-document>
46
47
  OUTPUT
48
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
49
+ .to be_equivalent_to xmlpp(output)
47
50
  end
48
51
 
49
52
  it "processes simple ISO reference with date range" do
50
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
53
+ input = <<~INPUT
51
54
  #{ASCIIDOC_BLANK_HDR}
52
55
  [bibliography]
53
56
  == Normative References
@@ -55,6 +58,7 @@ RSpec.describe Asciidoctor::Standoc do
55
58
  * [[[iso123,ISO 123:1066-1067]]] _Standard_
56
59
  * [[[iso124,(1)ISO 123:1066-1067]]] _Standard_
57
60
  INPUT
61
+ output = <<~OUTPUT
58
62
  #{BLANK_HDR}
59
63
  <sections>
60
64
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -96,6 +100,8 @@ RSpec.describe Asciidoctor::Standoc do
96
100
  </bibliography>
97
101
  </standard-document>
98
102
  OUTPUT
103
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
104
+ .to be_equivalent_to xmlpp(output)
99
105
  end
100
106
 
101
107
  it "repairs simple fetched ISO reference" do
@@ -113,118 +119,122 @@ RSpec.describe Asciidoctor::Standoc do
113
119
  * [[[iso123,ISO 123]]] _Standard_
114
120
  * [[[iso124,(1)ISO 123]]] _Standard_
115
121
  INPUT
116
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
117
- #{BLANK_HDR}
118
- <preface>
119
- <foreword id='_' obligation='informative'>
120
- <title>Foreword</title>
121
- <p id='_'>
122
- <eref type='inline' bibitemid='iso123' citeas='ISO 123'/>
123
- <eref type='inline' bibitemid='iso124' citeas='[1]'/>
124
- </p>
125
- </foreword>
126
- </preface>
127
- <sections>
128
- </sections><bibliography><references id="_" obligation="informative" normative="true"><title>Normative references</title>
129
- #{NORM_REF_BOILERPLATE}
130
- <bibitem type="standard" id="iso123">
131
- <uri type="src">https://www.iso.org/standard/23281.html</uri>
132
- <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
133
- <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
134
- <date type="published">
135
- <on>2001</on>
136
- </date>
137
- <contributor>
138
- <role type="publisher"/>
139
- <organization>
140
- <name>International Organization for Standardization</name>
141
- <abbreviation>ISO</abbreviation>
142
- <uri>www.iso.org</uri>
143
- </organization>
144
- </contributor>
145
- <edition>3</edition>
146
- <language>en</language>
147
- <language>fr</language>
148
- <script>Latn</script>
149
- <status>
150
- <stage>Published</stage>
151
- </status>
152
- <copyright>
153
- <from>2001</from>
154
- <owner>
122
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
123
+ .to be_equivalent_to xmlpp(<<~"OUTPUT")
124
+ #{BLANK_HDR}
125
+ <preface>
126
+ <foreword id='_' obligation='informative'>
127
+ <title>Foreword</title>
128
+ <p id='_'>
129
+ <eref type='inline' bibitemid='iso123' citeas='ISO 123'/>
130
+ <eref type='inline' bibitemid='iso124' citeas='[1]'/>
131
+ </p>
132
+ </foreword>
133
+ </preface>
134
+ <sections>
135
+ </sections><bibliography><references id="_" obligation="informative" normative="true"><title>Normative references</title>
136
+ #{NORM_REF_BOILERPLATE}
137
+ <bibitem type="standard" id="iso123">
138
+ <uri type="src">https://www.iso.org/standard/23281.html</uri>
139
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
140
+ <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
141
+ <date type="published">
142
+ <on>2001</on>
143
+ </date>
144
+ <contributor>
145
+ <role type="publisher"/>
155
146
  <organization>
156
- <name>ISO</name>
157
- <abbreviation/>
147
+ <name>International Organization for Standardization</name>
148
+ <abbreviation>ISO</abbreviation>
149
+ <uri>www.iso.org</uri>
158
150
  </organization>
159
- </owner>
160
- </copyright>
161
- <relation type="obsoletes">
162
- <bibitem type="standard">
163
- <formattedref format="text/plain">ISO 123:1985</formattedref>
164
- </bibitem>
165
- </relation>
166
- <relation type="updates">
167
- <bibitem type="standard">
168
- <formattedref format="text/plain">ISO 123:2001</formattedref>
169
- </bibitem>
170
- </relation>
171
- <docidentifier>ISO 123</docidentifier>
172
- <title><em>Standard</em></title>
173
- </bibitem>
174
- <bibitem type="standard" id="iso124">
175
- <uri type="src">https://www.iso.org/standard/23281.html</uri>
176
- <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
177
- <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
178
- <date type="published">
179
- <on>2001</on>
180
- </date>
181
- <contributor>
182
- <role type="publisher"/>
183
- <organization>
184
- <name>International Organization for Standardization</name>
185
- <abbreviation>ISO</abbreviation>
186
- <uri>www.iso.org</uri>
187
- </organization>
188
- </contributor>
189
- <edition>3</edition>
190
- <language>en</language>
191
- <language>fr</language>
192
- <script>Latn</script>
193
- <status>
194
- <stage>Published</stage>
195
- </status>
196
- <copyright>
197
- <from>2001</from>
198
- <owner>
151
+ </contributor>
152
+ <edition>3</edition>
153
+ <language>en</language>
154
+ <language>fr</language>
155
+ <script>Latn</script>
156
+ <status>
157
+ <stage>Published</stage>
158
+ </status>
159
+ <copyright>
160
+ <from>2001</from>
161
+ <owner>
162
+ <organization>
163
+ <name>ISO</name>
164
+ <abbreviation/>
165
+ </organization>
166
+ </owner>
167
+ </copyright>
168
+ <relation type="obsoletes">
169
+ <bibitem type="standard">
170
+ <formattedref format="text/plain">ISO 123:1985</formattedref>
171
+ </bibitem>
172
+ </relation>
173
+ <relation type="updates">
174
+ <bibitem type="standard">
175
+ <formattedref format="text/plain">ISO 123:2001</formattedref>
176
+ </bibitem>
177
+ </relation>
178
+ <docidentifier>ISO 123</docidentifier>
179
+ <title><em>Standard</em></title>
180
+ </bibitem>
181
+ <bibitem type="standard" id="iso124">
182
+ <uri type="src">https://www.iso.org/standard/23281.html</uri>
183
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
184
+ <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
185
+ <date type="published">
186
+ <on>2001</on>
187
+ </date>
188
+ <contributor>
189
+ <role type="publisher"/>
199
190
  <organization>
200
- <name>ISO</name>
201
- <abbreviation/>
191
+ <name>International Organization for Standardization</name>
192
+ <abbreviation>ISO</abbreviation>
193
+ <uri>www.iso.org</uri>
202
194
  </organization>
203
- </owner>
204
- </copyright>
205
- <relation type="obsoletes">
206
- <bibitem type="standard">
207
- <formattedref format="text/plain">ISO 123:1985</formattedref>
208
- </bibitem>
209
- </relation>
210
- <relation type="updates">
211
- <bibitem type="standard">
212
- <formattedref format="text/plain">ISO 123:2001</formattedref>
213
- </bibitem>
214
- </relation>
215
- <docidentifier>ISO 123</docidentifier>
216
- <docidentifier type='metanorma'>[1]</docidentifier>
217
- <title><em>Standard</em></title>
218
- </bibitem>
219
- </references></bibliography>
220
- </standard-document>
221
- OUTPUT
222
- expect { Asciidoctor.convert(input, *OPTIONS) }.to output(/ERROR: No document identifier retrieved for ISO 123/).to_stderr
195
+ </contributor>
196
+ <edition>3</edition>
197
+ <language>en</language>
198
+ <language>fr</language>
199
+ <script>Latn</script>
200
+ <status>
201
+ <stage>Published</stage>
202
+ </status>
203
+ <copyright>
204
+ <from>2001</from>
205
+ <owner>
206
+ <organization>
207
+ <name>ISO</name>
208
+ <abbreviation/>
209
+ </organization>
210
+ </owner>
211
+ </copyright>
212
+ <relation type="obsoletes">
213
+ <bibitem type="standard">
214
+ <formattedref format="text/plain">ISO 123:1985</formattedref>
215
+ </bibitem>
216
+ </relation>
217
+ <relation type="updates">
218
+ <bibitem type="standard">
219
+ <formattedref format="text/plain">ISO 123:2001</formattedref>
220
+ </bibitem>
221
+ </relation>
222
+ <docidentifier>ISO 123</docidentifier>
223
+ <docidentifier type='metanorma'>[1]</docidentifier>
224
+ <title><em>Standard</em></title>
225
+ </bibitem>
226
+ </references></bibliography>
227
+ </standard-document>
228
+ OUTPUT
229
+ expect do
230
+ Asciidoctor.convert(input, *OPTIONS)
231
+ end.to output(/ERROR: No document identifier retrieved for ISO 123/)
232
+ .to_stderr
223
233
  end
224
234
 
225
235
  it "fetches simple ISO reference" do
226
236
  VCR.use_cassette "isobib_get_123_1" do
227
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
237
+ input = <<~INPUT
228
238
  #{ISOBIB_BLANK_HDR}
229
239
  [bibliography]
230
240
  == Normative References
@@ -232,124 +242,213 @@ RSpec.describe Asciidoctor::Standoc do
232
242
  * [[[iso123,ISO 123]]] _Standard_
233
243
  * [[[iso124,(1)ISO 123]]] _Standard_
234
244
  INPUT
235
- #{BLANK_HDR}
236
- <sections>
245
+ output = <<~OUTPUT
246
+ #{BLANK_HDR}
247
+ <sections>
237
248
 
238
- </sections><bibliography><references id="_" obligation="informative" normative="true"><title>Normative references</title>
239
- #{NORM_REF_BOILERPLATE}
240
- <bibitem id='iso123' type='standard'>
241
- <fetched>#{Date.today}</fetched>
242
- <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
243
- <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
244
- <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
245
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
246
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
247
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
248
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
249
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
250
- <docnumber>123</docnumber>
251
- <date type='published'>
252
- <on>2001-05</on>
253
- </date>
254
- <contributor>
255
- <role type='publisher'/>
256
- <organization>
257
- <name>International Organization for Standardization</name>
258
- <abbreviation>ISO</abbreviation>
259
- <uri>www.iso.org</uri>
260
- </organization>
261
- </contributor>
262
- <edition>3</edition>
263
- <language>en</language>
264
- <script>Latn</script>
265
- <abstract format='text/plain' language='en' script='Latn'>
266
- This International Standard specifies procedures for sampling natural
267
- rubber latex concentrate and for sampling synthetic rubber latices and
268
- artificial latices. It is also suitable for sampling rubber latex
269
- contained in drums, tank cars or tanks. The procedures may also be
270
- used for sampling plastics dispersions.
271
- </abstract>
272
- <status>
273
- <stage>90</stage>
274
- <substage>93</substage>
275
- </status>
276
- <copyright>
277
- <from>2001</from>
278
- <owner>
279
- <organization>
280
- <name>ISO</name>
281
- </organization>
282
- </owner>
283
- </copyright>
284
- <relation type='obsoletes'>
285
- <bibitem type='standard'>
286
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
287
- </bibitem>
288
- </relation>
289
- <place>Geneva</place>
290
- </bibitem>
291
- <bibitem id='iso124' type='standard'>
292
- <fetched>#{Date.today}</fetched>
293
- <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
294
- <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
295
- <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
296
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
297
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
298
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
299
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
300
- <docidentifier type='metanorma'>[1]</docidentifier>
301
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
302
- <docnumber>123</docnumber>
303
- <date type='published'>
304
- <on>2001-05</on>
305
- </date>
306
- <contributor>
307
- <role type='publisher'/>
308
- <organization>
309
- <name>International Organization for Standardization</name>
310
- <abbreviation>ISO</abbreviation>
311
- <uri>www.iso.org</uri>
312
- </organization>
313
- </contributor>
314
- <edition>3</edition>
315
- <language>en</language>
316
- <script>Latn</script>
317
- <abstract format='text/plain' language='en' script='Latn'>
318
- This International Standard specifies procedures for sampling natural
319
- rubber latex concentrate and for sampling synthetic rubber latices and
320
- artificial latices. It is also suitable for sampling rubber latex
321
- contained in drums, tank cars or tanks. The procedures may also be
322
- used for sampling plastics dispersions.
323
- </abstract>
324
- <status>
325
- <stage>90</stage>
326
- <substage>93</substage>
327
- </status>
328
- <copyright>
329
- <from>2001</from>
330
- <owner>
331
- <organization>
332
- <name>ISO</name>
333
- </organization>
334
- </owner>
335
- </copyright>
336
- <relation type='obsoletes'>
337
- <bibitem type='standard'>
338
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
339
- </bibitem>
340
- </relation>
341
- <place>Geneva</place>
342
- </bibitem>
343
- </references>
344
- </bibliography>
345
- </standard-document>
249
+ </sections><bibliography><references id="_" obligation="informative" normative="true"><title>Normative references</title>
250
+ #{NORM_REF_BOILERPLATE}
251
+ <bibitem id='iso123' type='standard'>
252
+ <fetched/>
253
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
254
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
255
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
256
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
257
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
258
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
259
+ <docidentifier type='ISO'>ISO 123</docidentifier>
260
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
261
+ <docnumber>123</docnumber>
262
+ <contributor>
263
+ <role type='publisher'/>
264
+ <organization>
265
+ <name>International Organization for Standardization</name>
266
+ <abbreviation>ISO</abbreviation>
267
+ <uri>www.iso.org</uri>
268
+ </organization>
269
+ </contributor>
270
+ <edition>3</edition>
271
+ <language>en</language>
272
+ <script>Latn</script>
273
+ <status>
274
+ <stage>90</stage>
275
+ <substage>93</substage>
276
+ </status>
277
+ <copyright>
278
+ <from>2001</from>
279
+ <owner>
280
+ <organization>
281
+ <name>ISO</name>
282
+ </organization>
283
+ </owner>
284
+ </copyright>
285
+ <relation type='obsoletes'>
286
+ <bibitem type='standard'>
287
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
288
+ </bibitem>
289
+ </relation>
290
+ <relation type='instance'>
291
+ <bibitem type='standard'>
292
+ <fetched/>
293
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
294
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
295
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
296
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
297
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
298
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
299
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
300
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
301
+ <docnumber>123</docnumber>
302
+ <date type='published'>
303
+ <on>2001-05</on>
304
+ </date>
305
+ <contributor>
306
+ <role type='publisher'/>
307
+ <organization>
308
+ <name>International Organization for Standardization</name>
309
+ <abbreviation>ISO</abbreviation>
310
+ <uri>www.iso.org</uri>
311
+ </organization>
312
+ </contributor>
313
+ <edition>3</edition>
314
+ <language>en</language>
315
+ <script>Latn</script>
316
+ <abstract format='text/plain' language='en' script='Latn'>
317
+ This International Standard specifies procedures for sampling
318
+ natural rubber latex concentrate and for sampling synthetic rubber
319
+ latices and artificial latices. It is also suitable for sampling
320
+ rubber latex contained in drums, tank cars or tanks. The
321
+ procedures may also be used for sampling plastics dispersions.
322
+ </abstract>
323
+ <status>
324
+ <stage>90</stage>
325
+ <substage>93</substage>
326
+ </status>
327
+ <copyright>
328
+ <from>2001</from>
329
+ <owner>
330
+ <organization>
331
+ <name>ISO</name>
332
+ </organization>
333
+ </owner>
334
+ </copyright>
335
+ <relation type='obsoletes'>
336
+ <bibitem type='standard'>
337
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
338
+ </bibitem>
339
+ </relation>
340
+ <place>Geneva</place>
341
+ </bibitem>
342
+ </relation>
343
+ <place>Geneva</place>
344
+ </bibitem>
345
+ <bibitem id='iso124' type='standard'>
346
+ <fetched/>
347
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
348
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
349
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
350
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
351
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
352
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
353
+ <docidentifier type='ISO'>ISO 123</docidentifier>
354
+ <docidentifier type='metanorma'>[1]</docidentifier>
355
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
356
+ <docnumber>123</docnumber>
357
+ <contributor>
358
+ <role type='publisher'/>
359
+ <organization>
360
+ <name>International Organization for Standardization</name>
361
+ <abbreviation>ISO</abbreviation>
362
+ <uri>www.iso.org</uri>
363
+ </organization>
364
+ </contributor>
365
+ <edition>3</edition>
366
+ <language>en</language>
367
+ <script>Latn</script>
368
+ <status>
369
+ <stage>90</stage>
370
+ <substage>93</substage>
371
+ </status>
372
+ <copyright>
373
+ <from>2001</from>
374
+ <owner>
375
+ <organization>
376
+ <name>ISO</name>
377
+ </organization>
378
+ </owner>
379
+ </copyright>
380
+ <relation type='obsoletes'>
381
+ <bibitem type='standard'>
382
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
383
+ </bibitem>
384
+ </relation>
385
+ <relation type='instance'>
386
+ <bibitem type='standard'>
387
+ <fetched/>
388
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
389
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
390
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
391
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
392
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
393
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
394
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
395
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
396
+ <docnumber>123</docnumber>
397
+ <date type='published'>
398
+ <on>2001-05</on>
399
+ </date>
400
+ <contributor>
401
+ <role type='publisher'/>
402
+ <organization>
403
+ <name>International Organization for Standardization</name>
404
+ <abbreviation>ISO</abbreviation>
405
+ <uri>www.iso.org</uri>
406
+ </organization>
407
+ </contributor>
408
+ <edition>3</edition>
409
+ <language>en</language>
410
+ <script>Latn</script>
411
+ <abstract format='text/plain' language='en' script='Latn'>
412
+ This International Standard specifies procedures for sampling
413
+ natural rubber latex concentrate and for sampling synthetic rubber
414
+ latices and artificial latices. It is also suitable for sampling
415
+ rubber latex contained in drums, tank cars or tanks. The
416
+ procedures may also be used for sampling plastics dispersions.
417
+ </abstract>
418
+ <status>
419
+ <stage>90</stage>
420
+ <substage>93</substage>
421
+ </status>
422
+ <copyright>
423
+ <from>2001</from>
424
+ <owner>
425
+ <organization>
426
+ <name>ISO</name>
427
+ </organization>
428
+ </owner>
429
+ </copyright>
430
+ <relation type='obsoletes'>
431
+ <bibitem type='standard'>
432
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
433
+ </bibitem>
434
+ </relation>
435
+ <place>Geneva</place>
436
+ </bibitem>
437
+ </relation>
438
+ <place>Geneva</place>
439
+ </bibitem>
440
+ </references>
441
+ </bibliography>
442
+ </standard-document>
346
443
  OUTPUT
444
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
445
+ .to be_equivalent_to xmlpp(output)
347
446
  end
348
447
  end
349
448
 
350
449
  it "fetches simple ISO reference in French" do
351
450
  VCR.use_cassette "isobib_get_123_1_fr" do
352
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
451
+ input = <<~INPUT
353
452
  = Document title
354
453
  Author
355
454
  :docfile: test.adoc
@@ -364,138 +463,233 @@ RSpec.describe Asciidoctor::Standoc do
364
463
  * [[[iso123,ISO 123]]] _Standard_
365
464
  * [[[iso124,(1)ISO 123]]] _Standard_
366
465
  INPUT
367
- #{BLANK_HDR.sub(%r{<language>en</language>}, '<language>fr</language>')}
368
- <sections>
369
- </sections><bibliography>
370
- <references id='_' normative='true' obligation='informative'>
371
- <title>Références normatives</title>
372
- <p id='_'>
373
- Les documents suivants cités dans le texte constituent, pour tout ou
374
- partie de leur contenu, des exigences du présent document. Pour les
375
- références datées, seule l’édition citée s’applique. Pour les références
376
- non datées, la dernière édition du document de référence s’applique (y
377
- compris les éventuels amendements).
378
- </p>
379
- <bibitem id='iso123' type='standard'>
380
- <fetched>#{Date.today}</fetched>
466
+ output = <<~OUTPUT
467
+ #{BLANK_HDR.sub(%r{<language>en</language>}, '<language>fr</language>')}
468
+ <sections> </sections>
469
+ <bibliography>
470
+ <references id='_' normative='true' obligation='informative'>
471
+ <title>R&#233;f&#233;rences normatives</title>
472
+ <p id='_'>
473
+ Les documents suivants cit&#233;s dans le texte constituent, pour tout
474
+ ou partie de leur contenu, des exigences du pr&#233;sent document. Pour
475
+ les r&#233;f&#233;rences dat&#233;es, seule l&#8217;&#233;dition
476
+ cit&#233;e s&#8217;applique. Pour les r&#233;f&#233;rences non
477
+ dat&#233;es, la derni&#232;re &#233;dition du document de
478
+ r&#233;f&#233;rence s&#8217;applique (y compris les &#233;ventuels
479
+ amendements).
480
+ </p>
481
+ <bibitem id='iso123' type='standard'>
482
+ <fetched/>
381
483
  <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
382
- <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
383
- <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
384
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
385
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
386
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
387
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
388
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
389
- <docnumber>123</docnumber>
390
- <date type='published'>
391
- <on>2001-05</on>
392
- </date>
393
- <contributor>
394
- <role type='publisher'/>
395
- <organization>
396
- <name>International Organization for Standardization</name>
397
- <abbreviation>ISO</abbreviation>
398
- <uri>www.iso.org</uri>
399
- </organization>
400
- </contributor>
401
- <edition>3</edition>
402
- <language>en</language>
403
- <language>fr</language>
404
- <script>Latn</script>
405
- <abstract format='text/plain' language='fr' script='Latn'>
406
- La pr&#233;sente Norme internationale sp&#233;cifie des m&#233;thodes
407
- d&#8217;&#233;chantillonnage pour des concentr&#233;s de latex de
408
- caoutchouc naturel et pour &#233;chantillonner des latex de caoutchouc
409
- synth&#233;tique et des latex artificiels. Elle s&#8217;applique
410
- &#233;galement &#224; l&#8217;&#233;chantillonnage de latex de
411
- caoutchouc contenus dans des f&#251;ts, citernes routi&#232;res ou de
412
- stockage. Le mode op&#233;ratoire peut aussi &#234;tre utilis&#233;
413
- pour l&#8217;&#233;chantillonnage de dispersions de plastiques.
414
- </abstract>
415
- <status>
416
- <stage>90</stage>
417
- <substage>93</substage>
418
- </status>
419
- <copyright>
420
- <from>2001</from>
421
- <owner>
422
- <organization>
423
- <name>ISO</name>
424
- </organization>
425
- </owner>
426
- </copyright>
427
- <relation type='obsoletes'>
428
- <bibitem type='standard'>
429
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
430
- </bibitem>
431
- </relation>
432
- <place>Geneva</place>
433
- </bibitem>
434
- <bibitem id='iso124' type='standard'>
435
- <fetched>#{Date.today}</fetched>
436
- <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
437
- <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
438
- <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
439
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
440
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
441
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
442
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
443
- <docidentifier type='metanorma'>[1]</docidentifier>
444
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
445
- <docnumber>123</docnumber>
446
- <date type='published'>
447
- <on>2001-05</on>
448
- </date>
449
- <contributor>
450
- <role type='publisher'/>
451
- <organization>
452
- <name>International Organization for Standardization</name>
453
- <abbreviation>ISO</abbreviation>
454
- <uri>www.iso.org</uri>
455
- </organization>
456
- </contributor>
457
- <edition>3</edition>
458
- <language>en</language>
459
- <language>fr</language>
460
- <script>Latn</script>
461
- <abstract format='text/plain' language='fr' script='Latn'>
462
- La pr&#233;sente Norme internationale sp&#233;cifie des m&#233;thodes
463
- d&#8217;&#233;chantillonnage pour des concentr&#233;s de latex de
464
- caoutchouc naturel et pour &#233;chantillonner des latex de caoutchouc
465
- synth&#233;tique et des latex artificiels. Elle s&#8217;applique
466
- &#233;galement &#224; l&#8217;&#233;chantillonnage de latex de
467
- caoutchouc contenus dans des f&#251;ts, citernes routi&#232;res ou de
468
- stockage. Le mode op&#233;ratoire peut aussi &#234;tre utilis&#233;
469
- pour l&#8217;&#233;chantillonnage de dispersions de plastiques.
470
- </abstract>
471
- <status>
472
- <stage>90</stage>
473
- <substage>93</substage>
474
- </status>
475
- <copyright>
476
- <from>2001</from>
477
- <owner>
478
- <organization>
479
- <name>ISO</name>
480
- </organization>
481
- </owner>
482
- </copyright>
483
- <relation type='obsoletes'>
484
- <bibitem type='standard'>
485
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
486
- </bibitem>
487
- </relation>
488
- <place>Geneva</place>
489
- </bibitem>
490
- </references>
491
- </bibliography>
492
- </standard-document>
484
+ <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
485
+ <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
486
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
487
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
488
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
489
+ <docidentifier type='ISO'>ISO 123</docidentifier>
490
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
491
+ <docnumber>123</docnumber>
492
+ <contributor>
493
+ <role type='publisher'/>
494
+ <organization>
495
+ <name>International Organization for Standardization</name>
496
+ <abbreviation>ISO</abbreviation>
497
+ <uri>www.iso.org</uri>
498
+ </organization>
499
+ </contributor>
500
+ <edition>3</edition>
501
+ <language>en</language>
502
+ <language>fr</language>
503
+ <script>Latn</script>
504
+ <status>
505
+ <stage>90</stage>
506
+ <substage>93</substage>
507
+ </status>
508
+ <copyright>
509
+ <from>2001</from>
510
+ <owner>
511
+ <organization>
512
+ <name>ISO</name>
513
+ </organization>
514
+ </owner>
515
+ </copyright>
516
+ <relation type='obsoletes'>
517
+ <bibitem type='standard'>
518
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
519
+ </bibitem>
520
+ </relation>
521
+ <relation type='instance'>
522
+ <bibitem type='standard'>
523
+ <fetched/>
524
+ <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
525
+ <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
526
+ <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
527
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
528
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
529
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
530
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
531
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
532
+ <docnumber>123</docnumber>
533
+ <date type='published'>
534
+ <on>2001-05</on>
535
+ </date>
536
+ <contributor>
537
+ <role type='publisher'/>
538
+ <organization>
539
+ <name>International Organization for Standardization</name>
540
+ <abbreviation>ISO</abbreviation>
541
+ <uri>www.iso.org</uri>
542
+ </organization>
543
+ </contributor>
544
+ <edition>3</edition>
545
+ <language>en</language>
546
+ <language>fr</language>
547
+ <script>Latn</script>
548
+ <abstract format='text/plain' language='fr' script='Latn'>
549
+ La pr&#233;sente Norme internationale sp&#233;cifie des
550
+ m&#233;thodes d&#8217;&#233;chantillonnage pour des
551
+ concentr&#233;s de latex de caoutchouc naturel et pour
552
+ &#233;chantillonner des latex de caoutchouc synth&#233;tique et
553
+ des latex artificiels. Elle s&#8217;applique &#233;galement &#224;
554
+ l&#8217;&#233;chantillonnage de latex de caoutchouc contenus dans
555
+ des f&#251;ts, citernes routi&#232;res ou de stockage. Le mode
556
+ op&#233;ratoire peut aussi &#234;tre utilis&#233; pour
557
+ l&#8217;&#233;chantillonnage de dispersions de plastiques.
558
+ </abstract>
559
+ <status>
560
+ <stage>90</stage>
561
+ <substage>93</substage>
562
+ </status>
563
+ <copyright>
564
+ <from>2001</from>
565
+ <owner>
566
+ <organization>
567
+ <name>ISO</name>
568
+ </organization>
569
+ </owner>
570
+ </copyright>
571
+ <relation type='obsoletes'>
572
+ <bibitem type='standard'>
573
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
574
+ </bibitem>
575
+ </relation>
576
+ <place>Geneva</place>
577
+ </bibitem>
578
+ </relation>
579
+ <place>Geneva</place>
580
+ </bibitem>
581
+ <bibitem id='iso124' type='standard'>
582
+ <fetched/>
583
+ <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
584
+ <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
585
+ <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
586
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
587
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
588
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
589
+ <docidentifier type='ISO'>ISO 123</docidentifier>
590
+ <docidentifier type='metanorma'>[1]</docidentifier>
591
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
592
+ <docnumber>123</docnumber>
593
+ <contributor>
594
+ <role type='publisher'/>
595
+ <organization>
596
+ <name>International Organization for Standardization</name>
597
+ <abbreviation>ISO</abbreviation>
598
+ <uri>www.iso.org</uri>
599
+ </organization>
600
+ </contributor>
601
+ <edition>3</edition>
602
+ <language>en</language>
603
+ <language>fr</language>
604
+ <script>Latn</script>
605
+ <status>
606
+ <stage>90</stage>
607
+ <substage>93</substage>
608
+ </status>
609
+ <copyright>
610
+ <from>2001</from>
611
+ <owner>
612
+ <organization>
613
+ <name>ISO</name>
614
+ </organization>
615
+ </owner>
616
+ </copyright>
617
+ <relation type='obsoletes'>
618
+ <bibitem type='standard'>
619
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
620
+ </bibitem>
621
+ </relation>
622
+ <relation type='instance'>
623
+ <bibitem type='standard'>
624
+ <fetched/>
625
+ <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
626
+ <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
627
+ <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
628
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
629
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
630
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
631
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
632
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
633
+ <docnumber>123</docnumber>
634
+ <date type='published'>
635
+ <on>2001-05</on>
636
+ </date>
637
+ <contributor>
638
+ <role type='publisher'/>
639
+ <organization>
640
+ <name>International Organization for Standardization</name>
641
+ <abbreviation>ISO</abbreviation>
642
+ <uri>www.iso.org</uri>
643
+ </organization>
644
+ </contributor>
645
+ <edition>3</edition>
646
+ <language>en</language>
647
+ <language>fr</language>
648
+ <script>Latn</script>
649
+ <abstract format='text/plain' language='fr' script='Latn'>
650
+ La pr&#233;sente Norme internationale sp&#233;cifie des
651
+ m&#233;thodes d&#8217;&#233;chantillonnage pour des
652
+ concentr&#233;s de latex de caoutchouc naturel et pour
653
+ &#233;chantillonner des latex de caoutchouc synth&#233;tique et
654
+ des latex artificiels. Elle s&#8217;applique &#233;galement &#224;
655
+ l&#8217;&#233;chantillonnage de latex de caoutchouc contenus dans
656
+ des f&#251;ts, citernes routi&#232;res ou de stockage. Le mode
657
+ op&#233;ratoire peut aussi &#234;tre utilis&#233; pour
658
+ l&#8217;&#233;chantillonnage de dispersions de plastiques.
659
+ </abstract>
660
+ <status>
661
+ <stage>90</stage>
662
+ <substage>93</substage>
663
+ </status>
664
+ <copyright>
665
+ <from>2001</from>
666
+ <owner>
667
+ <organization>
668
+ <name>ISO</name>
669
+ </organization>
670
+ </owner>
671
+ </copyright>
672
+ <relation type='obsoletes'>
673
+ <bibitem type='standard'>
674
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
675
+ </bibitem>
676
+ </relation>
677
+ <place>Geneva</place>
678
+ </bibitem>
679
+ </relation>
680
+ <place>Geneva</place>
681
+ </bibitem>
682
+ </references>
683
+ </bibliography>
684
+ </standard-document>
493
685
  OUTPUT
686
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
687
+ .to be_equivalent_to xmlpp(output)
494
688
  end
495
689
  end
496
690
 
497
691
  it "processes simple IEC reference" do
498
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
692
+ input = <<~INPUT
499
693
  #{ASCIIDOC_BLANK_HDR}
500
694
  [bibliography]
501
695
  == Normative References
@@ -503,6 +697,7 @@ RSpec.describe Asciidoctor::Standoc do
503
697
  * [[[iso123,IEC 123]]] _Standard_
504
698
  * [[[iso124,(1)IEC 123]]] _Standard_
505
699
  INPUT
700
+ output = <<~OUTPUT
506
701
  #{BLANK_HDR}
507
702
  <sections>
508
703
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -535,13 +730,13 @@ RSpec.describe Asciidoctor::Standoc do
535
730
  </bibliography>
536
731
  </standard-document>
537
732
  OUTPUT
733
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
734
+ .to be_equivalent_to xmlpp(output)
538
735
  end
539
736
 
540
737
  it "processes dated ISO reference and joint ISO/IEC references" do
541
- # mock_isobib_get_iec12382
542
- # mock_isobib_get_124
543
- VCR.use_cassette "dated_iso_ref_joint_iso_iec" do
544
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
738
+ VCR.use_cassette("dated_iso_ref_joint_iso_iec", match_requests_on: %i[method uri body]) do
739
+ input = <<~INPUT
545
740
  #{ISOBIB_BLANK_HDR}
546
741
  [bibliography]
547
742
  == Normative References
@@ -551,6 +746,7 @@ RSpec.describe Asciidoctor::Standoc do
551
746
  * [[[iso125,(1)ISO/IEC TR 12382:1992]]] _Standard_
552
747
  * [[[iso126,(1)ISO 124:2014]]] _Standard_
553
748
  INPUT
749
+ output = <<~OUTPUT
554
750
  #{BLANK_HDR}
555
751
  <sections>
556
752
 
@@ -558,7 +754,7 @@ RSpec.describe Asciidoctor::Standoc do
558
754
  <title>Normative references</title>
559
755
  #{NORM_REF_BOILERPLATE}
560
756
  <bibitem type="standard" id="iso123">
561
- <fetched>#{Date.today}</fetched>
757
+ <fetched/>
562
758
  <title type="title-main" format="text/plain" language="en" script="Latn">Permuted index of the vocabulary of information technology</title>
563
759
  <title type="main" format="text/plain" language="en" script="Latn">Permuted index of the vocabulary of information technology</title>
564
760
  <uri type="src">https://www.iso.org/standard/21071.html</uri>
@@ -605,7 +801,7 @@ RSpec.describe Asciidoctor::Standoc do
605
801
  <place>Geneva</place>
606
802
  </bibitem>
607
803
  <bibitem id="iso124" type="standard">
608
- <fetched>#{Date.today}</fetched>
804
+ <fetched/>
609
805
  <title type="title-intro" format="text/plain" language="en" script="Latn">Latex, rubber</title>
610
806
  <title type="title-main" format="text/plain" language="en" script="Latn">Determination of total solids content</title>
611
807
  <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber — Determination of total solids content</title>
@@ -650,7 +846,7 @@ RSpec.describe Asciidoctor::Standoc do
650
846
  <place>Geneva</place>
651
847
  </bibitem>
652
848
  <bibitem id="iso125" type="standard">
653
- <fetched>#{Date.today}</fetched>
849
+ <fetched/>
654
850
  <title type="title-main" format="text/plain" language="en" script="Latn">Permuted index of the vocabulary of information technology</title>
655
851
  <title type='main' format='text/plain' language='en' script='Latn'>Permuted index of the vocabulary of information technology</title>
656
852
  <uri type="src">https://www.iso.org/standard/21071.html</uri>
@@ -698,7 +894,7 @@ RSpec.describe Asciidoctor::Standoc do
698
894
  <place>Geneva</place>
699
895
  </bibitem>
700
896
  <bibitem id="iso126" type="standard">
701
- <fetched>#{Date.today}</fetched>
897
+ <fetched/>
702
898
  <title type="title-intro" format="text/plain" language="en" script="Latn">Latex, rubber</title>
703
899
  <title type="title-main" format="text/plain" language="en" script="Latn">Determination of total solids content</title>
704
900
  <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber — Determination of total solids content</title>
@@ -747,12 +943,14 @@ RSpec.describe Asciidoctor::Standoc do
747
943
  </standard-document>
748
944
 
749
945
  OUTPUT
946
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
947
+ .to be_equivalent_to xmlpp(output)
750
948
  end
751
949
  end
752
950
 
753
951
  it "declines to fetch individual references" do
754
952
  VCR.use_cassette "dated_iso_ref_joint_iso_iec1" do
755
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
953
+ input = <<~INPUT
756
954
  #{ISOBIB_BLANK_HDR}
757
955
  [bibliography]
758
956
  == Normative References
@@ -760,6 +958,7 @@ RSpec.describe Asciidoctor::Standoc do
760
958
  * [[[iso123,nofetch(ISO/IEC TR 12382:1992)]]] _Standard_
761
959
  * [[[iso124,ISO 124:2014]]] _Standard_
762
960
  INPUT
961
+ output = <<~OUTPUT
763
962
  #{BLANK_HDR}
764
963
  <sections>
765
964
 
@@ -774,7 +973,7 @@ RSpec.describe Asciidoctor::Standoc do
774
973
  <docnumber>12382:1992</docnumber>
775
974
  </bibitem>
776
975
  <bibitem id='iso124' type='standard'>
777
- <fetched>#{Date.today}</fetched>
976
+ <fetched/>
778
977
  <title type='title-intro' format='text/plain' language='en' script='Latn'>Latex, rubber</title>
779
978
  <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of total solids content</title>
780
979
  <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber — Determination of total solids content</title>
@@ -820,13 +1019,15 @@ RSpec.describe Asciidoctor::Standoc do
820
1019
  </bibitem>
821
1020
  </references></bibliography></standard-document>
822
1021
  OUTPUT
1022
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1023
+ .to be_equivalent_to xmlpp(output)
823
1024
  end
824
1025
  end
825
1026
 
826
1027
  it "processes draft ISO reference" do
827
1028
  # stub_fetch_ref no_year: true, note: "The standard is in press"
828
1029
 
829
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1030
+ input = <<~INPUT
830
1031
  #{ASCIIDOC_BLANK_HDR}
831
1032
  [bibliography]
832
1033
  == Normative References
@@ -836,6 +1037,7 @@ RSpec.describe Asciidoctor::Standoc do
836
1037
  * [[[iso125,ISO 125:&ndash;]]], footnote:[The standard is in press] _Standard_
837
1038
  * [[[iso126,(1)ISO 123:--]]] _Standard_
838
1039
  INPUT
1040
+ output = <<~OUTPUT
839
1041
  #{BLANK_HDR}
840
1042
  <sections>
841
1043
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -904,12 +1106,14 @@ RSpec.describe Asciidoctor::Standoc do
904
1106
  </bibliography>
905
1107
  </standard-document>
906
1108
  OUTPUT
1109
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1110
+ .to be_equivalent_to xmlpp(output)
907
1111
  end
908
1112
 
909
1113
  it "processes all-parts ISO reference" do
910
1114
  # stub_fetch_ref(all_parts: true)
911
1115
 
912
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1116
+ input = <<~INPUT
913
1117
  #{ASCIIDOC_BLANK_HDR}
914
1118
  [bibliography]
915
1119
  == Normative References
@@ -917,6 +1121,7 @@ RSpec.describe Asciidoctor::Standoc do
917
1121
  * [[[iso123,ISO 123:1066 (all parts)]]] _Standard_
918
1122
  * [[[iso124,(1)ISO 123:1066 (all parts)]]] _Standard_
919
1123
  INPUT
1124
+ output = <<~OUTPUT
920
1125
  #{BLANK_HDR}
921
1126
  <sections>
922
1127
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -961,12 +1166,14 @@ RSpec.describe Asciidoctor::Standoc do
961
1166
  </bibliography>
962
1167
  </standard-document>
963
1168
  OUTPUT
1169
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1170
+ .to be_equivalent_to xmlpp(output)
964
1171
  end
965
1172
 
966
1173
  it "processes RFC reference in Normative References" do
967
1174
  # mock_rfcbib_get_rfc8341
968
1175
  VCR.use_cassette "rfcbib_get_rfc8341" do
969
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1176
+ input = <<~INPUT
970
1177
  #{ISOBIB_BLANK_HDR}
971
1178
  [bibliography]
972
1179
  == Normative References
@@ -978,6 +1185,7 @@ RSpec.describe Asciidoctor::Standoc do
978
1185
 
979
1186
  <<iso123>>
980
1187
  INPUT
1188
+ output = <<~OUTPUT
981
1189
  #{BLANK_HDR}
982
1190
  <sections>
983
1191
  <clause id="_" inline-header="false" obligation="normative">
@@ -990,7 +1198,7 @@ RSpec.describe Asciidoctor::Standoc do
990
1198
  <title>Normative references</title>
991
1199
  #{NORM_REF_BOILERPLATE}
992
1200
  <bibitem id='iso123' type='standard'>
993
- <fetched>#{Date.today}</fetched>
1201
+ <fetched/>
994
1202
  <title format='text/plain' language='en' script='Latn'>Network Configuration Access Control Model</title>
995
1203
  <uri type='xml'>
996
1204
  https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.8341.xml
@@ -1028,7 +1236,8 @@ RSpec.describe Asciidoctor::Standoc do
1028
1236
  </contributor>
1029
1237
  <language>en</language>
1030
1238
  <script>Latn</script>
1031
- <abstract format='text/plain' language='en' script='Latn'>
1239
+ <abstract format='text/html' language='en' script='Latn'>
1240
+ <p id='_'>
1032
1241
  The standardization of network configuration interfaces for use with
1033
1242
  the Network Configuration Protocol (NETCONF) or the RESTCONF protocol
1034
1243
  requires a structured and secure operating environment that promotes
@@ -1036,7 +1245,8 @@ RSpec.describe Asciidoctor::Standoc do
1036
1245
  standard mechanisms to restrict NETCONF or RESTCONF protocol access
1037
1246
  for particular users to a preconfigured subset of all available
1038
1247
  NETCONF or RESTCONF protocol operations and content. This document
1039
- defines such an access control model.This document obsoletes RFC 6536.
1248
+ defines such an access control model.</p>
1249
+ <p id='_'>This document obsoletes RFC 6536.</p>
1040
1250
  </abstract>
1041
1251
  <series type='main'>
1042
1252
  <title format='text/plain' language='en' script='Latn'>STD</title>
@@ -1049,7 +1259,7 @@ RSpec.describe Asciidoctor::Standoc do
1049
1259
  <place>Fremont, CA</place>
1050
1260
  </bibitem>
1051
1261
  <bibitem id='iso124' type='standard'>
1052
- <fetched>#{Date.today}</fetched>
1262
+ <fetched/>
1053
1263
  <title format='text/plain' language='en' script='Latn'>Network Configuration Access Control Model</title>
1054
1264
  <uri type='xml'>
1055
1265
  https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference.RFC.8341.xml
@@ -1088,7 +1298,8 @@ RSpec.describe Asciidoctor::Standoc do
1088
1298
  </contributor>
1089
1299
  <language>en</language>
1090
1300
  <script>Latn</script>
1091
- <abstract format='text/plain' language='en' script='Latn'>
1301
+ <abstract format='text/html' language='en' script='Latn'>
1302
+ <p id='_'>
1092
1303
  The standardization of network configuration interfaces for use with
1093
1304
  the Network Configuration Protocol (NETCONF) or the RESTCONF protocol
1094
1305
  requires a structured and secure operating environment that promotes
@@ -1096,7 +1307,8 @@ RSpec.describe Asciidoctor::Standoc do
1096
1307
  standard mechanisms to restrict NETCONF or RESTCONF protocol access
1097
1308
  for particular users to a preconfigured subset of all available
1098
1309
  NETCONF or RESTCONF protocol operations and content. This document
1099
- defines such an access control model.This document obsoletes RFC 6536.
1310
+ defines such an access control model.</p>
1311
+ <p id='_'>This document obsoletes RFC 6536.</p>
1100
1312
  </abstract>
1101
1313
  <series type='main'>
1102
1314
  <title format='text/plain' language='en' script='Latn'>STD</title>
@@ -1112,11 +1324,13 @@ RSpec.describe Asciidoctor::Standoc do
1112
1324
  </bibliography>
1113
1325
  </standard-document>
1114
1326
  OUTPUT
1327
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1328
+ .to be_equivalent_to xmlpp(output)
1115
1329
  end
1116
1330
  end
1117
1331
 
1118
1332
  it "processes non-ISO reference in Normative References" do
1119
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1333
+ input = <<~INPUT
1120
1334
  #{ASCIIDOC_BLANK_HDR}
1121
1335
  [bibliography]
1122
1336
  == Normative References
@@ -1124,6 +1338,7 @@ RSpec.describe Asciidoctor::Standoc do
1124
1338
  * [[[iso123,XYZ 123:1066 (all parts)]]] _Standard_
1125
1339
  * [[[iso124,(1)XYZ 123:1066 (all parts)]]] _Standard_
1126
1340
  INPUT
1341
+ output = <<~OUTPUT
1127
1342
  #{BLANK_HDR}
1128
1343
  <sections>
1129
1344
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -1148,10 +1363,12 @@ RSpec.describe Asciidoctor::Standoc do
1148
1363
  </bibliography>
1149
1364
  </standard-document>
1150
1365
  OUTPUT
1366
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1367
+ .to be_equivalent_to xmlpp(output)
1151
1368
  end
1152
1369
 
1153
1370
  it "processes non-ISO reference in Bibliography" do
1154
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1371
+ input = <<~INPUT
1155
1372
  #{ASCIIDOC_BLANK_HDR}
1156
1373
  [bibliography]
1157
1374
  == Bibliography
@@ -1162,6 +1379,7 @@ RSpec.describe Asciidoctor::Standoc do
1162
1379
  * [[[iso126,(A1)]]] _Standard_
1163
1380
  * [[[iso127,(4)XYZ 123:1066 (all parts)]]] _Standard_
1164
1381
  INPUT
1382
+ output = <<~OUTPUT
1165
1383
  #{BLANK_HDR}
1166
1384
  <sections>
1167
1385
  </sections>
@@ -1199,13 +1417,15 @@ RSpec.describe Asciidoctor::Standoc do
1199
1417
  </bibliography>
1200
1418
  </standard-document>
1201
1419
  OUTPUT
1420
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1421
+ .to be_equivalent_to xmlpp(output)
1202
1422
  end
1203
1423
 
1204
1424
  it "process ISO reference without an Internet connection" do
1205
1425
  expect(RelatonIso::IsoBibliography).to receive(:search).with("ISO 123") do
1206
1426
  raise RelatonBib::RequestError.new "getaddrinfo"
1207
1427
  end.at_least :once
1208
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1428
+ input = <<~INPUT
1209
1429
  #{ISOBIB_BLANK_HDR}
1210
1430
  [bibliography]
1211
1431
  == Normative References
@@ -1213,6 +1433,7 @@ RSpec.describe Asciidoctor::Standoc do
1213
1433
  * [[[iso123,ISO 123]]] _Standard_
1214
1434
  * [[[iso124,(1)ISO 123]]] _Standard_
1215
1435
  INPUT
1436
+ output = <<~OUTPUT
1216
1437
  <?xml version="1.0" encoding="UTF-8"?>
1217
1438
  <standard-document xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="#{Metanorma::Standoc::VERSION}">
1218
1439
  <bibdata type="standard">
@@ -1257,10 +1478,12 @@ RSpec.describe Asciidoctor::Standoc do
1257
1478
  </references></bibliography>
1258
1479
  </standard-document>
1259
1480
  OUTPUT
1481
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1482
+ .to be_equivalent_to xmlpp(output)
1260
1483
  end
1261
1484
 
1262
1485
  it "processes repository reference" do
1263
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1486
+ input = <<~INPUT
1264
1487
  #{ISOBIB_BLANK_HDR}
1265
1488
  == Scope
1266
1489
 
@@ -1275,6 +1498,7 @@ RSpec.describe Asciidoctor::Standoc do
1275
1498
  * [[[iso123,repo:(ab/ISO 123)]]] _Standard_
1276
1499
  * [[[iso124,repo:(ab/ISO 124,id)]]] _Standard_
1277
1500
  INPUT
1501
+ output = <<~OUTPUT
1278
1502
  #{BLANK_HDR}
1279
1503
  <sections>
1280
1504
  <clause id='_' type='scope' inline-header='false' obligation='normative'>
@@ -1328,10 +1552,12 @@ RSpec.describe Asciidoctor::Standoc do
1328
1552
  </bibliography>
1329
1553
  </standard-document>
1330
1554
  OUTPUT
1555
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1556
+ .to be_equivalent_to xmlpp(output)
1331
1557
  end
1332
1558
 
1333
1559
  it "processes hyperlink reference, ingest RXL or XML if available" do
1334
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1560
+ input = <<~INPUT
1335
1561
  #{ISOBIB_BLANK_HDR}
1336
1562
  == Scope
1337
1563
 
@@ -1349,6 +1575,7 @@ RSpec.describe Asciidoctor::Standoc do
1349
1575
  * [[[iso123,path:(spec/assets/iso123,ISO 123)]]] _Standard_
1350
1576
  * [[[iso124,path:(a/b.adoc,ISO 124)]]] _Standard_
1351
1577
  INPUT
1578
+ output = <<~OUTPUT
1352
1579
  #{BLANK_HDR}
1353
1580
  <sections>
1354
1581
  <clause id='_' type="scope" inline-header='false' obligation='normative'>
@@ -1399,7 +1626,7 @@ RSpec.describe Asciidoctor::Standoc do
1399
1626
  amendments) applies.
1400
1627
  </p>
1401
1628
  <bibitem id='iso123' type='standard'>
1402
- <fetched>2020-06-12</fetched>
1629
+ <fetched/>
1403
1630
  <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
1404
1631
  <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
1405
1632
  <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex – Sampling</title>
@@ -1446,7 +1673,7 @@ RSpec.describe Asciidoctor::Standoc do
1446
1673
  </relation>
1447
1674
  <relation type='instance'>
1448
1675
  <bibitem type='standard'>
1449
- <fetched>2020-06-12</fetched>
1676
+ <fetched/>
1450
1677
  <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
1451
1678
  <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
1452
1679
  <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex – Sampling</title>
@@ -1518,141 +1745,253 @@ RSpec.describe Asciidoctor::Standoc do
1518
1745
  </bibliography>
1519
1746
  </standard-document>
1520
1747
  OUTPUT
1748
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1749
+ .to be_equivalent_to xmlpp(output)
1521
1750
  end
1522
1751
 
1523
1752
  it "overrides normative status of bibliographies" do
1524
- mock_isobib_get_123_no_docid(1)
1525
- mock_isobib_get_123_no_docid_lbl(1)
1526
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1527
- #{ISOBIB_BLANK_HDR}
1528
- [bibliography,normative=false]
1529
- == Normative References
1753
+ # mock_isobib_get_123_no_docid(1)
1754
+ # mock_isobib_get_123_no_docid_lbl(1)
1755
+ VCR.use_cassette "isobib_get_123_1" do
1756
+ input = <<~INPUT
1757
+ #{ISOBIB_BLANK_HDR}
1530
1758
 
1531
- * [[[iso123,ISO 123]]] _Standard_
1759
+ [bibliography,normative=false]
1760
+ == Normative References
1532
1761
 
1533
- [bibliography,normative=true]
1534
- == Bibliography
1762
+ * [[[iso123,ISO 123]]] _Standard_
1535
1763
 
1536
- * [[[iso124,(1)ISO 123]]] _Standard_
1537
- INPUT
1538
- #{BLANK_HDR}
1539
- <sections> </sections>
1540
- <bibliography>
1541
- <references id='_' normative='false' obligation='informative'>
1542
- <title>Bibliography</title>
1543
- <bibitem type='standard' id='iso123'>
1544
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1545
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1546
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1547
- <date type='published'>
1548
- <on>2001</on>
1549
- </date>
1550
- <contributor>
1551
- <role type='publisher'/>
1552
- <organization>
1553
- <name>International Organization for Standardization</name>
1554
- <abbreviation>ISO</abbreviation>
1555
- <uri>www.iso.org</uri>
1556
- </organization>
1557
- </contributor>
1558
- <edition>3</edition>
1559
- <language>en</language>
1560
- <language>fr</language>
1561
- <script>Latn</script>
1562
- <status>
1563
- <stage>Published</stage>
1564
- </status>
1565
- <copyright>
1566
- <from>2001</from>
1567
- <owner>
1568
- <organization>
1569
- <name>ISO</name>
1570
- <abbreviation/>
1571
- </organization>
1572
- </owner>
1573
- </copyright>
1574
- <relation type='obsoletes'>
1575
- <bibitem type='standard'>
1576
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
1577
- </bibitem>
1578
- </relation>
1579
- <relation type='updates'>
1580
- <bibitem type='standard'>
1581
- <formattedref format='text/plain'>ISO 123:2001</formattedref>
1582
- </bibitem>
1583
- </relation>
1584
- <docidentifier>ISO 123</docidentifier>
1585
- <title>
1586
- <em>Standard</em>
1587
- </title>
1588
- </bibitem>
1589
- </references>
1590
- <references id='_' normative='true' obligation='informative'>
1591
- <title>Normative references</title>
1592
- <p id='_'>
1593
- The following documents are referred to in the text in such a way that
1594
- some or all of their content constitutes requirements of this document.
1595
- For dated references, only the edition cited applies. For undated
1596
- references, the latest edition of the referenced document (including any
1597
- amendments) applies.
1598
- </p>
1599
- <bibitem type='standard' id='iso124'>
1600
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1601
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1602
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1603
- <date type='published'>
1604
- <on>2001</on>
1605
- </date>
1606
- <contributor>
1607
- <role type='publisher'/>
1608
- <organization>
1609
- <name>International Organization for Standardization</name>
1610
- <abbreviation>ISO</abbreviation>
1611
- <uri>www.iso.org</uri>
1612
- </organization>
1613
- </contributor>
1614
- <edition>3</edition>
1615
- <language>en</language>
1616
- <language>fr</language>
1617
- <script>Latn</script>
1618
- <status>
1619
- <stage>Published</stage>
1620
- </status>
1621
- <copyright>
1622
- <from>2001</from>
1623
- <owner>
1624
- <organization>
1625
- <name>ISO</name>
1626
- <abbreviation/>
1627
- </organization>
1628
- </owner>
1629
- </copyright>
1630
- <relation type='obsoletes'>
1631
- <bibitem type='standard'>
1632
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
1633
- </bibitem>
1634
- </relation>
1635
- <relation type='updates'>
1636
- <bibitem type='standard'>
1637
- <formattedref format='text/plain'>ISO 123:2001</formattedref>
1638
- </bibitem>
1639
- </relation>
1640
- <docidentifier>ISO 123</docidentifier>
1641
- <docidentifier type='metanorma'>[1]</docidentifier>
1642
- <title>
1643
- <em>Standard</em>
1644
- </title>
1645
- </bibitem>
1646
- </references>
1647
- </bibliography>
1648
- </standard-document>
1649
- OUTPUT
1764
+ [bibliography,normative=true]
1765
+ == Bibliography
1766
+
1767
+ * [[[iso124,(1)ISO 123]]] _Standard_
1768
+ INPUT
1769
+ output = <<~OUTPUT
1770
+ #{BLANK_HDR}
1771
+ <sections> </sections>
1772
+ <bibliography>
1773
+ <references id='_' normative='false' obligation='informative'>
1774
+ <title>Bibliography</title>
1775
+ <bibitem id='iso123' type='standard'>
1776
+ <fetched/>
1777
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
1778
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
1779
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
1780
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1781
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1782
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1783
+ <docidentifier type='ISO'>ISO 123</docidentifier>
1784
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
1785
+ <docnumber>123</docnumber>
1786
+ <contributor>
1787
+ <role type='publisher'/>
1788
+ <organization>
1789
+ <name>International Organization for Standardization</name>
1790
+ <abbreviation>ISO</abbreviation>
1791
+ <uri>www.iso.org</uri>
1792
+ </organization>
1793
+ </contributor>
1794
+ <edition>3</edition>
1795
+ <language>en</language>
1796
+ <script>Latn</script>
1797
+ <status>
1798
+ <stage>90</stage>
1799
+ <substage>93</substage>
1800
+ </status>
1801
+ <copyright>
1802
+ <from>2001</from>
1803
+ <owner>
1804
+ <organization>
1805
+ <name>ISO</name>
1806
+ </organization>
1807
+ </owner>
1808
+ </copyright>
1809
+ <relation type='obsoletes'>
1810
+ <bibitem type='standard'>
1811
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
1812
+ </bibitem>
1813
+ </relation>
1814
+ <relation type='instance'>
1815
+ <bibitem type='standard'>
1816
+ <fetched/>
1817
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
1818
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
1819
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
1820
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1821
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1822
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1823
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
1824
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
1825
+ <docnumber>123</docnumber>
1826
+ <date type='published'>
1827
+ <on>2001-05</on>
1828
+ </date>
1829
+ <contributor>
1830
+ <role type='publisher'/>
1831
+ <organization>
1832
+ <name>International Organization for Standardization</name>
1833
+ <abbreviation>ISO</abbreviation>
1834
+ <uri>www.iso.org</uri>
1835
+ </organization>
1836
+ </contributor>
1837
+ <edition>3</edition>
1838
+ <language>en</language>
1839
+ <script>Latn</script>
1840
+ <abstract format='text/plain' language='en' script='Latn'>
1841
+ This International Standard specifies procedures for sampling
1842
+ natural rubber latex concentrate and for sampling synthetic rubber
1843
+ latices and artificial latices. It is also suitable for sampling
1844
+ rubber latex contained in drums, tank cars or tanks. The
1845
+ procedures may also be used for sampling plastics dispersions.
1846
+ </abstract>
1847
+ <status>
1848
+ <stage>90</stage>
1849
+ <substage>93</substage>
1850
+ </status>
1851
+ <copyright>
1852
+ <from>2001</from>
1853
+ <owner>
1854
+ <organization>
1855
+ <name>ISO</name>
1856
+ </organization>
1857
+ </owner>
1858
+ </copyright>
1859
+ <relation type='obsoletes'>
1860
+ <bibitem type='standard'>
1861
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
1862
+ </bibitem>
1863
+ </relation>
1864
+ <place>Geneva</place>
1865
+ </bibitem>
1866
+ </relation>
1867
+ <place>Geneva</place>
1868
+ </bibitem>
1869
+ </references>
1870
+ <references id='_' normative='true' obligation='informative'>
1871
+ <title>Normative references</title>
1872
+ <p id='_'>
1873
+ The following documents are referred to in the text in such a way that
1874
+ some or all of their content constitutes requirements of this document.
1875
+ For dated references, only the edition cited applies. For undated
1876
+ references, the latest edition of the referenced document (including any
1877
+ amendments) applies.
1878
+ </p>
1879
+ <bibitem id='iso124' type='standard'>
1880
+ <fetched/>
1881
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
1882
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
1883
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
1884
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1885
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1886
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1887
+ <docidentifier type='ISO'>ISO 123</docidentifier>
1888
+ <docidentifier type='metanorma'>[1]</docidentifier>
1889
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
1890
+ <docnumber>123</docnumber>
1891
+ <contributor>
1892
+ <role type='publisher'/>
1893
+ <organization>
1894
+ <name>International Organization for Standardization</name>
1895
+ <abbreviation>ISO</abbreviation>
1896
+ <uri>www.iso.org</uri>
1897
+ </organization>
1898
+ </contributor>
1899
+ <edition>3</edition>
1900
+ <language>en</language>
1901
+ <script>Latn</script>
1902
+ <status>
1903
+ <stage>90</stage>
1904
+ <substage>93</substage>
1905
+ </status>
1906
+ <copyright>
1907
+ <from>2001</from>
1908
+ <owner>
1909
+ <organization>
1910
+ <name>ISO</name>
1911
+ </organization>
1912
+ </owner>
1913
+ </copyright>
1914
+ <relation type='obsoletes'>
1915
+ <bibitem type='standard'>
1916
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
1917
+ </bibitem>
1918
+ </relation>
1919
+ <relation type='instance'>
1920
+ <bibitem type='standard'>
1921
+ <fetched/>
1922
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
1923
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
1924
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
1925
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1926
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1927
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1928
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
1929
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
1930
+ <docnumber>123</docnumber>
1931
+ <date type='published'>
1932
+ <on>2001-05</on>
1933
+ </date>
1934
+ <contributor>
1935
+ <role type='publisher'/>
1936
+ <organization>
1937
+ <name>International Organization for Standardization</name>
1938
+ <abbreviation>ISO</abbreviation>
1939
+ <uri>www.iso.org</uri>
1940
+ </organization>
1941
+ </contributor>
1942
+ <edition>3</edition>
1943
+ <language>en</language>
1944
+ <script>Latn</script>
1945
+ <abstract format='text/plain' language='en' script='Latn'>
1946
+ This International Standard specifies procedures for sampling
1947
+ natural rubber latex concentrate and for sampling synthetic rubber
1948
+ latices and artificial latices. It is also suitable for sampling
1949
+ rubber latex contained in drums, tank cars or tanks. The
1950
+ procedures may also be used for sampling plastics dispersions.
1951
+ </abstract>
1952
+ <status>
1953
+ <stage>90</stage>
1954
+ <substage>93</substage>
1955
+ </status>
1956
+ <copyright>
1957
+ <from>2001</from>
1958
+ <owner>
1959
+ <organization>
1960
+ <name>ISO</name>
1961
+ </organization>
1962
+ </owner>
1963
+ </copyright>
1964
+ <relation type='obsoletes'>
1965
+ <bibitem type='standard'>
1966
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
1967
+ </bibitem>
1968
+ </relation>
1969
+ <place>Geneva</place>
1970
+ </bibitem>
1971
+ </relation>
1972
+ <place>Geneva</place>
1973
+ </bibitem>
1974
+ </references>
1975
+ </bibliography>
1976
+ </standard-document>
1977
+ OUTPUT
1978
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1979
+ .to be_equivalent_to xmlpp(output)
1980
+ end
1650
1981
  end
1651
1982
 
1652
1983
  private
1653
1984
 
1654
1985
  def mock_isobib_get_123
1655
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 123", nil, {}) do
1986
+ expect(RelatonIso::IsoBibliography).to receive(:get)
1987
+ .with("ISO 123", nil, { code: "ISO 123",
1988
+ lang: "en",
1989
+ match: anything,
1990
+ process: 1,
1991
+ ord: anything,
1992
+ title: "<em>Standard</em>",
1993
+ usrlbl: nil,
1994
+ year: nil }) do
1656
1995
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1657
1996
  <bibitem type=\"standard\" id=\"ISO123\">\n <title format=\"text/plain\" language=\"en\" script=\"Latn\">Rubber latex -- Sampling</title>\n <title format=\"text/plain\" language=\"fr\" script=\"Latn\">Latex de caoutchouc -- ?chantillonnage</title>\n <uri type=\"src\">https://www.iso.org/standard/23281.html</uri>\n <uri type=\"obp\">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>\n <uri type=\"rss\">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>\n <docidentifier>ISO 123</docidentifier>\n <date type=\"published\">\n <on>2001</on>\n </date>\n <contributor>\n <role type=\"publisher\"/>\n <organization>\n <name>International Organization for Standardization</name>\n <abbreviation>ISO</abbreviation>\n <uri>www.iso.org</uri>\n </organization>\n </contributor>\n <edition>3</edition>\n <language>en</language>\n <language>fr</language>\n <script>Latn</script>\n <status>Published</status>\n <copyright>\n <from>2001</from>\n <owner>\n <organization>\n <name>ISO</name>\n <abbreviation></abbreviation>\n </organization>\n </owner>\n </copyright>\n <relation type=\"obsoletes\">\n <bibitem type="standard">\n <formattedref format="text/plain">ISO 123:1985</formattedref>\n </bibitem>\n </relation>\n <relation type=\"updates\">\n <bibitem type="standard">\n <formattedref format="text/plain">ISO 123:2001</formattedref>\n </bibitem>\n </relation>\n</bibitem>
1658
1997
  OUTPUT
@@ -1660,7 +1999,15 @@ RSpec.describe Asciidoctor::Standoc do
1660
1999
  end
1661
2000
 
1662
2001
  def mock_isobib_get_123_no_docid(n)
1663
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 123", nil, { lang: "en", title: "<em>Standard</em>", usrlbl: nil }) do
2002
+ expect(RelatonIso::IsoBibliography).to receive(:get)
2003
+ .with("ISO 123", nil, { code: "ISO 123",
2004
+ lang: "en",
2005
+ match: anything,
2006
+ process: 1,
2007
+ ord: anything,
2008
+ title: "<em>Standard</em>",
2009
+ usrlbl: nil,
2010
+ year: nil }) do
1664
2011
  RelatonBib::XMLParser.from_xml(<<~"OUTPUT")
1665
2012
  <bibitem type=\"standard\" id=\"ISO123\">\n <uri type=\"src\">https://www.iso.org/standard/23281.html</uri>\n <uri type=\"obp\">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>\n <uri type=\"rss\">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>\n <date type=\"published\">\n <on>2001</on>\n </date>\n <contributor>\n <role type=\"publisher\"/>\n <organization>\n <name>International Organization for Standardization</name>\n <abbreviation>ISO</abbreviation>\n <uri>www.iso.org</uri>\n </organization>\n </contributor>\n <edition>3</edition>\n <language>en</language>\n <language>fr</language>\n <script>Latn</script>\n <status><stage>Published</stage></status>\n <copyright>\n <from>2001</from>\n <owner>\n <organization>\n <name>ISO</name>\n <abbreviation></abbreviation>\n </organization>\n </owner>\n </copyright>\n <relation type=\"obsoletes\">\n <bibitem type="standard">\n <formattedref format="text/plain">ISO 123:1985</formattedref>\n </bibitem>\n </relation>\n <relation type=\"updates\">\n <bibitem type="standard">\n <formattedref format="text/plain">ISO 123:2001</formattedref>\n </bibitem>\n </relation>\n<ext></fred></ext></bibitem>
1666
2013
  OUTPUT
@@ -1668,7 +2015,15 @@ RSpec.describe Asciidoctor::Standoc do
1668
2015
  end
1669
2016
 
1670
2017
  def mock_isobib_get_123_no_docid_lbl(n)
1671
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 123", nil, { lang: "en", title: "<em>Standard</em>", usrlbl: "(1)" }) do
2018
+ expect(RelatonIso::IsoBibliography).to receive(:get)
2019
+ .with("ISO 123", nil, { code: "ISO 123",
2020
+ lang: "en",
2021
+ match: anything,
2022
+ process: 1,
2023
+ ord: anything,
2024
+ title: "<em>Standard</em>",
2025
+ usrlbl: "(1)",
2026
+ year: nil }) do
1672
2027
  RelatonBib::XMLParser.from_xml(<<~"OUTPUT")
1673
2028
  <bibitem type=\"standard\" id=\"ISO123\">\n <uri type=\"src\">https://www.iso.org/standard/23281.html</uri>\n <uri type=\"obp\">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>\n <uri type=\"rss\">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>\n <date type=\"published\">\n <on>2001</on>\n </date>\n <contributor>\n <role type=\"publisher\"/>\n <organization>\n <name>International Organization for Standardization</name>\n <abbreviation>ISO</abbreviation>\n <uri>www.iso.org</uri>\n </organization>\n </contributor>\n <edition>3</edition>\n <language>en</language>\n <language>fr</language>\n <script>Latn</script>\n <status><stage>Published</stage></status>\n <copyright>\n <from>2001</from>\n <owner>\n <organization>\n <name>ISO</name>\n <abbreviation></abbreviation>\n </organization>\n </owner>\n </copyright>\n <relation type=\"obsoletes\">\n <bibitem type="standard">\n <formattedref format="text/plain">ISO 123:1985</formattedref>\n </bibitem>\n </relation>\n <relation type=\"updates\">\n <bibitem type="standard">\n <formattedref format="text/plain">ISO 123:2001</formattedref>\n </bibitem>\n </relation>\n<ext></fred></ext></bibitem>
1674
2029
  OUTPUT
@@ -1676,7 +2031,9 @@ RSpec.describe Asciidoctor::Standoc do
1676
2031
  end
1677
2032
 
1678
2033
  def mock_isobib_get_124
1679
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 124", "2014", {}) do
2034
+ expect(RelatonIso::IsoBibliography).to receive(:get)
2035
+ .with("ISO 124",
2036
+ "2014", anything) do
1680
2037
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1681
2038
  <bibitem type="standard" id="iso124">
1682
2039
  <title format="text/plain" language="en" script="Latn">Latex, rubber -- Determination of total solids content</title>
@@ -1726,7 +2083,9 @@ RSpec.describe Asciidoctor::Standoc do
1726
2083
  end
1727
2084
 
1728
2085
  def mock_isobib_get_iec12382
1729
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO/IEC TR 12382", "1992", {}) do
2086
+ expect(RelatonIso::IsoBibliography).to receive(:get).with(
2087
+ "ISO/IEC TR 12382", "1992", anything
2088
+ ) do
1730
2089
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1731
2090
  <bibitem type="standard" id="iso123">
1732
2091
  <title format="text/plain" language="en" script="Latn">Permuted index of the vocabulary of information technology</title>
@@ -1788,7 +2147,8 @@ RSpec.describe Asciidoctor::Standoc do
1788
2147
  end
1789
2148
 
1790
2149
  def mock_rfcbib_get_rfc8341
1791
- expect(IETFBib::RfcBibliography).to receive(:get).with("RFC 8341", nil, {}) do
2150
+ expect(IETFBib::RfcBibliography).to receive(:get).with("RFC 8341", nil,
2151
+ anything) do
1792
2152
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1793
2153
  <bibitem id="RFC8341">
1794
2154
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>