metanorma-standoc 1.11.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +3 -31
  3. data/.gitignore +23 -0
  4. data/Gemfile +2 -0
  5. data/lib/asciidoctor/standoc/base.rb +2 -241
  6. data/lib/asciidoctor/standoc/blocks.rb +2 -238
  7. data/lib/asciidoctor/standoc/blocks_notes.rb +2 -100
  8. data/lib/asciidoctor/standoc/cleanup.rb +2 -207
  9. data/lib/asciidoctor/standoc/cleanup_amend.rb +2 -53
  10. data/lib/asciidoctor/standoc/cleanup_block.rb +2 -173
  11. data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +2 -204
  12. data/lib/asciidoctor/standoc/cleanup_footnotes.rb +2 -108
  13. data/lib/asciidoctor/standoc/cleanup_image.rb +2 -69
  14. data/lib/asciidoctor/standoc/cleanup_inline.rb +2 -179
  15. data/lib/asciidoctor/standoc/cleanup_maths.rb +2 -221
  16. data/lib/asciidoctor/standoc/cleanup_ref.rb +2 -169
  17. data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +2 -93
  18. data/lib/asciidoctor/standoc/cleanup_reqt.rb +2 -110
  19. data/lib/asciidoctor/standoc/cleanup_section.rb +2 -184
  20. data/lib/asciidoctor/standoc/cleanup_section_names.rb +2 -91
  21. data/lib/asciidoctor/standoc/cleanup_symbols.rb +2 -47
  22. data/lib/asciidoctor/standoc/cleanup_table.rb +2 -67
  23. data/lib/asciidoctor/standoc/cleanup_terms.rb +2 -113
  24. data/lib/asciidoctor/standoc/cleanup_terms_designations.rb +2 -161
  25. data/lib/asciidoctor/standoc/cleanup_text.rb +2 -95
  26. data/lib/asciidoctor/standoc/cleanup_toc.rb +3 -0
  27. data/lib/asciidoctor/standoc/cleanup_xref.rb +2 -106
  28. data/lib/asciidoctor/standoc/converter.rb +2 -123
  29. data/lib/asciidoctor/standoc/datamodel/attributes_table_preprocessor.rb +2 -56
  30. data/lib/asciidoctor/standoc/datamodel/diagram_preprocessor.rb +2 -102
  31. data/lib/asciidoctor/standoc/datamodel/plantuml_renderer.rb +3 -404
  32. data/lib/asciidoctor/standoc/deprecated.rb +5 -0
  33. data/lib/asciidoctor/standoc/front.rb +2 -219
  34. data/lib/asciidoctor/standoc/front_contributor.rb +2 -191
  35. data/lib/asciidoctor/standoc/inline.rb +2 -229
  36. data/lib/asciidoctor/standoc/lists.rb +2 -119
  37. data/lib/asciidoctor/standoc/macros.rb +2 -203
  38. data/lib/asciidoctor/standoc/macros_form.rb +2 -62
  39. data/lib/asciidoctor/standoc/macros_note.rb +2 -44
  40. data/lib/asciidoctor/standoc/macros_plantuml.rb +2 -112
  41. data/lib/asciidoctor/standoc/macros_terms.rb +2 -180
  42. data/lib/asciidoctor/standoc/ref.rb +2 -225
  43. data/lib/asciidoctor/standoc/ref_sect.rb +2 -143
  44. data/lib/asciidoctor/standoc/ref_utility.rb +2 -0
  45. data/lib/asciidoctor/standoc/render.rb +3 -0
  46. data/lib/asciidoctor/standoc/reqt.rb +2 -89
  47. data/lib/asciidoctor/standoc/section.rb +2 -190
  48. data/lib/asciidoctor/standoc/table.rb +2 -84
  49. data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +2 -178
  50. data/lib/asciidoctor/standoc/terms.rb +2 -153
  51. data/lib/asciidoctor/standoc/utils.rb +2 -116
  52. data/lib/asciidoctor/standoc/validate.rb +2 -157
  53. data/lib/asciidoctor/standoc/validate_section.rb +2 -54
  54. data/lib/isodoc/html/htmlstyle.css +20 -11
  55. data/lib/isodoc/html/htmlstyle.scss +11 -11
  56. data/lib/metanorma/standoc/base.rb +149 -0
  57. data/lib/{asciidoctor → metanorma}/standoc/basicdoc.rng +0 -0
  58. data/lib/{asciidoctor → metanorma}/standoc/biblio.rng +0 -0
  59. data/lib/metanorma/standoc/blocks.rb +239 -0
  60. data/lib/metanorma/standoc/blocks_notes.rb +101 -0
  61. data/lib/metanorma/standoc/cleanup.rb +146 -0
  62. data/lib/metanorma/standoc/cleanup_amend.rb +54 -0
  63. data/lib/metanorma/standoc/cleanup_block.rb +173 -0
  64. data/lib/metanorma/standoc/cleanup_boilerplate.rb +213 -0
  65. data/lib/metanorma/standoc/cleanup_footnotes.rb +109 -0
  66. data/lib/metanorma/standoc/cleanup_image.rb +70 -0
  67. data/lib/metanorma/standoc/cleanup_inline.rb +190 -0
  68. data/lib/metanorma/standoc/cleanup_maths.rb +222 -0
  69. data/lib/metanorma/standoc/cleanup_ref.rb +170 -0
  70. data/lib/metanorma/standoc/cleanup_ref_dl.rb +104 -0
  71. data/lib/metanorma/standoc/cleanup_reqt.rb +111 -0
  72. data/lib/metanorma/standoc/cleanup_section.rb +212 -0
  73. data/lib/metanorma/standoc/cleanup_section_names.rb +92 -0
  74. data/lib/metanorma/standoc/cleanup_symbols.rb +48 -0
  75. data/lib/metanorma/standoc/cleanup_table.rb +68 -0
  76. data/lib/metanorma/standoc/cleanup_terms.rb +140 -0
  77. data/lib/metanorma/standoc/cleanup_terms_designations.rb +199 -0
  78. data/lib/metanorma/standoc/cleanup_text.rb +96 -0
  79. data/lib/metanorma/standoc/cleanup_toc.rb +98 -0
  80. data/lib/metanorma/standoc/cleanup_xref.rb +107 -0
  81. data/lib/metanorma/standoc/converter.rb +124 -0
  82. data/lib/metanorma/standoc/datamodel/attributes_table_preprocessor.rb +57 -0
  83. data/lib/metanorma/standoc/datamodel/diagram_preprocessor.rb +103 -0
  84. data/lib/metanorma/standoc/datamodel/plantuml_renderer.rb +409 -0
  85. data/lib/metanorma/standoc/front.rb +224 -0
  86. data/lib/metanorma/standoc/front_contributor.rb +192 -0
  87. data/lib/metanorma/standoc/inline.rb +232 -0
  88. data/lib/{asciidoctor → metanorma}/standoc/isodoc.rng +90 -18
  89. data/lib/metanorma/standoc/lists.rb +120 -0
  90. data/lib/metanorma/standoc/macros.rb +204 -0
  91. data/lib/metanorma/standoc/macros_form.rb +63 -0
  92. data/lib/metanorma/standoc/macros_note.rb +45 -0
  93. data/lib/metanorma/standoc/macros_plantuml.rb +113 -0
  94. data/lib/metanorma/standoc/macros_terms.rb +181 -0
  95. data/lib/metanorma/standoc/ref.rb +243 -0
  96. data/lib/metanorma/standoc/ref_sect.rb +153 -0
  97. data/lib/metanorma/standoc/ref_utility.rb +129 -0
  98. data/lib/metanorma/standoc/render.rb +115 -0
  99. data/lib/metanorma/standoc/reqt.rb +90 -0
  100. data/lib/{asciidoctor → metanorma}/standoc/reqt.rng +0 -0
  101. data/lib/metanorma/standoc/section.rb +209 -0
  102. data/lib/metanorma/standoc/table.rb +85 -0
  103. data/lib/metanorma/standoc/term_lookup_cleanup.rb +179 -0
  104. data/lib/metanorma/standoc/terms.rb +160 -0
  105. data/lib/metanorma/standoc/utils.rb +101 -0
  106. data/lib/metanorma/standoc/validate.rb +158 -0
  107. data/lib/metanorma/standoc/validate_section.rb +55 -0
  108. data/lib/metanorma/standoc/version.rb +1 -1
  109. data/lib/{asciidoctor → metanorma}/standoc/views/datamodel/model_representation.adoc.erb +0 -0
  110. data/lib/{asciidoctor → metanorma}/standoc/views/datamodel/plantuml_representation.adoc.erb +0 -0
  111. data/lib/metanorma-standoc.rb +1 -1
  112. data/metanorma-standoc.gemspec +4 -4
  113. data/spec/{asciidoctor → metanorma}/base_spec.rb +73 -8
  114. data/spec/{asciidoctor → metanorma}/blank_spec.rb +1 -1
  115. data/spec/{asciidoctor → metanorma}/blocks_spec.rb +49 -20
  116. data/spec/{asciidoctor → metanorma}/cleanup_blocks_spec.rb +25 -1
  117. data/spec/{asciidoctor → metanorma}/cleanup_sections_spec.rb +2 -2
  118. data/spec/{asciidoctor → metanorma}/cleanup_spec.rb +9 -9
  119. data/spec/{asciidoctor → metanorma}/cleanup_terms_spec.rb +528 -91
  120. data/spec/{asciidoctor → metanorma}/datamodel/attributes_table_preprocessor_spec.rb +22 -22
  121. data/spec/{asciidoctor → metanorma}/datamodel/diagram_preprocessor_spec.rb +17 -17
  122. data/spec/{asciidoctor → metanorma}/inline_spec.rb +175 -6
  123. data/spec/{asciidoctor → metanorma}/isobib_cache_spec.rb +5 -9
  124. data/spec/{asciidoctor → metanorma}/lists_spec.rb +1 -1
  125. data/spec/{asciidoctor → metanorma}/macros_json2text_spec.rb +0 -0
  126. data/spec/{asciidoctor → metanorma}/macros_plantuml_spec.rb +3 -3
  127. data/spec/{asciidoctor → metanorma}/macros_spec.rb +8 -8
  128. data/spec/{asciidoctor → metanorma}/macros_yaml2text_spec.rb +0 -0
  129. data/spec/metanorma/refs_dl_spec.rb +863 -0
  130. data/spec/{asciidoctor → metanorma}/refs_spec.rb +1277 -687
  131. data/spec/{asciidoctor → metanorma}/section_spec.rb +90 -3
  132. data/spec/{asciidoctor → metanorma}/table_spec.rb +1 -1
  133. data/spec/{asciidoctor → metanorma}/validate_spec.rb +2 -2
  134. data/spec/spec_helper.rb +0 -1
  135. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +179 -179
  136. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec1.yml +12 -12
  137. data/spec/vcr_cassettes/isobib_get_123.yml +13 -13
  138. data/spec/vcr_cassettes/isobib_get_123_1.yml +98 -98
  139. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +111 -111
  140. data/spec/vcr_cassettes/isobib_get_123_2001.yml +13 -13
  141. data/spec/vcr_cassettes/isobib_get_124.yml +14 -14
  142. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +14 -14
  143. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +46 -46
  144. metadata +89 -38
  145. data/lib/asciidoctor/standoc/ref_date_id.rb +0 -62
  146. data/spec/asciidoctor/refs_dl_spec.rb +0 -864
