metanorma-standoc 1.11.0 → 1.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +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>