@@ -2,9 +2,9 @@ require "spec_helper"
2
2
  require "relaton_iso"
3
3
  require "relaton_ietf"
4
4
 
5
- RSpec.describe Asciidoctor::Standoc do
5
+ RSpec.describe Metanorma::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,210 +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/>
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</docidentifier>
249
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
250
- <docnumber>123</docnumber>
251
- <contributor>
252
- <role type='publisher'/>
253
- <organization>
254
- <name>International Organization for Standardization</name>
255
- <abbreviation>ISO</abbreviation>
256
- <uri>www.iso.org</uri>
257
- </organization>
258
- </contributor>
259
- <edition>3</edition>
260
- <language>en</language>
261
- <script>Latn</script>
262
- <status>
263
- <stage>90</stage>
264
- <substage>93</substage>
265
- </status>
266
- <copyright>
267
- <from>2001</from>
268
- <owner>
269
- <organization>
270
- <name>ISO</name>
271
- </organization>
272
- </owner>
273
- </copyright>
274
- <relation type='obsoletes'>
275
- <bibitem type='standard'>
276
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
277
- </bibitem>
278
- </relation>
279
- <relation type='instance'>
280
- <bibitem type='standard'>
281
- <fetched/>
282
- <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
283
- <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
284
- <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
285
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
286
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
287
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
288
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
289
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
290
- <docnumber>123</docnumber>
291
- <date type='published'>
292
- <on>2001-05</on>
293
- </date>
294
- <contributor>
295
- <role type='publisher'/>
296
- <organization>
297
- <name>International Organization for Standardization</name>
298
- <abbreviation>ISO</abbreviation>
299
- <uri>www.iso.org</uri>
300
- </organization>
301
- </contributor>
302
- <edition>3</edition>
303
- <language>en</language>
304
- <script>Latn</script>
305
- <abstract format='text/plain' language='en' script='Latn'>
306
- This International Standard specifies procedures for sampling
307
- natural rubber latex concentrate and for sampling synthetic rubber
308
- latices and artificial latices. It is also suitable for sampling
309
- rubber latex contained in drums, tank cars or tanks. The
310
- procedures may also be used for sampling plastics dispersions.
311
- </abstract>
312
- <status>
313
- <stage>90</stage>
314
- <substage>93</substage>
315
- </status>
316
- <copyright>
317
- <from>2001</from>
318
- <owner>
319
- <organization>
320
- <name>ISO</name>
321
- </organization>
322
- </owner>
323
- </copyright>
324
- <relation type='obsoletes'>
325
- <bibitem type='standard'>
326
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
327
- </bibitem>
328
- </relation>
329
- <place>Geneva</place>
330
- </bibitem>
331
- </relation>
332
- <place>Geneva</place>
333
- </bibitem>
334
- <bibitem id='iso124' type='standard'>
335
- <fetched/>
336
- <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
337
- <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
338
- <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
339
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
340
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
341
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
342
- <docidentifier type='ISO'>ISO 123</docidentifier>
343
- <docidentifier type='metanorma'>[1]</docidentifier>
344
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
345
- <docnumber>123</docnumber>
346
- <contributor>
347
- <role type='publisher'/>
348
- <organization>
349
- <name>International Organization for Standardization</name>
350
- <abbreviation>ISO</abbreviation>
351
- <uri>www.iso.org</uri>
352
- </organization>
353
- </contributor>
354
- <edition>3</edition>
355
- <language>en</language>
356
- <script>Latn</script>
357
- <status>
358
- <stage>90</stage>
359
- <substage>93</substage>
360
- </status>
361
- <copyright>
362
- <from>2001</from>
363
- <owner>
364
- <organization>
365
- <name>ISO</name>
366
- </organization>
367
- </owner>
368
- </copyright>
369
- <relation type='obsoletes'>
370
- <bibitem type='standard'>
371
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
372
- </bibitem>
373
- </relation>
374
- <relation type='instance'>
375
- <bibitem type='standard'>
376
- <fetched/>
377
- <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
378
- <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
379
- <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
380
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
381
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
382
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
383
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
384
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
385
- <docnumber>123</docnumber>
386
- <date type='published'>
387
- <on>2001-05</on>
388
- </date>
389
- <contributor>
390
- <role type='publisher'/>
391
- <organization>
392
- <name>International Organization for Standardization</name>
393
- <abbreviation>ISO</abbreviation>
394
- <uri>www.iso.org</uri>
395
- </organization>
396
- </contributor>
397
- <edition>3</edition>
398
- <language>en</language>
399
- <script>Latn</script>
400
- <abstract format='text/plain' language='en' script='Latn'>
401
- This International Standard specifies procedures for sampling
402
- natural rubber latex concentrate and for sampling synthetic rubber
403
- latices and artificial latices. It is also suitable for sampling
404
- rubber latex contained in drums, tank cars or tanks. The
405
- procedures may also be used for sampling plastics dispersions.
406
- </abstract>
407
- <status>
408
- <stage>90</stage>
409
- <substage>93</substage>
410
- </status>
411
- <copyright>
412
- <from>2001</from>
413
- <owner>
414
- <organization>
415
- <name>ISO</name>
416
- </organization>
417
- </owner>
418
- </copyright>
419
- <relation type='obsoletes'>
420
- <bibitem type='standard'>
421
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
422
- </bibitem>
423
- </relation>
424
- <place>Geneva</place>
425
- </bibitem>
426
- </relation>
427
- <place>Geneva</place>
428
- </bibitem>
429
- </references>
430
- </bibliography>
431
- </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>
432
443
  OUTPUT
444
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
445
+ .to be_equivalent_to xmlpp(output)
433
446
  end
434
447
  end
435
448
 
436
449
  it "fetches simple ISO reference in French" do
437
450
  VCR.use_cassette "isobib_get_123_1_fr" do
438
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
451
+ input = <<~INPUT
439
452
  = Document title
440
453
  Author
441
454
  :docfile: test.adoc
@@ -450,230 +463,233 @@ RSpec.describe Asciidoctor::Standoc do
450
463
  * [[[iso123,ISO 123]]] _Standard_
451
464
  * [[[iso124,(1)ISO 123]]] _Standard_
452
465
  INPUT
453
- #{BLANK_HDR.sub(%r{<language>en</language>}, '<language>fr</language>')}
454
- <sections> </sections>
455
- <bibliography>
456
- <references id='_' normative='true' obligation='informative'>
457
- <title>R&#233;f&#233;rences normatives</title>
458
- <p id='_'>
459
- Les documents suivants cit&#233;s dans le texte constituent, pour tout
460
- ou partie de leur contenu, des exigences du pr&#233;sent document. Pour
461
- les r&#233;f&#233;rences dat&#233;es, seule l&#8217;&#233;dition
462
- cit&#233;e s&#8217;applique. Pour les r&#233;f&#233;rences non
463
- dat&#233;es, la derni&#232;re &#233;dition du document de
464
- r&#233;f&#233;rence s&#8217;applique (y compris les &#233;ventuels
465
- amendements).
466
- </p>
467
- <bibitem id='iso123' type='standard'>
468
- <fetched/>
469
- <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
470
- <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
471
- <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
472
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
473
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
474
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
475
- <docidentifier type='ISO'>ISO 123</docidentifier>
476
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
477
- <docnumber>123</docnumber>
478
- <contributor>
479
- <role type='publisher'/>
480
- <organization>
481
- <name>International Organization for Standardization</name>
482
- <abbreviation>ISO</abbreviation>
483
- <uri>www.iso.org</uri>
484
- </organization>
485
- </contributor>
486
- <edition>3</edition>
487
- <language>en</language>
488
- <language>fr</language>
489
- <script>Latn</script>
490
- <status>
491
- <stage>90</stage>
492
- <substage>93</substage>
493
- </status>
494
- <copyright>
495
- <from>2001</from>
496
- <owner>
497
- <organization>
498
- <name>ISO</name>
499
- </organization>
500
- </owner>
501
- </copyright>
502
- <relation type='obsoletes'>
503
- <bibitem type='standard'>
504
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
505
- </bibitem>
506
- </relation>
507
- <relation type='instance'>
508
- <bibitem type='standard'>
509
- <fetched/>
510
- <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
511
- <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
512
- <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
513
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
514
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
515
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
516
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
517
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
518
- <docnumber>123</docnumber>
519
- <date type='published'>
520
- <on>2001-05</on>
521
- </date>
522
- <contributor>
523
- <role type='publisher'/>
524
- <organization>
525
- <name>International Organization for Standardization</name>
526
- <abbreviation>ISO</abbreviation>
527
- <uri>www.iso.org</uri>
528
- </organization>
529
- </contributor>
530
- <edition>3</edition>
531
- <language>en</language>
532
- <language>fr</language>
533
- <script>Latn</script>
534
- <abstract format='text/plain' language='fr' script='Latn'>
535
- La pr&#233;sente Norme internationale sp&#233;cifie des
536
- m&#233;thodes d&#8217;&#233;chantillonnage pour des
537
- concentr&#233;s de latex de caoutchouc naturel et pour
538
- &#233;chantillonner des latex de caoutchouc synth&#233;tique et
539
- des latex artificiels. Elle s&#8217;applique &#233;galement &#224;
540
- l&#8217;&#233;chantillonnage de latex de caoutchouc contenus dans
541
- des f&#251;ts, citernes routi&#232;res ou de stockage. Le mode
542
- op&#233;ratoire peut aussi &#234;tre utilis&#233; pour
543
- l&#8217;&#233;chantillonnage de dispersions de plastiques.
544
- </abstract>
545
- <status>
546
- <stage>90</stage>
547
- <substage>93</substage>
548
- </status>
549
- <copyright>
550
- <from>2001</from>
551
- <owner>
552
- <organization>
553
- <name>ISO</name>
554
- </organization>
555
- </owner>
556
- </copyright>
557
- <relation type='obsoletes'>
558
- <bibitem type='standard'>
559
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
560
- </bibitem>
561
- </relation>
562
- <place>Geneva</place>
563
- </bibitem>
564
- </relation>
565
- <place>Geneva</place>
566
- </bibitem>
567
- <bibitem id='iso124' type='standard'>
568
- <fetched/>
569
- <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
570
- <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
571
- <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
572
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
573
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
574
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
575
- <docidentifier type='ISO'>ISO 123</docidentifier>
576
- <docidentifier type='metanorma'>[1]</docidentifier>
577
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
578
- <docnumber>123</docnumber>
579
- <contributor>
580
- <role type='publisher'/>
581
- <organization>
582
- <name>International Organization for Standardization</name>
583
- <abbreviation>ISO</abbreviation>
584
- <uri>www.iso.org</uri>
585
- </organization>
586
- </contributor>
587
- <edition>3</edition>
588
- <language>en</language>
589
- <language>fr</language>
590
- <script>Latn</script>
591
- <status>
592
- <stage>90</stage>
593
- <substage>93</substage>
594
- </status>
595
- <copyright>
596
- <from>2001</from>
597
- <owner>
598
- <organization>
599
- <name>ISO</name>
600
- </organization>
601
- </owner>
602
- </copyright>
603
- <relation type='obsoletes'>
604
- <bibitem type='standard'>
605
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
606
- </bibitem>
607
- </relation>
608
- <relation type='instance'>
609
- <bibitem type='standard'>
610
- <fetched/>
611
- <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
612
- <title type='title-main' format='text/plain' language='fr' script='Latn'>&#201;chantillonnage</title>
613
- <title type='main' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc&#8201;&#8212;&#8201;&#201;chantillonnage</title>
614
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
615
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
616
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
617
- <docidentifier type='ISO'>ISO 123:2001</docidentifier>
618
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:fr</docidentifier>
619
- <docnumber>123</docnumber>
620
- <date type='published'>
621
- <on>2001-05</on>
622
- </date>
623
- <contributor>
624
- <role type='publisher'/>
625
- <organization>
626
- <name>International Organization for Standardization</name>
627
- <abbreviation>ISO</abbreviation>
628
- <uri>www.iso.org</uri>
629
- </organization>
630
- </contributor>
631
- <edition>3</edition>
632
- <language>en</language>
633
- <language>fr</language>
634
- <script>Latn</script>
635
- <abstract format='text/plain' language='fr' script='Latn'>
636
- La pr&#233;sente Norme internationale sp&#233;cifie des
637
- m&#233;thodes d&#8217;&#233;chantillonnage pour des
638
- concentr&#233;s de latex de caoutchouc naturel et pour
639
- &#233;chantillonner des latex de caoutchouc synth&#233;tique et
640
- des latex artificiels. Elle s&#8217;applique &#233;galement &#224;
641
- l&#8217;&#233;chantillonnage de latex de caoutchouc contenus dans
642
- des f&#251;ts, citernes routi&#232;res ou de stockage. Le mode
643
- op&#233;ratoire peut aussi &#234;tre utilis&#233; pour
644
- l&#8217;&#233;chantillonnage de dispersions de plastiques.
645
- </abstract>
646
- <status>
647
- <stage>90</stage>
648
- <substage>93</substage>
649
- </status>
650
- <copyright>
651
- <from>2001</from>
652
- <owner>
653
- <organization>
654
- <name>ISO</name>
655
- </organization>
656
- </owner>
657
- </copyright>
658
- <relation type='obsoletes'>
659
- <bibitem type='standard'>
660
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
661
- </bibitem>
662
- </relation>
663
- <place>Geneva</place>
664
- </bibitem>
665
- </relation>
666
- <place>Geneva</place>
667
- </bibitem>
668
- </references>
669
- </bibliography>
670
- </standard-document>
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/>
483
+ <title type='title-intro' format='text/plain' language='fr' script='Latn'>Latex de caoutchouc</title>
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>
671
685
  OUTPUT
686
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
687
+ .to be_equivalent_to xmlpp(output)
672
688
  end
673
689
  end
674
690
 
675
691
  it "processes simple IEC reference" do
676
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
692
+ input = <<~INPUT
677
693
  #{ASCIIDOC_BLANK_HDR}
678
694
  [bibliography]
679
695
  == Normative References
@@ -681,6 +697,7 @@ RSpec.describe Asciidoctor::Standoc do
681
697
  * [[[iso123,IEC 123]]] _Standard_
682
698
  * [[[iso124,(1)IEC 123]]] _Standard_
683
699
  INPUT
700
+ output = <<~OUTPUT
684
701
  #{BLANK_HDR}
685
702
  <sections>
686
703
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -713,13 +730,14 @@ RSpec.describe Asciidoctor::Standoc do
713
730
  </bibliography>
714
731
  </standard-document>
715
732
  OUTPUT
733
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
734
+ .to be_equivalent_to xmlpp(output)
716
735
  end
717
736
 
718
737
  it "processes dated ISO reference and joint ISO/IEC references" do
719
- # mock_isobib_get_iec12382
720
- # mock_isobib_get_124
721
- VCR.use_cassette "dated_iso_ref_joint_iso_iec" do
722
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
738
+ VCR.use_cassette("dated_iso_ref_joint_iso_iec",
739
+ match_requests_on: %i[method uri body]) do
740
+ input = <<~INPUT
723
741
  #{ISOBIB_BLANK_HDR}
724
742
  [bibliography]
725
743
  == Normative References
@@ -729,6 +747,7 @@ RSpec.describe Asciidoctor::Standoc do
729
747
  * [[[iso125,(1)ISO/IEC TR 12382:1992]]] _Standard_
730
748
  * [[[iso126,(1)ISO 124:2014]]] _Standard_
731
749
  INPUT
750
+ output = <<~OUTPUT
732
751
  #{BLANK_HDR}
733
752
  <sections>
734
753
 
@@ -925,12 +944,14 @@ RSpec.describe Asciidoctor::Standoc do
925
944
  </standard-document>
926
945
 
927
946
  OUTPUT
947
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
948
+ .to be_equivalent_to xmlpp(output)
928
949
  end
929
950
  end
930
951
 
931
952
  it "declines to fetch individual references" do
932
953
  VCR.use_cassette "dated_iso_ref_joint_iso_iec1" do
933
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
954
+ input = <<~INPUT
934
955
  #{ISOBIB_BLANK_HDR}
935
956
  [bibliography]
936
957
  == Normative References
@@ -938,6 +959,7 @@ RSpec.describe Asciidoctor::Standoc do
938
959
  * [[[iso123,nofetch(ISO/IEC TR 12382:1992)]]] _Standard_
939
960
  * [[[iso124,ISO 124:2014]]] _Standard_
940
961
  INPUT
962
+ output = <<~OUTPUT
941
963
  #{BLANK_HDR}
942
964
  <sections>
943
965
 
@@ -948,23 +970,312 @@ RSpec.describe Asciidoctor::Standoc do
948
970
  <formattedref format='application/x-isodoc+xml'>
949
971
  <em>Standard</em>
950
972
  </formattedref>
951
- <docidentifier type='ISO'>ISO/IEC TR 12382:1992</docidentifier>
952
- <docnumber>12382:1992</docnumber>
973
+ <docidentifier type='ISO'>ISO/IEC TR 12382</docidentifier>
974
+ <docnumber>12382</docnumber>
975
+ <date type='published'><on>1992</on></date>
976
+ </bibitem>
977
+ <bibitem id='iso124' type='standard'>
978
+ <fetched/>
979
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Latex, rubber</title>
980
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of total solids content</title>
981
+ <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber — Determination of total solids content</title>
982
+ <uri type='src'>https://www.iso.org/standard/61884.html</uri>
983
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
984
+ <uri type='rss'>https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
985
+ <docidentifier type='ISO'>ISO 124:2014</docidentifier>
986
+ <docidentifier type='URN'>urn:iso:std:iso:124:stage-90.93:ed-7:en</docidentifier>
987
+ <docnumber>124</docnumber>
988
+ <date type='published'>
989
+ <on>2014-03</on>
990
+ </date>
991
+ <contributor>
992
+ <role type='publisher'/>
993
+ <organization>
994
+ <name>International Organization for Standardization</name>
995
+ <abbreviation>ISO</abbreviation>
996
+ <uri>www.iso.org</uri>
997
+ </organization>
998
+ </contributor>
999
+ <edition>7</edition>
1000
+ <language>en</language>
1001
+ <script>Latn</script>
1002
+ <abstract format='text/plain' language='en' script='Latn'>ISO 124:2014 specifies methods for the determination of the total solids content of natural rubber field and concentrated latices and synthetic rubber latex. These methods are not necessarily suitable for latex from natural sources other than the Hevea brasiliensis, for vulcanized latex, for compounded latex, or for artificial dispersions of rubber.</abstract>
1003
+ <status>
1004
+ <stage>90</stage>
1005
+ <substage>93</substage>
1006
+ </status>
1007
+ <copyright>
1008
+ <from>2014</from>
1009
+ <owner>
1010
+ <organization>
1011
+ <name>ISO</name>
1012
+ </organization>
1013
+ </owner>
1014
+ </copyright>
1015
+ <relation type='obsoletes'>
1016
+ <bibitem type='standard'>
1017
+ <formattedref format='text/plain'>ISO 124:2011</formattedref>
1018
+ </bibitem>
1019
+ </relation>
1020
+ <place>Geneva</place>
1021
+ </bibitem>
1022
+ </references></bibliography></standard-document>
1023
+ OUTPUT
1024
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1025
+ .to be_equivalent_to xmlpp(output)
1026
+ end
1027
+ end
1028
+
1029
+ it "hides individual references" do
1030
+ VCR.use_cassette "hide_refs",
1031
+ match_requests_on: %i[method uri body] do
1032
+ input = <<~INPUT
1033
+ #{ISOBIB_BLANK_HDR}
1034
+ [bibliography]
1035
+ == Normative References
1036
+
1037
+ * [[[iso123,hidden(ISO 124)]]] _Standard_
1038
+ * [[[iso124,ISO 125]]] _Standard_
1039
+
1040
+ [bibliography]
1041
+ == Bibliography
1042
+
1043
+ * [[[iso125,hidden(ISO 125)]]] _Standard_
1044
+ * [[[iso126,hidden(XYZ)]]] _Standard_
1045
+ * [[[iso127,ISO 124]]] _Standard_
1046
+ * [[[iso128,ABC]]] _Standard_
1047
+ INPUT
1048
+ output = <<~OUTPUT
1049
+ #{BLANK_HDR}
1050
+ <sections>
1051
+
1052
+ </sections><bibliography><references id="_" normative="true" obligation="informative" >
1053
+ <title>Normative references</title>
1054
+ #{NORM_REF_BOILERPLATE}
1055
+ <bibitem id='iso123' type='standard' hidden='true'>
1056
+ <fetched/>
1057
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Latex, rubber</title>
1058
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of total solids content</title>
1059
+ <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber&#8201;&#8212;&#8201;Determination of total solids content</title>
1060
+ <uri type='src'>https://www.iso.org/standard/61884.html</uri>
1061
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
1062
+ <uri type='rss'>https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
1063
+ <docidentifier type='ISO'>ISO 124</docidentifier>
1064
+ <docidentifier type='URN'>urn:iso:std:iso:124:stage-90.93:ed-7:en</docidentifier>
1065
+ <docnumber>124</docnumber>
1066
+ <contributor>
1067
+ <role type='publisher'/>
1068
+ <organization>
1069
+ <name>International Organization for Standardization</name>
1070
+ <abbreviation>ISO</abbreviation>
1071
+ <uri>www.iso.org</uri>
1072
+ </organization>
1073
+ </contributor>
1074
+ <edition>7</edition>
1075
+ <language>en</language>
1076
+ <script>Latn</script>
1077
+ <status>
1078
+ <stage>90</stage>
1079
+ <substage>93</substage>
1080
+ </status>
1081
+ <copyright>
1082
+ <from>2014</from>
1083
+ <owner>
1084
+ <organization>
1085
+ <name>ISO</name>
1086
+ </organization>
1087
+ </owner>
1088
+ </copyright>
1089
+ <relation type='obsoletes'>
1090
+ <bibitem type='standard'>
1091
+ <formattedref format='text/plain'>ISO 124:2011</formattedref>
1092
+ </bibitem>
1093
+ </relation>
1094
+ <relation type='instance'>
1095
+ <bibitem type='standard'>
1096
+ <fetched/>
1097
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Latex, rubber</title>
1098
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of total solids content</title>
1099
+ <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber&#8201;&#8212;&#8201;Determination of total solids content</title>
1100
+ <uri type='src'>https://www.iso.org/standard/61884.html</uri>
1101
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
1102
+ <uri type='rss'>https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
1103
+ <docidentifier type='ISO'>ISO 124:2014</docidentifier>
1104
+ <docidentifier type='URN'>urn:iso:std:iso:124:stage-90.93:ed-7:en</docidentifier>
1105
+ <docnumber>124</docnumber>
1106
+ <date type='published'>
1107
+ <on>2014-03</on>
1108
+ </date>
1109
+ <contributor>
1110
+ <role type='publisher'/>
1111
+ <organization>
1112
+ <name>International Organization for Standardization</name>
1113
+ <abbreviation>ISO</abbreviation>
1114
+ <uri>www.iso.org</uri>
1115
+ </organization>
1116
+ </contributor>
1117
+ <edition>7</edition>
1118
+ <language>en</language>
1119
+ <script>Latn</script>
1120
+ <abstract format='text/plain' language='en' script='Latn'>
1121
+ ISO 124:2014 specifies methods for the determination of the total
1122
+ solids content of natural rubber field and concentrated latices
1123
+ and synthetic rubber latex. These methods are not necessarily
1124
+ suitable for latex from natural sources other than the Hevea
1125
+ brasiliensis, for vulcanized latex, for compounded latex, or for
1126
+ artificial dispersions of rubber.
1127
+ </abstract>
1128
+ <status>
1129
+ <stage>90</stage>
1130
+ <substage>93</substage>
1131
+ </status>
1132
+ <copyright>
1133
+ <from>2014</from>
1134
+ <owner>
1135
+ <organization>
1136
+ <name>ISO</name>
1137
+ </organization>
1138
+ </owner>
1139
+ </copyright>
1140
+ <relation type='obsoletes'>
1141
+ <bibitem type='standard'>
1142
+ <formattedref format='text/plain'>ISO 124:2011</formattedref>
1143
+ </bibitem>
1144
+ </relation>
1145
+ <place>Geneva</place>
1146
+ </bibitem>
1147
+ </relation>
1148
+ <place>Geneva</place>
1149
+ </bibitem>
1150
+ <bibitem id='iso124' type='standard'>
1151
+ <fetched/>
1152
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Natural rubber latex concentrate</title>
1153
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of alkalinity</title>
1154
+ <title type='main' format='text/plain' language='en' script='Latn'>
1155
+ Natural rubber latex concentrate&#8201;&#8212;&#8201;Determination of
1156
+ alkalinity
1157
+ </title>
1158
+ <uri type='src'>https://www.iso.org/standard/72849.html</uri>
1159
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:72849:en</uri>
1160
+ <uri type='rss'>https://www.iso.org/contents/data/standard/07/28/72849.detail.rss</uri>
1161
+ <docidentifier type='ISO'>ISO 125</docidentifier>
1162
+ <docidentifier type='URN'>urn:iso:std:iso:125:stage-60.60:ed-7:en</docidentifier>
1163
+ <docnumber>125</docnumber>
1164
+ <contributor>
1165
+ <role type='publisher'/>
1166
+ <organization>
1167
+ <name>International Organization for Standardization</name>
1168
+ <abbreviation>ISO</abbreviation>
1169
+ <uri>www.iso.org</uri>
1170
+ </organization>
1171
+ </contributor>
1172
+ <edition>7</edition>
1173
+ <language>en</language>
1174
+ <script>Latn</script>
1175
+ <status>
1176
+ <stage>60</stage>
1177
+ <substage>60</substage>
1178
+ </status>
1179
+ <copyright>
1180
+ <from>2020</from>
1181
+ <owner>
1182
+ <organization>
1183
+ <name>ISO</name>
1184
+ </organization>
1185
+ </owner>
1186
+ </copyright>
1187
+ <relation type='obsoletes'>
1188
+ <bibitem type='standard'>
1189
+ <formattedref format='text/plain'>ISO 125:2011</formattedref>
1190
+ </bibitem>
1191
+ </relation>
1192
+ <relation type='instance'>
1193
+ <bibitem type='standard'>
1194
+ <fetched/>
1195
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Natural rubber latex concentrate</title>
1196
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of alkalinity</title>
1197
+ <title type='main' format='text/plain' language='en' script='Latn'>
1198
+ Natural rubber latex concentrate&#8201;&#8212;&#8201;Determination
1199
+ of alkalinity
1200
+ </title>
1201
+ <uri type='src'>https://www.iso.org/standard/72849.html</uri>
1202
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:72849:en</uri>
1203
+ <uri type='rss'>https://www.iso.org/contents/data/standard/07/28/72849.detail.rss</uri>
1204
+ <docidentifier type='ISO'>ISO 125:2020</docidentifier>
1205
+ <docidentifier type='URN'>urn:iso:std:iso:125:stage-60.60:ed-7:en</docidentifier>
1206
+ <docnumber>125</docnumber>
1207
+ <date type='published'>
1208
+ <on>2020-02</on>
1209
+ </date>
1210
+ <contributor>
1211
+ <role type='publisher'/>
1212
+ <organization>
1213
+ <name>International Organization for Standardization</name>
1214
+ <abbreviation>ISO</abbreviation>
1215
+ <uri>www.iso.org</uri>
1216
+ </organization>
1217
+ </contributor>
1218
+ <edition>7</edition>
1219
+ <language>en</language>
1220
+ <script>Latn</script>
1221
+ <abstract format='text/plain' language='en' script='Latn'>
1222
+ This document specifies a method for the determination of the
1223
+ alkalinity of natural rubber latex concentrate. The method is not
1224
+ necessarily suitable for latices from natural sources other than
1225
+ Hevea brasiliensis or for synthetic rubber latices, compounded
1226
+ latex, vulcanized latex or artificial dispersions of rubber. NOTE
1227
+ A method for the determination of the alkalinity of
1228
+ polychloroprene latex is specified in ISO 13773.
1229
+ </abstract>
1230
+ <status>
1231
+ <stage>60</stage>
1232
+ <substage>60</substage>
1233
+ </status>
1234
+ <copyright>
1235
+ <from>2020</from>
1236
+ <owner>
1237
+ <organization>
1238
+ <name>ISO</name>
1239
+ </organization>
1240
+ </owner>
1241
+ </copyright>
1242
+ <relation type='obsoletes'>
1243
+ <bibitem type='standard'>
1244
+ <formattedref format='text/plain'>ISO 125:2011</formattedref>
1245
+ </bibitem>
1246
+ </relation>
1247
+ <place>Geneva</place>
1248
+ </bibitem>
1249
+ </relation>
1250
+ <place>Geneva</place>
1251
+ </bibitem>
1252
+ </references>
1253
+ <references id='_' normative='false' obligation='informative'>
1254
+ <title>Bibliography</title>
1255
+ <bibitem id='iso125' hidden='true'>
1256
+ <formattedref format='application/x-isodoc+xml'>
1257
+ <em>Standard</em>
1258
+ </formattedref>
1259
+ <docidentifier type='ISO'>ISO 125</docidentifier>
1260
+ <docnumber>125</docnumber>
953
1261
  </bibitem>
954
- <bibitem id='iso124' type='standard'>
1262
+ <bibitem id='iso126' hidden='true'>
1263
+ <formattedref format='application/x-isodoc+xml'>
1264
+ <em>Standard</em>
1265
+ </formattedref>
1266
+ <docidentifier>XYZ</docidentifier>
1267
+ </bibitem>
1268
+ <bibitem id='iso127' type='standard'>
955
1269
  <fetched/>
956
1270
  <title type='title-intro' format='text/plain' language='en' script='Latn'>Latex, rubber</title>
957
1271
  <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of total solids content</title>
958
- <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber — Determination of total solids content</title>
1272
+ <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber&#8201;&#8212;&#8201;Determination of total solids content</title>
959
1273
  <uri type='src'>https://www.iso.org/standard/61884.html</uri>
960
1274
  <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
961
1275
  <uri type='rss'>https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
962
- <docidentifier type='ISO'>ISO 124:2014</docidentifier>
1276
+ <docidentifier type='ISO'>ISO 124</docidentifier>
963
1277
  <docidentifier type='URN'>urn:iso:std:iso:124:stage-90.93:ed-7:en</docidentifier>
964
1278
  <docnumber>124</docnumber>
965
- <date type='published'>
966
- <on>2014-03</on>
967
- </date>
968
1279
  <contributor>
969
1280
  <role type='publisher'/>
970
1281
  <organization>
@@ -976,7 +1287,6 @@ RSpec.describe Asciidoctor::Standoc do
976
1287
  <edition>7</edition>
977
1288
  <language>en</language>
978
1289
  <script>Latn</script>
979
- <abstract format='text/plain' language='en' script='Latn'>ISO 124:2014 specifies methods for the determination of the total solids content of natural rubber field and concentrated latices and synthetic rubber latex. These methods are not necessarily suitable for latex from natural sources other than the Hevea brasiliensis, for vulcanized latex, for compounded latex, or for artificial dispersions of rubber.</abstract>
980
1290
  <status>
981
1291
  <stage>90</stage>
982
1292
  <substage>93</substage>
@@ -994,17 +1304,82 @@ RSpec.describe Asciidoctor::Standoc do
994
1304
  <formattedref format='text/plain'>ISO 124:2011</formattedref>
995
1305
  </bibitem>
996
1306
  </relation>
997
- <place>Geneva</place>
1307
+ <relation type='instance'>
1308
+ <bibitem type='standard'>
1309
+ <fetched/>
1310
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Latex, rubber</title>
1311
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Determination of total solids content</title>
1312
+ <title type='main' format='text/plain' language='en' script='Latn'>Latex, rubber&#8201;&#8212;&#8201;Determination of total solids content</title>
1313
+ <uri type='src'>https://www.iso.org/standard/61884.html</uri>
1314
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
1315
+ <uri type='rss'>https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
1316
+ <docidentifier type='ISO'>ISO 124:2014</docidentifier>
1317
+ <docidentifier type='URN'>urn:iso:std:iso:124:stage-90.93:ed-7:en</docidentifier>
1318
+ <docnumber>124</docnumber>
1319
+ <date type='published'>
1320
+ <on>2014-03</on>
1321
+ </date>
1322
+ <contributor>
1323
+ <role type='publisher'/>
1324
+ <organization>
1325
+ <name>International Organization for Standardization</name>
1326
+ <abbreviation>ISO</abbreviation>
1327
+ <uri>www.iso.org</uri>
1328
+ </organization>
1329
+ </contributor>
1330
+ <edition>7</edition>
1331
+ <language>en</language>
1332
+ <script>Latn</script>
1333
+ <abstract format='text/plain' language='en' script='Latn'>
1334
+ ISO 124:2014 specifies methods for the determination of the total
1335
+ solids content of natural rubber field and concentrated latices
1336
+ and synthetic rubber latex. These methods are not necessarily
1337
+ suitable for latex from natural sources other than the Hevea
1338
+ brasiliensis, for vulcanized latex, for compounded latex, or for
1339
+ artificial dispersions of rubber.
1340
+ </abstract>
1341
+ <status>
1342
+ <stage>90</stage>
1343
+ <substage>93</substage>
1344
+ </status>
1345
+ <copyright>
1346
+ <from>2014</from>
1347
+ <owner>
1348
+ <organization>
1349
+ <name>ISO</name>
1350
+ </organization>
1351
+ </owner>
1352
+ </copyright>
1353
+ <relation type='obsoletes'>
1354
+ <bibitem type='standard'>
1355
+ <formattedref format='text/plain'>ISO 124:2011</formattedref>
1356
+ </bibitem>
1357
+ </relation>
1358
+ <place>Geneva</place>
1359
+ </bibitem>
1360
+ </relation>
1361
+ <place>Geneva</place>
998
1362
  </bibitem>
999
- </references></bibliography></standard-document>
1363
+ <bibitem id='iso128'>
1364
+ <formattedref format='application/x-isodoc+xml'>
1365
+ <em>Standard</em>
1366
+ </formattedref>
1367
+ <docidentifier>ABC</docidentifier>
1368
+ </bibitem>
1369
+ </references>
1370
+ </bibliography>
1371
+ </standard-document>
1000
1372
  OUTPUT
1373
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1374
+ .to be_equivalent_to xmlpp(output)
1001
1375
  end
1002
1376
  end
1003
1377
 
1378
+
1004
1379
  it "processes draft ISO reference" do
1005
1380
  # stub_fetch_ref no_year: true, note: "The standard is in press"
1006
1381
 
1007
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1382
+ input = <<~INPUT
1008
1383
  #{ASCIIDOC_BLANK_HDR}
1009
1384
  [bibliography]
1010
1385
  == Normative References
@@ -1014,6 +1389,7 @@ RSpec.describe Asciidoctor::Standoc do
1014
1389
  * [[[iso125,ISO 125:&ndash;]]], footnote:[The standard is in press] _Standard_
1015
1390
  * [[[iso126,(1)ISO 123:--]]] _Standard_
1016
1391
  INPUT
1392
+ output = <<~OUTPUT
1017
1393
  #{BLANK_HDR}
1018
1394
  <sections>
1019
1395
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -1082,12 +1458,12 @@ RSpec.describe Asciidoctor::Standoc do
1082
1458
  </bibliography>
1083
1459
  </standard-document>
1084
1460
  OUTPUT
1461
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1462
+ .to be_equivalent_to xmlpp(output)
1085
1463
  end
1086
1464
 
1087
1465
  it "processes all-parts ISO reference" do
1088
- # stub_fetch_ref(all_parts: true)
1089
-
1090
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1466
+ input = <<~INPUT
1091
1467
  #{ASCIIDOC_BLANK_HDR}
1092
1468
  [bibliography]
1093
1469
  == Normative References
@@ -1095,6 +1471,7 @@ RSpec.describe Asciidoctor::Standoc do
1095
1471
  * [[[iso123,ISO 123:1066 (all parts)]]] _Standard_
1096
1472
  * [[[iso124,(1)ISO 123:1066 (all parts)]]] _Standard_
1097
1473
  INPUT
1474
+ output = <<~OUTPUT
1098
1475
  #{BLANK_HDR}
1099
1476
  <sections>
1100
1477
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -1139,12 +1516,35 @@ RSpec.describe Asciidoctor::Standoc do
1139
1516
  </bibliography>
1140
1517
  </standard-document>
1141
1518
  OUTPUT
1519
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1520
+ .to be_equivalent_to xmlpp(output)
1521
+ end
1522
+
1523
+ it "processes BSI reference with year" do
1524
+ VCR.use_cassette("bsi16341",
1525
+ match_requests_on: %i[method uri body]) do
1526
+ input = <<~INPUT
1527
+ #{ISOBIB_BLANK_HDR}
1528
+ [bibliography]
1529
+ == Normative References
1530
+
1531
+ * [[[iso124,BSI BS EN ISO 19011:2018]]] _Standard_
1532
+ * [[[iso123,BSI BS EN 16341]]] _Standard_
1533
+ * [[[ref_2,BSI BS EN ISO 14044:2006+A1:2020]]], _Environmental management – Life cycle assessment – Requirements and guidelines_
1534
+ INPUT
1535
+ output = Nokogiri::XML(Asciidoctor.convert(input, *OPTIONS))
1536
+ .xpath("//xmlns:docidentifier[@type = 'BSI']").map(&:text)
1537
+ expect(output).to include("BS EN ISO 14044:2006+A2:2020")
1538
+ expect(output).to include("BS EN 16341:2012")
1539
+ expect(output).to include("BS EN 16341")
1540
+ expect(output).not_to include("BS EN ISO 19011")
1541
+ expect(output).to include("BS EN ISO 19011:2018")
1542
+ end
1142
1543
  end
1143
1544
 
1144
1545
  it "processes RFC reference in Normative References" do
1145
- # mock_rfcbib_get_rfc8341
1146
1546
  VCR.use_cassette "rfcbib_get_rfc8341" do
1147
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1547
+ input = <<~INPUT
1148
1548
  #{ISOBIB_BLANK_HDR}
1149
1549
  [bibliography]
1150
1550
  == Normative References
@@ -1156,6 +1556,7 @@ RSpec.describe Asciidoctor::Standoc do
1156
1556
 
1157
1557
  <<iso123>>
1158
1558
  INPUT
1559
+ output = <<~OUTPUT
1159
1560
  #{BLANK_HDR}
1160
1561
  <sections>
1161
1562
  <clause id="_" inline-header="false" obligation="normative">
@@ -1175,7 +1576,7 @@ RSpec.describe Asciidoctor::Standoc do
1175
1576
  </uri>
1176
1577
  <uri type='src'>https://www.rfc-editor.org/info/rfc8341</uri>
1177
1578
  <docidentifier type='IETF'>RFC 8341</docidentifier>
1178
- <docidentifier type='rfc-anchor'>RFC8341</docidentifier>
1579
+ <docidentifier type='IETF' scope='anchor'>RFC8341</docidentifier>
1179
1580
  <docidentifier type='DOI'>10.17487/RFC8341</docidentifier>
1180
1581
  <docnumber>RFC8341</docnumber>
1181
1582
  <date type='published'>
@@ -1237,7 +1638,7 @@ RSpec.describe Asciidoctor::Standoc do
1237
1638
  <uri type='src'>https://www.rfc-editor.org/info/rfc8341</uri>
1238
1639
  <docidentifier type='IETF'>RFC 8341</docidentifier>
1239
1640
  <docidentifier type='metanorma'>[1]</docidentifier>
1240
- <docidentifier type='rfc-anchor'>RFC8341</docidentifier>
1641
+ <docidentifier type='IETF' scope='anchor'>RFC8341</docidentifier>
1241
1642
  <docidentifier type='DOI'>10.17487/RFC8341</docidentifier>
1242
1643
  <docnumber>RFC8341</docnumber>
1243
1644
  <date type='published'>
@@ -1294,18 +1695,21 @@ RSpec.describe Asciidoctor::Standoc do
1294
1695
  </bibliography>
1295
1696
  </standard-document>
1296
1697
  OUTPUT
1698
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1699
+ .to be_equivalent_to xmlpp(output)
1297
1700
  end
1298
1701
  end
1299
1702
 
1300
1703
  it "processes non-ISO reference in Normative References" do
1301
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1704
+ input = <<~INPUT
1302
1705
  #{ASCIIDOC_BLANK_HDR}
1303
1706
  [bibliography]
1304
1707
  == Normative References
1305
1708
 
1306
- * [[[iso123,XYZ 123:1066 (all parts)]]] _Standard_
1307
- * [[[iso124,(1)XYZ 123:1066 (all parts)]]] _Standard_
1709
+ * [[[iso123,XYZ 123:1966 (all parts)]]] _Standard_
1710
+ * [[[iso124,(1)XYZ 123:1966]]] _Standard_
1308
1711
  INPUT
1712
+ output = <<~OUTPUT
1309
1713
  #{BLANK_HDR}
1310
1714
  <sections>
1311
1715
  </sections><bibliography><references id="_" obligation="informative" normative="true">
@@ -1315,25 +1719,31 @@ RSpec.describe Asciidoctor::Standoc do
1315
1719
  <formattedref format="application/x-isodoc+xml">
1316
1720
  <em>Standard</em>
1317
1721
  </formattedref>
1318
- <docidentifier>XYZ 123:1066 (all parts)</docidentifier>
1319
- <docnumber>123:1066 (all parts)</docnumber>
1722
+ <docidentifier>XYZ 123:1966 (all parts)</docidentifier>
1723
+ <docnumber>123:1966 (all parts)</docnumber>
1724
+ <date type='published'><on>1966</on></date>
1320
1725
  </bibitem>
1321
1726
  <bibitem id='iso124'>
1322
1727
  <formattedref format='application/x-isodoc+xml'>
1323
1728
  <em>Standard</em>
1324
1729
  </formattedref>
1325
1730
  <docidentifier type='metanorma'>[1]</docidentifier>
1326
- <docidentifier>XYZ 123:1066 (all parts)</docidentifier>
1327
- <docnumber>123:1066 (all parts)</docnumber>
1731
+ <docidentifier>XYZ 123</docidentifier>
1732
+ <docnumber>123</docnumber>
1733
+ <date type='published'>
1734
+ <on>1966</on>
1735
+ </date>
1328
1736
  </bibitem>
1329
1737
  </references>
1330
1738
  </bibliography>
1331
1739
  </standard-document>
1332
1740
  OUTPUT
1741
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1742
+ .to be_equivalent_to xmlpp(output)
1333
1743
  end
1334
1744
 
1335
1745
  it "processes non-ISO reference in Bibliography" do
1336
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1746
+ input = <<~INPUT
1337
1747
  #{ASCIIDOC_BLANK_HDR}
1338
1748
  [bibliography]
1339
1749
  == Bibliography
@@ -1344,6 +1754,7 @@ RSpec.describe Asciidoctor::Standoc do
1344
1754
  * [[[iso126,(A1)]]] _Standard_
1345
1755
  * [[[iso127,(4)XYZ 123:1066 (all parts)]]] _Standard_
1346
1756
  INPUT
1757
+ output = <<~OUTPUT
1347
1758
  #{BLANK_HDR}
1348
1759
  <sections>
1349
1760
  </sections>
@@ -1381,13 +1792,15 @@ RSpec.describe Asciidoctor::Standoc do
1381
1792
  </bibliography>
1382
1793
  </standard-document>
1383
1794
  OUTPUT
1795
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1796
+ .to be_equivalent_to xmlpp(output)
1384
1797
  end
1385
1798
 
1386
1799
  it "process ISO reference without an Internet connection" do
1387
1800
  expect(RelatonIso::IsoBibliography).to receive(:search).with("ISO 123") do
1388
1801
  raise RelatonBib::RequestError.new "getaddrinfo"
1389
1802
  end.at_least :once
1390
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1803
+ input = <<~INPUT
1391
1804
  #{ISOBIB_BLANK_HDR}
1392
1805
  [bibliography]
1393
1806
  == Normative References
@@ -1395,6 +1808,7 @@ RSpec.describe Asciidoctor::Standoc do
1395
1808
  * [[[iso123,ISO 123]]] _Standard_
1396
1809
  * [[[iso124,(1)ISO 123]]] _Standard_
1397
1810
  INPUT
1811
+ output = <<~OUTPUT
1398
1812
  <?xml version="1.0" encoding="UTF-8"?>
1399
1813
  <standard-document xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="#{Metanorma::Standoc::VERSION}">
1400
1814
  <bibdata type="standard">
@@ -1439,10 +1853,12 @@ RSpec.describe Asciidoctor::Standoc do
1439
1853
  </references></bibliography>
1440
1854
  </standard-document>
1441
1855
  OUTPUT
1856
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1857
+ .to be_equivalent_to xmlpp(output)
1442
1858
  end
1443
1859
 
1444
1860
  it "processes repository reference" do
1445
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1861
+ input = <<~INPUT
1446
1862
  #{ISOBIB_BLANK_HDR}
1447
1863
  == Scope
1448
1864
 
@@ -1457,6 +1873,7 @@ RSpec.describe Asciidoctor::Standoc do
1457
1873
  * [[[iso123,repo:(ab/ISO 123)]]] _Standard_
1458
1874
  * [[[iso124,repo:(ab/ISO 124,id)]]] _Standard_
1459
1875
  INPUT
1876
+ output = <<~OUTPUT
1460
1877
  #{BLANK_HDR}
1461
1878
  <sections>
1462
1879
  <clause id='_' type='scope' inline-header='false' obligation='normative'>
@@ -1510,10 +1927,12 @@ RSpec.describe Asciidoctor::Standoc do
1510
1927
  </bibliography>
1511
1928
  </standard-document>
1512
1929
  OUTPUT
1930
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
1931
+ .to be_equivalent_to xmlpp(output)
1513
1932
  end
1514
1933
 
1515
1934
  it "processes hyperlink reference, ingest RXL or XML if available" do
1516
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1935
+ input = <<~INPUT
1517
1936
  #{ISOBIB_BLANK_HDR}
1518
1937
  == Scope
1519
1938
 
@@ -1531,6 +1950,7 @@ RSpec.describe Asciidoctor::Standoc do
1531
1950
  * [[[iso123,path:(spec/assets/iso123,ISO 123)]]] _Standard_
1532
1951
  * [[[iso124,path:(a/b.adoc,ISO 124)]]] _Standard_
1533
1952
  INPUT
1953
+ output = <<~OUTPUT
1534
1954
  #{BLANK_HDR}
1535
1955
  <sections>
1536
1956
  <clause id='_' type="scope" inline-header='false' obligation='normative'>
@@ -1700,141 +2120,290 @@ RSpec.describe Asciidoctor::Standoc do
1700
2120
  </bibliography>
1701
2121
  </standard-document>
1702
2122
  OUTPUT
2123
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
2124
+ .to be_equivalent_to xmlpp(output)
1703
2125
  end
1704
2126
 
1705
2127
  it "overrides normative status of bibliographies" do
1706
- mock_isobib_get_123_no_docid(1)
1707
- mock_isobib_get_123_no_docid_lbl(1)
1708
- expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", *OPTIONS)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
1709
- #{ISOBIB_BLANK_HDR}
1710
- [bibliography,normative=false]
1711
- == Normative References
2128
+ # mock_isobib_get_123_no_docid(1)
2129
+ # mock_isobib_get_123_no_docid_lbl(1)
2130
+ VCR.use_cassette "isobib_get_123_1" do
2131
+ input = <<~INPUT
2132
+ #{ISOBIB_BLANK_HDR}
1712
2133
 
1713
- * [[[iso123,ISO 123]]] _Standard_
2134
+ [bibliography,normative=false]
2135
+ == Normative References
1714
2136
 
1715
- [bibliography,normative=true]
1716
- == Bibliography
2137
+ * [[[iso123,ISO 123]]] _Standard_
1717
2138
 
1718
- * [[[iso124,(1)ISO 123]]] _Standard_
1719
- INPUT
1720
- #{BLANK_HDR}
1721
- <sections> </sections>
1722
- <bibliography>
1723
- <references id='_' normative='false' obligation='informative'>
1724
- <title>Bibliography</title>
1725
- <bibitem type='standard' id='iso123'>
1726
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1727
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1728
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1729
- <date type='published'>
1730
- <on>2001</on>
1731
- </date>
1732
- <contributor>
1733
- <role type='publisher'/>
1734
- <organization>
1735
- <name>International Organization for Standardization</name>
1736
- <abbreviation>ISO</abbreviation>
1737
- <uri>www.iso.org</uri>
1738
- </organization>
1739
- </contributor>
1740
- <edition>3</edition>
1741
- <language>en</language>
1742
- <language>fr</language>
1743
- <script>Latn</script>
1744
- <status>
1745
- <stage>Published</stage>
1746
- </status>
1747
- <copyright>
1748
- <from>2001</from>
1749
- <owner>
1750
- <organization>
1751
- <name>ISO</name>
1752
- <abbreviation/>
1753
- </organization>
1754
- </owner>
1755
- </copyright>
1756
- <relation type='obsoletes'>
1757
- <bibitem type='standard'>
1758
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
1759
- </bibitem>
1760
- </relation>
1761
- <relation type='updates'>
1762
- <bibitem type='standard'>
1763
- <formattedref format='text/plain'>ISO 123:2001</formattedref>
1764
- </bibitem>
1765
- </relation>
1766
- <docidentifier>ISO 123</docidentifier>
1767
- <title>
1768
- <em>Standard</em>
1769
- </title>
1770
- </bibitem>
1771
- </references>
1772
- <references id='_' normative='true' obligation='informative'>
1773
- <title>Normative references</title>
1774
- <p id='_'>
1775
- The following documents are referred to in the text in such a way that
1776
- some or all of their content constitutes requirements of this document.
1777
- For dated references, only the edition cited applies. For undated
1778
- references, the latest edition of the referenced document (including any
1779
- amendments) applies.
1780
- </p>
1781
- <bibitem type='standard' id='iso124'>
1782
- <uri type='src'>https://www.iso.org/standard/23281.html</uri>
1783
- <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
1784
- <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
1785
- <date type='published'>
1786
- <on>2001</on>
1787
- </date>
1788
- <contributor>
1789
- <role type='publisher'/>
1790
- <organization>
1791
- <name>International Organization for Standardization</name>
1792
- <abbreviation>ISO</abbreviation>
1793
- <uri>www.iso.org</uri>
1794
- </organization>
1795
- </contributor>
1796
- <edition>3</edition>
1797
- <language>en</language>
1798
- <language>fr</language>
1799
- <script>Latn</script>
1800
- <status>
1801
- <stage>Published</stage>
1802
- </status>
1803
- <copyright>
1804
- <from>2001</from>
1805
- <owner>
1806
- <organization>
1807
- <name>ISO</name>
1808
- <abbreviation/>
1809
- </organization>
1810
- </owner>
1811
- </copyright>
1812
- <relation type='obsoletes'>
1813
- <bibitem type='standard'>
1814
- <formattedref format='text/plain'>ISO 123:1985</formattedref>
1815
- </bibitem>
1816
- </relation>
1817
- <relation type='updates'>
1818
- <bibitem type='standard'>
1819
- <formattedref format='text/plain'>ISO 123:2001</formattedref>
1820
- </bibitem>
1821
- </relation>
1822
- <docidentifier>ISO 123</docidentifier>
1823
- <docidentifier type='metanorma'>[1]</docidentifier>
1824
- <title>
1825
- <em>Standard</em>
1826
- </title>
1827
- </bibitem>
1828
- </references>
1829
- </bibliography>
1830
- </standard-document>
1831
- OUTPUT
2139
+ [bibliography,normative=true]
2140
+ == Bibliography
2141
+
2142
+ * [[[iso124,(1)ISO 123]]] _Standard_
2143
+ INPUT
2144
+ output = <<~OUTPUT
2145
+ #{BLANK_HDR}
2146
+ <sections> </sections>
2147
+ <bibliography>
2148
+ <references id='_' normative='false' obligation='informative'>
2149
+ <title>Bibliography</title>
2150
+ <bibitem id='iso123' type='standard'>
2151
+ <fetched/>
2152
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
2153
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
2154
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
2155
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
2156
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
2157
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
2158
+ <docidentifier type='ISO'>ISO 123</docidentifier>
2159
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
2160
+ <docnumber>123</docnumber>
2161
+ <contributor>
2162
+ <role type='publisher'/>
2163
+ <organization>
2164
+ <name>International Organization for Standardization</name>
2165
+ <abbreviation>ISO</abbreviation>
2166
+ <uri>www.iso.org</uri>
2167
+ </organization>
2168
+ </contributor>
2169
+ <edition>3</edition>
2170
+ <language>en</language>
2171
+ <script>Latn</script>
2172
+ <status>
2173
+ <stage>90</stage>
2174
+ <substage>93</substage>
2175
+ </status>
2176
+ <copyright>
2177
+ <from>2001</from>
2178
+ <owner>
2179
+ <organization>
2180
+ <name>ISO</name>
2181
+ </organization>
2182
+ </owner>
2183
+ </copyright>
2184
+ <relation type='obsoletes'>
2185
+ <bibitem type='standard'>
2186
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
2187
+ </bibitem>
2188
+ </relation>
2189
+ <relation type='instance'>
2190
+ <bibitem type='standard'>
2191
+ <fetched/>
2192
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
2193
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
2194
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
2195
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
2196
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
2197
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
2198
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
2199
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
2200
+ <docnumber>123</docnumber>
2201
+ <date type='published'>
2202
+ <on>2001-05</on>
2203
+ </date>
2204
+ <contributor>
2205
+ <role type='publisher'/>
2206
+ <organization>
2207
+ <name>International Organization for Standardization</name>
2208
+ <abbreviation>ISO</abbreviation>
2209
+ <uri>www.iso.org</uri>
2210
+ </organization>
2211
+ </contributor>
2212
+ <edition>3</edition>
2213
+ <language>en</language>
2214
+ <script>Latn</script>
2215
+ <abstract format='text/plain' language='en' script='Latn'>
2216
+ This International Standard specifies procedures for sampling
2217
+ natural rubber latex concentrate and for sampling synthetic rubber
2218
+ latices and artificial latices. It is also suitable for sampling
2219
+ rubber latex contained in drums, tank cars or tanks. The
2220
+ procedures may also be used for sampling plastics dispersions.
2221
+ </abstract>
2222
+ <status>
2223
+ <stage>90</stage>
2224
+ <substage>93</substage>
2225
+ </status>
2226
+ <copyright>
2227
+ <from>2001</from>
2228
+ <owner>
2229
+ <organization>
2230
+ <name>ISO</name>
2231
+ </organization>
2232
+ </owner>
2233
+ </copyright>
2234
+ <relation type='obsoletes'>
2235
+ <bibitem type='standard'>
2236
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
2237
+ </bibitem>
2238
+ </relation>
2239
+ <place>Geneva</place>
2240
+ </bibitem>
2241
+ </relation>
2242
+ <place>Geneva</place>
2243
+ </bibitem>
2244
+ </references>
2245
+ <references id='_' normative='true' obligation='informative'>
2246
+ <title>Normative references</title>
2247
+ <p id='_'>
2248
+ The following documents are referred to in the text in such a way that
2249
+ some or all of their content constitutes requirements of this document.
2250
+ For dated references, only the edition cited applies. For undated
2251
+ references, the latest edition of the referenced document (including any
2252
+ amendments) applies.
2253
+ </p>
2254
+ <bibitem id='iso124' type='standard'>
2255
+ <fetched/>
2256
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
2257
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
2258
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
2259
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
2260
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
2261
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
2262
+ <docidentifier type='ISO'>ISO 123</docidentifier>
2263
+ <docidentifier type='metanorma'>[1]</docidentifier>
2264
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
2265
+ <docnumber>123</docnumber>
2266
+ <contributor>
2267
+ <role type='publisher'/>
2268
+ <organization>
2269
+ <name>International Organization for Standardization</name>
2270
+ <abbreviation>ISO</abbreviation>
2271
+ <uri>www.iso.org</uri>
2272
+ </organization>
2273
+ </contributor>
2274
+ <edition>3</edition>
2275
+ <language>en</language>
2276
+ <script>Latn</script>
2277
+ <status>
2278
+ <stage>90</stage>
2279
+ <substage>93</substage>
2280
+ </status>
2281
+ <copyright>
2282
+ <from>2001</from>
2283
+ <owner>
2284
+ <organization>
2285
+ <name>ISO</name>
2286
+ </organization>
2287
+ </owner>
2288
+ </copyright>
2289
+ <relation type='obsoletes'>
2290
+ <bibitem type='standard'>
2291
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
2292
+ </bibitem>
2293
+ </relation>
2294
+ <relation type='instance'>
2295
+ <bibitem type='standard'>
2296
+ <fetched/>
2297
+ <title type='title-intro' format='text/plain' language='en' script='Latn'>Rubber latex</title>
2298
+ <title type='title-main' format='text/plain' language='en' script='Latn'>Sampling</title>
2299
+ <title type='main' format='text/plain' language='en' script='Latn'>Rubber latex&#8201;&#8212;&#8201;Sampling</title>
2300
+ <uri type='src'>https://www.iso.org/standard/23281.html</uri>
2301
+ <uri type='obp'>https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
2302
+ <uri type='rss'>https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
2303
+ <docidentifier type='ISO'>ISO 123:2001</docidentifier>
2304
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
2305
+ <docnumber>123</docnumber>
2306
+ <date type='published'>
2307
+ <on>2001-05</on>
2308
+ </date>
2309
+ <contributor>
2310
+ <role type='publisher'/>
2311
+ <organization>
2312
+ <name>International Organization for Standardization</name>
2313
+ <abbreviation>ISO</abbreviation>
2314
+ <uri>www.iso.org</uri>
2315
+ </organization>
2316
+ </contributor>
2317
+ <edition>3</edition>
2318
+ <language>en</language>
2319
+ <script>Latn</script>
2320
+ <abstract format='text/plain' language='en' script='Latn'>
2321
+ This International Standard specifies procedures for sampling
2322
+ natural rubber latex concentrate and for sampling synthetic rubber
2323
+ latices and artificial latices. It is also suitable for sampling
2324
+ rubber latex contained in drums, tank cars or tanks. The
2325
+ procedures may also be used for sampling plastics dispersions.
2326
+ </abstract>
2327
+ <status>
2328
+ <stage>90</stage>
2329
+ <substage>93</substage>
2330
+ </status>
2331
+ <copyright>
2332
+ <from>2001</from>
2333
+ <owner>
2334
+ <organization>
2335
+ <name>ISO</name>
2336
+ </organization>
2337
+ </owner>
2338
+ </copyright>
2339
+ <relation type='obsoletes'>
2340
+ <bibitem type='standard'>
2341
+ <formattedref format='text/plain'>ISO 123:1985</formattedref>
2342
+ </bibitem>
2343
+ </relation>
2344
+ <place>Geneva</place>
2345
+ </bibitem>
2346
+ </relation>
2347
+ <place>Geneva</place>
2348
+ </bibitem>
2349
+ </references>
2350
+ </bibliography>
2351
+ </standard-document>
2352
+ OUTPUT
2353
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
2354
+ .to be_equivalent_to xmlpp(output)
2355
+ end
2356
+ end
2357
+
2358
+ it "processes formatting within bibliographic references" do
2359
+ VCR.use_cassette "isobib_get_123_1" do
2360
+ input = <<~INPUT
2361
+ #{ISOBIB_BLANK_HDR}
2362
+ [bibliography]
2363
+ == Normative References
2364
+
2365
+ * [[[reference,ISO 123]]] _Standard_
2366
+
2367
+ == Section
2368
+
2369
+ <<reference,_reference_>>
2370
+ <<reference,_**reference**_>>
2371
+ <<reference,_A_ stem:[x^2]>>
2372
+ <<reference,_A_ footnote:[_B_]>>
2373
+ <<reference,clause=3.4.2, ISO 9000:2005 footnote:[Superseded by ISO 9000:2015.]>>
2374
+
2375
+ INPUT
2376
+ output = <<~OUTPUT
2377
+ #{BLANK_HDR}
2378
+ <sections>
2379
+ <clause id="_" inline-header="false" obligation="normative">
2380
+ <title>Section</title>
2381
+ <p id="_"><eref type="inline" bibitemid="reference" citeas="ISO 123"><em>reference</em></eref>
2382
+ <eref type="inline" bibitemid="reference" citeas="ISO 123"><em><strong>reference</strong></em></eref>
2383
+ <eref type="inline" bibitemid="reference" citeas="ISO 123"><em>A</em> <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mrow><mi>x</mi></mrow><mrow><mn>2</mn></mrow></msup></math></stem></eref>
2384
+ <eref type="inline" bibitemid="reference" citeas="ISO 123"><em>A</em><fn reference="1"><p id="_"><em>B</em></p></fn></eref>
2385
+ <eref type="inline" bibitemid="reference" citeas="ISO 123"><localityStack><locality type="clause"><referenceFrom>3.4.2</referenceFrom></locality></localityStack>ISO 9000:2005<fn reference="2"><p id="_">Superseded by ISO 9000:2015.</p></fn></eref></p>
2386
+ </clause></sections>
2387
+ </standard-document>
2388
+ OUTPUT
2389
+ a = Nokogiri::XML(Asciidoctor.convert(input, *OPTIONS))
2390
+ a.at("//xmlns:bibliography").remove
2391
+ expect((strip_guid(a.to_xml))).to be_equivalent_to(output)
2392
+ end
1832
2393
  end
1833
2394
 
1834
2395
  private
1835
2396
 
1836
2397
  def mock_isobib_get_123
1837
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 123", nil, {}) do
2398
+ expect(RelatonIso::IsoBibliography).to receive(:get)
2399
+ .with("ISO 123", nil, { code: "ISO 123",
2400
+ lang: "en",
2401
+ match: anything,
2402
+ process: 1,
2403
+ ord: anything,
2404
+ title: "<em>Standard</em>",
2405
+ usrlbl: nil,
2406
+ year: nil }) do
1838
2407
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1839
2408
  <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>
1840
2409
  OUTPUT
@@ -1842,7 +2411,15 @@ RSpec.describe Asciidoctor::Standoc do
1842
2411
  end
1843
2412
 
1844
2413
  def mock_isobib_get_123_no_docid(n)
1845
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 123", nil, { lang: "en", title: "<em>Standard</em>", usrlbl: nil }) do
2414
+ expect(RelatonIso::IsoBibliography).to receive(:get)
2415
+ .with("ISO 123", nil, { code: "ISO 123",
2416
+ lang: "en",
2417
+ match: anything,
2418
+ process: 1,
2419
+ ord: anything,
2420
+ title: "<em>Standard</em>",
2421
+ usrlbl: nil,
2422
+ year: nil }) do
1846
2423
  RelatonBib::XMLParser.from_xml(<<~"OUTPUT")
1847
2424
  <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>
1848
2425
  OUTPUT
@@ -1850,7 +2427,15 @@ RSpec.describe Asciidoctor::Standoc do
1850
2427
  end
1851
2428
 
1852
2429
  def mock_isobib_get_123_no_docid_lbl(n)
1853
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 123", nil, { lang: "en", title: "<em>Standard</em>", usrlbl: "(1)" }) do
2430
+ expect(RelatonIso::IsoBibliography).to receive(:get)
2431
+ .with("ISO 123", nil, { code: "ISO 123",
2432
+ lang: "en",
2433
+ match: anything,
2434
+ process: 1,
2435
+ ord: anything,
2436
+ title: "<em>Standard</em>",
2437
+ usrlbl: "(1)",
2438
+ year: nil }) do
1854
2439
  RelatonBib::XMLParser.from_xml(<<~"OUTPUT")
1855
2440
  <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>
1856
2441
  OUTPUT
@@ -1858,7 +2443,9 @@ RSpec.describe Asciidoctor::Standoc do
1858
2443
  end
1859
2444
 
1860
2445
  def mock_isobib_get_124
1861
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 124", "2014", {}) do
2446
+ expect(RelatonIso::IsoBibliography).to receive(:get)
2447
+ .with("ISO 124",
2448
+ "2014", anything) do
1862
2449
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1863
2450
  <bibitem type="standard" id="iso124">
1864
2451
  <title format="text/plain" language="en" script="Latn">Latex, rubber -- Determination of total solids content</title>
@@ -1908,7 +2495,9 @@ RSpec.describe Asciidoctor::Standoc do
1908
2495
  end
1909
2496
 
1910
2497
  def mock_isobib_get_iec12382
1911
- expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO/IEC TR 12382", "1992", {}) do
2498
+ expect(RelatonIso::IsoBibliography).to receive(:get).with(
2499
+ "ISO/IEC TR 12382", "1992", anything
2500
+ ) do
1912
2501
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1913
2502
  <bibitem type="standard" id="iso123">
1914
2503
  <title format="text/plain" language="en" script="Latn">Permuted index of the vocabulary of information technology</title>
@@ -1970,7 +2559,8 @@ RSpec.describe Asciidoctor::Standoc do
1970
2559
  end
1971
2560
 
1972
2561
  def mock_rfcbib_get_rfc8341
1973
- expect(IETFBib::RfcBibliography).to receive(:get).with("RFC 8341", nil, {}) do
2562
+ expect(IETFBib::RfcBibliography).to receive(:get).with("RFC 8341", nil,
2563
+ anything) do
1974
2564
  IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
1975
2565
  <bibitem id="RFC8341">
1976
2566
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>