metanorma-standoc 2.1.1 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/lib/metanorma/standoc/base.rb +3 -1
  3. data/lib/metanorma/standoc/biblio.rng +134 -39
  4. data/lib/metanorma/standoc/blocks.rb +8 -6
  5. data/lib/metanorma/standoc/blocks_notes.rb +4 -1
  6. data/lib/metanorma/standoc/cleanup.rb +1 -0
  7. data/lib/metanorma/standoc/cleanup_footnotes.rb +32 -25
  8. data/lib/metanorma/standoc/cleanup_inline.rb +17 -0
  9. data/lib/metanorma/standoc/cleanup_ref.rb +16 -0
  10. data/lib/metanorma/standoc/cleanup_section.rb +6 -0
  11. data/lib/metanorma/standoc/cleanup_terms.rb +3 -1
  12. data/lib/metanorma/standoc/cleanup_text.rb +9 -4
  13. data/lib/metanorma/standoc/cleanup_xref.rb +2 -1
  14. data/lib/metanorma/standoc/converter.rb +4 -0
  15. data/lib/metanorma/standoc/isodoc.rng +32 -0
  16. data/lib/metanorma/standoc/lists.rb +8 -3
  17. data/lib/metanorma/standoc/macros.rb +28 -1
  18. data/lib/metanorma/standoc/macros_note.rb +27 -6
  19. data/lib/metanorma/standoc/ref.rb +3 -1
  20. data/lib/metanorma/standoc/ref_sect.rb +5 -2
  21. data/lib/metanorma/standoc/ref_utility.rb +20 -5
  22. data/lib/metanorma/standoc/section.rb +1 -1
  23. data/lib/metanorma/standoc/version.rb +1 -1
  24. data/metanorma-standoc.gemspec +2 -2
  25. data/spec/examples/datamodel/address_class_profile.presentation.xml +14 -0
  26. data/spec/metanorma/base_spec.rb +41 -5
  27. data/spec/metanorma/blocks_spec.rb +58 -1
  28. data/spec/metanorma/cleanup_sections_spec.rb +60 -9
  29. data/spec/metanorma/cleanup_spec.rb +6 -6
  30. data/spec/metanorma/cleanup_terms_spec.rb +1 -1
  31. data/spec/metanorma/inline_spec.rb +3 -3
  32. data/spec/metanorma/lists_spec.rb +10 -4
  33. data/spec/metanorma/macros_spec.rb +50 -15
  34. data/spec/metanorma/refs_dl_spec.rb +18 -7
  35. data/spec/metanorma/refs_spec.rb +390 -450
  36. data/spec/metanorma/table_spec.rb +24 -6
  37. data/spec/spec_helper.rb +2 -2
  38. data/spec/vcr_cassettes/bsi16341.yml +57 -71
  39. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +67 -67
  40. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec1.yml +14 -14
  41. data/spec/vcr_cassettes/hide_refs.yml +62 -62
  42. data/spec/vcr_cassettes/isobib_get_123.yml +14 -14
  43. data/spec/vcr_cassettes/isobib_get_123_1.yml +26 -26
  44. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +37 -37
  45. data/spec/vcr_cassettes/isobib_get_123_2001.yml +14 -14
  46. data/spec/vcr_cassettes/isobib_get_124.yml +12 -12
  47. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +228 -52
  48. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +47 -49
  49. data/spec/vcr_cassettes/std-link.yml +15 -15
  50. metadata +10 -10
  51. data/docs/quickstart.adoc +0 -375
@@ -3,110 +3,237 @@ require "relaton_iso"
3
3
  require "relaton_ietf"
4
4
 
5
5
  RSpec.describe Metanorma::Standoc do
6
- it "processes simple ISO reference" do
7
- input = <<~INPUT
8
- #{ASCIIDOC_BLANK_HDR}
9
- [bibliography]
10
- == Normative References
6
+ it "processes simple ISO reference" do
7
+ input = <<~INPUT
8
+ #{ASCIIDOC_BLANK_HDR}
9
+ [bibliography]
10
+ == Normative References
11
11
 
12
- * [[[iso123,ISO 123]]] _Standard_
13
- * [[[iso124,(1)ISO 123]]] _Standard_
14
- INPUT
15
- output = <<~OUTPUT
12
+ * [[[iso123,ISO 123]]] _Standard_
13
+ * [[[iso124,(1)ISO 123]]] _Standard_
14
+ INPUT
15
+ output = <<~OUTPUT
16
+ #{BLANK_HDR}
17
+ <sections>
18
+ </sections><bibliography><references id="_" obligation="informative" normative="true">
19
+ <title>Normative references</title>
20
+ #{NORM_REF_BOILERPLATE}
21
+ <bibitem id="iso123" type="standard">
22
+ <title format="text/plain">Standard</title>
23
+ <docidentifier>ISO 123</docidentifier>
24
+ <docnumber>123</docnumber>
25
+ <contributor>
26
+ <role type="publisher"/>
27
+ <organization>
28
+ <name>ISO</name>
29
+ </organization>
30
+ </contributor>
31
+ </bibitem>
32
+ <bibitem id='iso124' type='standard'>
33
+ <title format='text/plain'>Standard</title>
34
+ <docidentifier type='metanorma'>[1]</docidentifier>
35
+ <docidentifier>ISO 123</docidentifier>
36
+ <docnumber>123</docnumber>
37
+ <contributor>
38
+ <role type='publisher'/>
39
+ <organization>
40
+ <name>ISO</name>
41
+ </organization>
42
+ </contributor>
43
+ </bibitem>
44
+ </references>
45
+ </bibliography>
46
+ </standard-document>
47
+ OUTPUT
48
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
49
+ .to be_equivalent_to xmlpp(output)
50
+ end
51
+
52
+ it "processes simple ISO reference with date range" do
53
+ input = <<~INPUT
54
+ #{ASCIIDOC_BLANK_HDR}
55
+ [bibliography]
56
+ == Normative References
57
+
58
+ * [[[iso123,ISO 123:1066-1067]]] _Standard_
59
+ * [[[iso124,(1)ISO 123:1066-1067]]] _Standard_
60
+ INPUT
61
+ output = <<~OUTPUT
16
62
  #{BLANK_HDR}
17
63
  <sections>
18
64
  </sections><bibliography><references id="_" obligation="informative" normative="true">
19
65
  <title>Normative references</title>
20
66
  #{NORM_REF_BOILERPLATE}
21
67
  <bibitem id="iso123" type="standard">
22
- <title format="text/plain">Standard</title>
23
- <docidentifier>ISO 123</docidentifier>
68
+ <title format="text/plain">Standard</title>
69
+ <docidentifier>ISO 123:1066-1067</docidentifier>
24
70
  <docnumber>123</docnumber>
25
- <contributor>
26
- <role type="publisher"/>
27
- <organization>
28
- <name>ISO</name>
29
- </organization>
30
- </contributor>
71
+ <date type="published">
72
+ <from>1066</from>
73
+ <to>1067</to>
74
+ </date>
75
+ <contributor>
76
+ <role type="publisher"/>
77
+ <organization>
78
+ <name>ISO</name>
79
+ </organization>
80
+ </contributor>
31
81
  </bibitem>
32
- <bibitem id='iso124' type='standard'>
33
- <title format='text/plain'>Standard</title>
34
- <docidentifier type='metanorma'>[1]</docidentifier>
35
- <docidentifier>ISO 123</docidentifier>
82
+ <bibitem id="iso124" type="standard">
83
+ <title format="text/plain">Standard</title>
84
+ <docidentifier type='metanorma'>[1]</docidentifier>
85
+ <docidentifier>ISO 123:1066-1067</docidentifier>
36
86
  <docnumber>123</docnumber>
87
+ <date type="published">
88
+ <from>1066</from>
89
+ <to>1067</to>
90
+ </date>
37
91
  <contributor>
38
- <role type='publisher'/>
92
+ <role type="publisher"/>
39
93
  <organization>
40
94
  <name>ISO</name>
41
95
  </organization>
42
96
  </contributor>
43
- </bibitem>
97
+ </bibitem>
44
98
  </references>
45
99
  </bibliography>
46
100
  </standard-document>
47
- OUTPUT
48
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
49
- .to be_equivalent_to xmlpp(output)
50
- end
101
+ OUTPUT
102
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
103
+ .to be_equivalent_to xmlpp(output)
104
+ end
51
105
 
52
- it "processes simple ISO reference with date range" do
53
- input = <<~INPUT
54
- #{ASCIIDOC_BLANK_HDR}
55
- [bibliography]
56
- == Normative References
106
+ it "repairs simple fetched ISO reference" do
107
+ mock_isobib_get_123_no_docid(2)
108
+ mock_isobib_get_123_no_docid_lbl(2)
109
+ input = <<~"INPUT"
110
+ #{ISOBIB_BLANK_HDR}
57
111
 
58
- * [[[iso123,ISO 123:1066-1067]]] _Standard_
59
- * [[[iso124,(1)ISO 123:1066-1067]]] _Standard_
60
- INPUT
61
- output = <<~OUTPUT
62
- #{BLANK_HDR}
63
- <sections>
64
- </sections><bibliography><references id="_" obligation="informative" normative="true">
65
- <title>Normative references</title>
66
- #{NORM_REF_BOILERPLATE}
67
- <bibitem id="iso123" type="standard">
68
- <title format="text/plain">Standard</title>
69
- <docidentifier>ISO 123:1066-1067</docidentifier>
70
- <docnumber>123</docnumber>
71
- <date type="published">
72
- <from>1066</from>
73
- <to>1067</to>
74
- </date>
75
- <contributor>
76
- <role type="publisher"/>
77
- <organization>
78
- <name>ISO</name>
79
- </organization>
80
- </contributor>
81
- </bibitem>
82
- <bibitem id="iso124" type="standard">
83
- <title format="text/plain">Standard</title>
84
- <docidentifier type='metanorma'>[1]</docidentifier>
85
- <docidentifier>ISO 123:1066-1067</docidentifier>
86
- <docnumber>123</docnumber>
87
- <date type="published">
88
- <from>1066</from>
89
- <to>1067</to>
90
- </date>
91
- <contributor>
92
- <role type="publisher"/>
93
- <organization>
94
- <name>ISO</name>
95
- </organization>
96
- </contributor>
97
- </bibitem>
112
+ <<iso123>>
113
+ <<iso124>>
98
114
 
99
- </references>
100
- </bibliography>
115
+ [bibliography]
116
+ == Normative References
117
+
118
+ * [[[iso123,ISO 123]]] _Standard_
119
+ * [[[iso124,(1)ISO 123]]] _Standard_
120
+ INPUT
121
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
122
+ .to be_equivalent_to xmlpp(<<~"OUTPUT")
123
+ #{BLANK_HDR}
124
+ <preface>
125
+ <foreword id='_' obligation='informative'>
126
+ <title>Foreword</title>
127
+ <p id='_'>
128
+ <eref type='inline' bibitemid='iso123' citeas='ISO 123'/>
129
+ <eref type='inline' bibitemid='iso124' citeas='[1]'/>
130
+ </p>
131
+ </foreword>
132
+ </preface>
133
+ <sections>
134
+ </sections><bibliography><references id="_" obligation="informative" normative="true"><title>Normative references</title>
135
+ #{NORM_REF_BOILERPLATE}
136
+ <bibitem type="standard" id="iso123">
137
+ <uri type="src">https://www.iso.org/standard/23281.html</uri>
138
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
139
+ <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
140
+ <date type="published">
141
+ <on>2001</on>
142
+ </date>
143
+ <contributor>
144
+ <role type="publisher"/>
145
+ <organization>
146
+ <name>International Organization for Standardization</name>
147
+ <abbreviation>ISO</abbreviation>
148
+ <uri>www.iso.org</uri>
149
+ </organization>
150
+ </contributor>
151
+ <edition>3</edition>
152
+ <language>en</language>
153
+ <language>fr</language>
154
+ <script>Latn</script>
155
+ <status>
156
+ <stage>Published</stage>
157
+ </status>
158
+ <copyright>
159
+ <from>2001</from>
160
+ <owner>
161
+ <organization>
162
+ <name>ISO</name>
163
+ <abbreviation/>
164
+ </organization>
165
+ </owner>
166
+ </copyright>
167
+ <relation type="obsoletes">
168
+ <bibitem type="standard">
169
+ <formattedref format="text/plain">ISO 123:1985</formattedref>
170
+ </bibitem>
171
+ </relation>
172
+ <relation type="updates">
173
+ <bibitem type="standard">
174
+ <formattedref format="text/plain">ISO 123:2001</formattedref>
175
+ </bibitem>
176
+ </relation>
177
+ <docidentifier>ISO 123</docidentifier>
178
+ <title><em>Standard</em></title>
179
+ </bibitem>
180
+ <bibitem type="standard" id="iso124">
181
+ <uri type="src">https://www.iso.org/standard/23281.html</uri>
182
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
183
+ <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
184
+ <date type="published">
185
+ <on>2001</on>
186
+ </date>
187
+ <contributor>
188
+ <role type="publisher"/>
189
+ <organization>
190
+ <name>International Organization for Standardization</name>
191
+ <abbreviation>ISO</abbreviation>
192
+ <uri>www.iso.org</uri>
193
+ </organization>
194
+ </contributor>
195
+ <edition>3</edition>
196
+ <language>en</language>
197
+ <language>fr</language>
198
+ <script>Latn</script>
199
+ <status>
200
+ <stage>Published</stage>
201
+ </status>
202
+ <copyright>
203
+ <from>2001</from>
204
+ <owner>
205
+ <organization>
206
+ <name>ISO</name>
207
+ <abbreviation/>
208
+ </organization>
209
+ </owner>
210
+ </copyright>
211
+ <relation type="obsoletes">
212
+ <bibitem type="standard">
213
+ <formattedref format="text/plain">ISO 123:1985</formattedref>
214
+ </bibitem>
215
+ </relation>
216
+ <relation type="updates">
217
+ <bibitem type="standard">
218
+ <formattedref format="text/plain">ISO 123:2001</formattedref>
219
+ </bibitem>
220
+ </relation>
221
+ <docidentifier>ISO 123</docidentifier>
222
+ <docidentifier type='metanorma'>[1]</docidentifier>
223
+ <title><em>Standard</em></title>
224
+ </bibitem>
225
+ </references></bibliography>
101
226
  </standard-document>
102
- OUTPUT
103
- expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
104
- .to be_equivalent_to xmlpp(output)
105
- end
227
+ OUTPUT
228
+ expect do
229
+ Asciidoctor.convert(input, *OPTIONS)
230
+ end.to output(/ERROR: No document identifier retrieved for ISO 123/)
231
+ .to_stderr
232
+ end
106
233
 
107
- it "repairs simple fetched ISO reference" do
108
- mock_isobib_get_123_no_docid(2)
109
- mock_isobib_get_123_no_docid_lbl(2)
234
+ it "customises docidentifier by language" do
235
+ mock_rfcbib_get_rfc8342(3)
236
+ mock_rfcbib_get_rfc8343(3)
110
237
  input = <<~"INPUT"
111
238
  #{ISOBIB_BLANK_HDR}
112
239
 
@@ -116,120 +243,21 @@ RSpec.describe Metanorma::Standoc do
116
243
  [bibliography]
117
244
  == Normative References
118
245
 
119
- * [[[iso123,ISO 123]]] _Standard_
120
- * [[[iso124,(1)ISO 123]]] _Standard_
246
+ * [[[iso123,ISO 8342]]] _Standard_
247
+ * [[[iso124,ISO 8343]]] _Standard_
121
248
  INPUT
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"/>
146
- <organization>
147
- <name>International Organization for Standardization</name>
148
- <abbreviation>ISO</abbreviation>
149
- <uri>www.iso.org</uri>
150
- </organization>
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"/>
190
- <organization>
191
- <name>International Organization for Standardization</name>
192
- <abbreviation>ISO</abbreviation>
193
- <uri>www.iso.org</uri>
194
- </organization>
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
249
+ doc = Asciidoctor.convert(input
250
+ .sub(/:novalid:/, ":language: de\n:novalid:"), *OPTIONS)
251
+ expect(doc).to include '<eref type="inline" bibitemid="iso123" citeas="ISO 8342-DE"/>'
252
+ expect(doc).to include '<eref type="inline" bibitemid="iso124" citeas="ISO 8343-DE"/>'
253
+ doc = Asciidoctor.convert(input
254
+ .sub(/:novalid:/, ":language: fr\n:novalid:"), *OPTIONS)
255
+ expect(doc).to include '<eref type="inline" bibitemid="iso123" citeas="ISO 8342-EN"/>'
256
+ expect(doc).to include '<eref type="inline" bibitemid="iso124" citeas="ISO 8343-FR"/>'
257
+ doc = Asciidoctor.convert(input
258
+ .sub(/:novalid:/, ":language: en\n:novalid:"), *OPTIONS)
259
+ expect(doc).to include '<eref type="inline" bibitemid="iso123" citeas="ISO 8342-EN"/>'
260
+ expect(doc).to include '<eref type="inline" bibitemid="iso124" citeas="ISO 8341"/>'
233
261
  end
234
262
 
235
263
  it "fetches simple ISO reference" do
@@ -1026,6 +1054,24 @@ RSpec.describe Metanorma::Standoc do
1026
1054
  end
1027
1055
  end
1028
1056
 
1057
+ it "suppress identifier on bibitem" do
1058
+ VCR.use_cassette "dated_iso_ref_joint_iso_iec1" do
1059
+ input = <<~INPUT
1060
+ #{ISOBIB_BLANK_HDR}
1061
+ [bibliography]
1062
+ == Normative References
1063
+
1064
+ * [[[iso123,dropid(ABC)]]] _Standard_
1065
+ * [[[iso124,dropid(ISO 124:2014)]]] _Standard_
1066
+ INPUT
1067
+ doc = Nokogiri::XML(Asciidoctor.convert(input, *OPTIONS))
1068
+ expect(doc.at("//xmlns:bibitem[@id = 'iso123']/@suppress_identifier")&.text)
1069
+ .to eq("true")
1070
+ expect(doc.at("//xmlns:bibitem[@id = 'iso124']/@suppress_identifier")&.text)
1071
+ .to eq("true")
1072
+ end
1073
+ end
1074
+
1029
1075
  it "hides individual references" do
1030
1076
  VCR.use_cassette "hide_refs",
1031
1077
  match_requests_on: %i[method uri body] do
@@ -1471,7 +1517,7 @@ RSpec.describe Metanorma::Standoc do
1471
1517
  end
1472
1518
 
1473
1519
  it "processes draft ISO reference" do
1474
- # stub_fetch_ref no_year: true, note: "The standard is in press"
1520
+ stub_fetch_ref no_year: true, note: "The standard is in press"
1475
1521
 
1476
1522
  input = <<~INPUT
1477
1523
  #{ASCIIDOC_BLANK_HDR}
@@ -1656,127 +1702,121 @@ RSpec.describe Metanorma::Standoc do
1656
1702
  <clause id="_" inline-header="false" obligation="normative">
1657
1703
  <title>Clause 4</title>
1658
1704
  <p id="_">
1659
- <eref type="inline" bibitemid="iso123" citeas="RFC 8341"/>
1705
+ <eref type="inline" bibitemid="iso123" citeas="IETF RFC 8341"/>
1660
1706
  </p>
1661
1707
  </clause>
1662
1708
  </sections><bibliography><references id="_" obligation="informative" normative="true">
1663
1709
  <title>Normative references</title>
1664
1710
  #{NORM_REF_BOILERPLATE}
1665
- <bibitem id='iso123' type='standard'>
1666
- <fetched/>
1667
- <title format='text/plain' language='en' script='Latn'>Network Configuration Access Control Model</title>
1668
- <uri type='src'>https://www.rfc-editor.org/info/rfc8341</uri>
1669
- <docidentifier type='RFC' primary="true">RFC 8341</docidentifier>
1670
- <docidentifier type='RFC' scope='anchor'>RFC8341</docidentifier>
1671
- <docidentifier type='DOI'>10.17487/RFC8341</docidentifier>
1672
- <docnumber>RFC8341</docnumber>
1673
- <date type='published'>
1674
- <on>2018-03</on>
1675
- </date>
1676
- <contributor>
1677
- <role type='publisher'/>
1678
- <organization>
1679
- <name>Internet Engineering Task Force</name>
1680
- <abbreviation>IETF</abbreviation>
1681
- </organization>
1682
- </contributor>
1683
- <contributor>
1684
- <role type='author'/>
1685
- <person>
1686
- <name>
1687
- <completename language='en'>A. Bierman</completename>
1688
- </name>
1689
- </person>
1690
- </contributor>
1691
- <contributor>
1692
- <role type='author'/>
1693
- <person>
1694
- <name>
1695
- <completename language='en'>M. Bjorklund</completename>
1696
- </name>
1697
- </person>
1698
- </contributor>
1699
- <language>en</language>
1700
- <script>Latn</script>
1701
- <abstract format='text/html' language='en' script='Latn'>
1702
- <p id='_'>
1703
- The standardization of network configuration interfaces for use with
1704
- the Network Configuration Protocol (NETCONF) or the RESTCONF protocol
1705
- requires a structured and secure operating environment that promotes
1706
- human usability and multi-vendor interoperability. There is a need for
1707
- standard mechanisms to restrict NETCONF or RESTCONF protocol access
1708
- for particular users to a preconfigured subset of all available
1709
- NETCONF or RESTCONF protocol operations and content. This document
1710
- defines such an access control model.</p>
1711
- <p id='_'>This document obsoletes RFC 6536.</p>
1712
- </abstract>
1713
- <series type='main'>
1714
- <title format='text/plain' language='en' script='Latn'>STD</title>
1715
- <number>91</number>
1716
- </series>
1717
- <series type='main'>
1718
- <title format='text/plain' language='en' script='Latn'>RFC</title>
1719
- <number>8341</number>
1720
- </series>
1721
- </bibitem>
1722
- <bibitem id='iso124' type='standard'>
1723
- <fetched/>
1724
- <title format='text/plain' language='en' script='Latn'>Network Configuration Access Control Model</title>
1725
- <uri type='src'>https://www.rfc-editor.org/info/rfc8341</uri>
1726
- <docidentifier type='RFC' primary="true">RFC 8341</docidentifier>
1727
- <docidentifier type='metanorma'>[1]</docidentifier>
1728
- <docidentifier type='RFC' scope='anchor'>RFC8341</docidentifier>
1729
- <docidentifier type='DOI'>10.17487/RFC8341</docidentifier>
1730
- <docnumber>RFC8341</docnumber>
1731
- <date type='published'>
1732
- <on>2018-03</on>
1733
- </date>
1734
- <contributor>
1735
- <role type='publisher'/>
1736
- <organization>
1737
- <name>Internet Engineering Task Force</name>
1738
- <abbreviation>IETF</abbreviation>
1739
- </organization>
1740
- </contributor>
1741
- <contributor>
1742
- <role type='author'/>
1743
- <person>
1744
- <name>
1745
- <completename language='en'>A. Bierman</completename>
1746
- </name>
1747
- </person>
1748
- </contributor>
1749
- <contributor>
1750
- <role type='author'/>
1751
- <person>
1752
- <name>
1753
- <completename language='en'>M. Bjorklund</completename>
1754
- </name>
1755
- </person>
1756
- </contributor>
1757
- <language>en</language>
1758
- <script>Latn</script>
1759
- <abstract format='text/html' language='en' script='Latn'>
1760
- <p id='_'>
1761
- The standardization of network configuration interfaces for use with
1762
- the Network Configuration Protocol (NETCONF) or the RESTCONF protocol
1763
- requires a structured and secure operating environment that promotes
1764
- human usability and multi-vendor interoperability. There is a need for
1765
- standard mechanisms to restrict NETCONF or RESTCONF protocol access
1766
- for particular users to a preconfigured subset of all available
1767
- NETCONF or RESTCONF protocol operations and content. This document
1768
- defines such an access control model.</p>
1769
- <p id='_'>This document obsoletes RFC 6536.</p>
1770
- </abstract>
1771
- <series type='main'>
1772
- <title format='text/plain' language='en' script='Latn'>STD</title>
1773
- <number>91</number>
1774
- </series>
1775
- <series type='main'>
1776
- <title format='text/plain' language='en' script='Latn'>RFC</title>
1777
- <number>8341</number>
1778
- </series>
1779
- </bibitem>
1711
+ <bibitem id='iso123' type='standard'>
1712
+ <fetched/>
1713
+ <title type='main' format='text/plain'>Network Configuration Access Control Model</title>
1714
+ <uri type='src'>https://www.rfc-editor.org/info/rfc8341</uri>
1715
+ <docidentifier type='IETF' primary='true'>RFC 8341</docidentifier>
1716
+ <docidentifier type='IETF' scope='anchor'>RFC8341</docidentifier>
1717
+ <docidentifier type='DOI'>10.17487/RFC8341</docidentifier>
1718
+ <docnumber>RFC8341</docnumber>
1719
+ <date type='published'>
1720
+ <on>2018-03</on>
1721
+ </date>
1722
+ <contributor>
1723
+ <role type='author'/>
1724
+ <person>
1725
+ <name>
1726
+ <completename language='en' script='Latn'>A. Bierman</completename>
1727
+ </name>
1728
+ </person>
1729
+ </contributor>
1730
+ <contributor>
1731
+ <role type='author'/>
1732
+ <person>
1733
+ <name>
1734
+ <completename language='en' script='Latn'>M. Bjorklund</completename>
1735
+ </name>
1736
+ </person>
1737
+ </contributor>
1738
+ <language>en</language>
1739
+ <script>Latn</script>
1740
+ <abstract format='text/html' language='en' script='Latn'>
1741
+ <p id='_'>
1742
+ The standardization of network configuration interfaces for use with
1743
+ the Network Configuration Protocol (NETCONF) or the RESTCONF
1744
+ protocol requires a structured and secure operating environment that
1745
+ promotes human usability and multi-vendor interoperability. There is
1746
+ a need for standard mechanisms to restrict NETCONF or RESTCONF
1747
+ protocol access for particular users to a preconfigured subset of
1748
+ all available NETCONF or RESTCONF protocol operations and content.
1749
+ This document defines such an access control model.
1750
+ </p>
1751
+ <p id='_'>This document obsoletes RFC 6536.</p>
1752
+ </abstract>
1753
+ <series>
1754
+ <title format='text/plain'>STD</title>
1755
+ <number>91</number>
1756
+ </series>
1757
+ <series>
1758
+ <title format='text/plain'>RFC</title>
1759
+ <number>8341</number>
1760
+ </series>
1761
+ <keyword>NETCONF RESTCONF</keyword>
1762
+ <keyword>YANG</keyword>
1763
+ <keyword>XML</keyword>
1764
+ </bibitem>
1765
+ <bibitem id='iso124' type='standard'>
1766
+ <fetched/>
1767
+ <title type='main' format='text/plain'>Network Configuration Access Control Model</title>
1768
+ <uri type='src'>https://www.rfc-editor.org/info/rfc8341</uri>
1769
+ <docidentifier type='IETF' primary='true'>RFC 8341</docidentifier>
1770
+ <docidentifier type='metanorma'>[1]</docidentifier>
1771
+ <docidentifier type='IETF' scope='anchor'>RFC8341</docidentifier>
1772
+ <docidentifier type='DOI'>10.17487/RFC8341</docidentifier>
1773
+ <docnumber>RFC8341</docnumber>
1774
+ <date type='published'>
1775
+ <on>2018-03</on>
1776
+ </date>
1777
+ <contributor>
1778
+ <role type='author'/>
1779
+ <person>
1780
+ <name>
1781
+ <completename language='en' script='Latn'>A. Bierman</completename>
1782
+ </name>
1783
+ </person>
1784
+ </contributor>
1785
+ <contributor>
1786
+ <role type='author'/>
1787
+ <person>
1788
+ <name>
1789
+ <completename language='en' script='Latn'>M. Bjorklund</completename>
1790
+ </name>
1791
+ </person>
1792
+ </contributor>
1793
+ <language>en</language>
1794
+ <script>Latn</script>
1795
+ <abstract format='text/html' language='en' script='Latn'>
1796
+ <p id='_'>
1797
+ The standardization of network configuration interfaces for use with
1798
+ the Network Configuration Protocol (NETCONF) or the RESTCONF
1799
+ protocol requires a structured and secure operating environment that
1800
+ promotes human usability and multi-vendor interoperability. There is
1801
+ a need for standard mechanisms to restrict NETCONF or RESTCONF
1802
+ protocol access for particular users to a preconfigured subset of
1803
+ all available NETCONF or RESTCONF protocol operations and content.
1804
+ This document defines such an access control model.
1805
+ </p>
1806
+ <p id='_'>This document obsoletes RFC 6536.</p>
1807
+ </abstract>
1808
+ <series>
1809
+ <title format='text/plain'>STD</title>
1810
+ <number>91</number>
1811
+ </series>
1812
+ <series>
1813
+ <title format='text/plain'>RFC</title>
1814
+ <number>8341</number>
1815
+ </series>
1816
+ <keyword>NETCONF RESTCONF</keyword>
1817
+ <keyword>YANG</keyword>
1818
+ <keyword>XML</keyword>
1819
+ </bibitem>
1780
1820
  </references>
1781
1821
  </bibliography>
1782
1822
  </standard-document>
@@ -1906,7 +1946,7 @@ RSpec.describe Metanorma::Standoc do
1906
1946
  <from>#{Date.today.year}</from>
1907
1947
  </copyright>
1908
1948
  <ext>
1909
- <doctype>article</doctype>
1949
+ <doctype>standard</doctype>
1910
1950
  </ext>
1911
1951
  </bibdata>
1912
1952
  <sections>
@@ -2211,8 +2251,8 @@ RSpec.describe Metanorma::Standoc do
2211
2251
  end
2212
2252
 
2213
2253
  it "overrides normative status of bibliographies" do
2214
- # mock_isobib_get_123_no_docid(1)
2215
- # mock_isobib_get_123_no_docid_lbl(1)
2254
+ mock_isobib_get_123_no_docid(1)
2255
+ mock_isobib_get_123_no_docid_lbl(1)
2216
2256
  VCR.use_cassette "isobib_get_123_1" do
2217
2257
  input = <<~INPUT
2218
2258
  #{ISOBIB_BLANK_HDR}
@@ -2495,7 +2535,7 @@ RSpec.describe Metanorma::Standoc do
2495
2535
  <foreword id='_' obligation='informative'>
2496
2536
  <title>Foreword</title>
2497
2537
  <p id='_'>
2498
- <eref type='inline' bibitemid='iso124' citeas='[&amp;#x3c;strong&amp;#x3e;A&amp;#x3c;/strong&amp;#x3e;.&amp;#x3c;fn reference=&amp;#x22;1&amp;#x22;&amp;#x3e;&amp;#x3c;p&amp;#x3e;hello&amp;#x3c;/p&amp;#x3e;&amp;#xa;&amp;#x3c;/fn&amp;#x3e;]'/>
2538
+ <eref type='inline' bibitemid='iso124' citeas='[&lt;strong&gt;A&lt;/strong&gt;.&lt;fn reference=&quot;1&quot;&gt;&lt;p&gt;hello&lt;/p&gt;&#10;&lt;/fn&gt;]'/>
2499
2539
  </p>
2500
2540
  </foreword>
2501
2541
  </preface>
@@ -2531,6 +2571,7 @@ RSpec.describe Metanorma::Standoc do
2531
2571
  #{ASCIIDOC_BLANK_HDR}
2532
2572
  == Section
2533
2573
 
2574
+ <<ref1,clause=3-5>>
2534
2575
  <<ref1,clause=3;to!clause=5>>
2535
2576
  <<ref1,from!clause=3;to!clause=5,text>>
2536
2577
  <<ref1,clause=3;clause=5>>
@@ -2549,6 +2590,14 @@ RSpec.describe Metanorma::Standoc do
2549
2590
  <clause id='_' inline-header='false' obligation='normative'>
2550
2591
  <title>Section</title>
2551
2592
  <p id='_'>
2593
+ <eref type='inline' bibitemid='ref1' citeas='XYZ'>
2594
+ <localityStack>
2595
+ <locality type='clause'>
2596
+ <referenceFrom>3</referenceFrom>
2597
+ <referenceTo>5</referenceTo>
2598
+ </locality>
2599
+ </localityStack>
2600
+ </eref>
2552
2601
  <eref type='inline' bibitemid='ref1' citeas='XYZ'>
2553
2602
  <localityStack connective='from'>
2554
2603
  <locality type='clause'>
@@ -2655,22 +2704,6 @@ RSpec.describe Metanorma::Standoc do
2655
2704
 
2656
2705
  private
2657
2706
 
2658
- def mock_isobib_get_123
2659
- expect(RelatonIso::IsoBibliography).to receive(:get)
2660
- .with("ISO 123", nil, { code: "ISO 123",
2661
- lang: "en",
2662
- match: anything,
2663
- process: 1,
2664
- ord: anything,
2665
- title: "<em>Standard</em>",
2666
- usrlbl: nil,
2667
- year: nil }) do
2668
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
2669
- <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>
2670
- OUTPUT
2671
- end
2672
- end
2673
-
2674
2707
  def mock_isobib_get_123_no_docid(times)
2675
2708
  expect(RelatonIso::IsoBibliography).to receive(:get)
2676
2709
  .with("ISO 123", nil, { code: "ISO 123",
@@ -2703,136 +2736,43 @@ RSpec.describe Metanorma::Standoc do
2703
2736
  end.exactly(times).times
2704
2737
  end
2705
2738
 
2706
- def mock_isobib_get_124
2707
- expect(RelatonIso::IsoBibliography).to receive(:get)
2708
- .with("ISO 124",
2709
- "2014", anything) do
2710
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
2711
- <bibitem type="standard" id="iso124">
2712
- <title format="text/plain" language="en" script="Latn">Latex, rubber -- Determination of total solids content</title>
2713
- <title format="text/plain" language="fr" script="Latn">Latex de caoutchouc -- Détermination des matières solides totales</title>
2714
- <uri type="src">https://www.iso.org/standard/61884.html</uri>
2715
- <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
2716
- <uri type="rss">https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
2717
- <docidentifier>ISO 124</docidentifier>
2718
- <date type="published">
2719
- <on>2014</on>
2720
- </date>
2721
- <contributor>
2722
- <role type="publisher"/>
2723
- <organization>
2724
- <name>International Organization for Standardization</name>
2725
- <abbreviation>ISO</abbreviation>
2726
- <uri>www.iso.org</uri>
2727
- </organization>
2728
- </contributor>
2729
- <edition>7</edition>
2730
- <language>en</language>
2731
- <language>fr</language>
2732
- <script>Latn</script>
2733
- <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>
2734
- <status>Published</status>
2735
- <copyright>
2736
- <from>2014</from>
2737
- <owner>
2738
- <organization>
2739
- <name>ISO</name>
2740
- <abbreviation/>
2741
- </organization>
2742
- </owner>
2743
- </copyright>
2744
- <relation type="obsoletes">
2745
- <bibitem type="standard">
2746
- <formattedref format="text/plain">ISO 124:2011</formattedref>
2747
- </bibitem>
2748
- </relation>
2749
- <ics>
2750
- <code>83.040.10</code>
2751
- <text>Latex and raw rubber</text>
2752
- </ics>
2739
+ def mock_rfcbib_get_rfc8342(times)
2740
+ expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 8342", nil,
2741
+ anything) do
2742
+ RelatonBib::XMLParser.from_xml(<<~"OUTPUT")
2743
+ <bibitem id="RFC8342">
2744
+ <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
2745
+ <docidentifier type="DOI">10.17487/RFC8341</docidentifier>
2746
+ <docidentifier type="ISO">ISO 8341</docidentifier>
2747
+ <docidentifier type="ISO" primary="true">ISO 8342-EN</docidentifier>
2748
+ <docidentifier type="ISO" language="fr">ISO 8342-FR</docidentifier>
2749
+ <docidentifier type="ISO" primary="true" language="de">ISO 8342-DE</docidentifier>
2750
+ <date type="published">
2751
+ <on>2018</on>
2752
+ </date>
2753
+ <status>published</status>
2753
2754
  </bibitem>
2754
2755
  OUTPUT
2755
- end
2756
- end
2757
-
2758
- def mock_isobib_get_iec12382
2759
- expect(RelatonIso::IsoBibliography).to receive(:get).with(
2760
- "ISO/IEC TR 12382", "1992", anything
2761
- ) do
2762
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
2763
- <bibitem type="standard" id="iso123">
2764
- <title format="text/plain" language="en" script="Latn">Permuted index of the vocabulary of information technology</title>
2765
- <title format="text/plain" language="fr" script="Latn">Index permuté du vocabulaire des technologies de l'information</title>
2766
- <uri type="src">https://www.iso.org/standard/21071.html</uri>
2767
- <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:21071:en</uri>
2768
- <uri type="rss">https://www.iso.org/contents/data/standard/02/10/21071.detail.rss</uri>
2769
- <docidentifier>ISO/IEC 12382</docidentifier>
2770
- <date type="published">
2771
- <on>1992</on>
2772
- </date>
2773
- <contributor>
2774
- <role type="publisher"/>
2775
- <organization>
2776
- <name>International Organization for Standardization</name>
2777
- <abbreviation>ISO</abbreviation>
2778
- <uri>www.iso.org</uri>
2779
- </organization>
2780
- </contributor>
2781
- <contributor>
2782
- <role type="publisher"/>
2783
- <organization>
2784
- <name>International Electrotechnical Commission</name>
2785
- <abbreviation>IEC</abbreviation>
2786
- <uri>www.iec.ch</uri>
2787
- </organization>
2788
- </contributor>
2789
- <edition>2</edition>
2790
- <language>en</language>
2791
- <language>fr</language>
2792
- <script>Latn</script>
2793
- <abstract format="text/plain" language="en" script="Latn">Contains a permuted index of all terms included in the parts 1 — 28 of ISO 2382. If any of these parts has been revised, the present TR refers to the revision.</abstract>
2794
- <status>Published</status>
2795
- <copyright>
2796
- <from>1992</from>
2797
- <owner>
2798
- <organization>
2799
- <name>ISO/IEC</name>
2800
- <abbreviation/>
2801
- </organization>
2802
- </owner>
2803
- </copyright>
2804
- <relation type="updates">
2805
- <bibitem type="standard">
2806
- <formattedref format="text/plain">ISO/IEC TR 12382:1992</formattedref>
2807
- </bibitem>
2808
- </relation>
2809
- <ics>
2810
- <code>35.020</code>
2811
- <text>Information technology (IT) in general</text>
2812
- </ics>
2813
- <ics>
2814
- <code>01.040.35</code>
2815
- <text>Information technology (Vocabularies)</text>
2816
- </ics>
2817
- </bibitem>
2818
- OUTPUT
2819
- end
2756
+ end.exactly(times).times
2820
2757
  end
2821
2758
 
2822
- def mock_rfcbib_get_rfc8341
2823
- expect(IETFBib::RfcBibliography).to receive(:get).with("RFC 8341", nil,
2824
- anything) do
2825
- IsoBibItem::XMLParser.from_xml(<<~"OUTPUT")
2826
- <bibitem id="RFC8341">
2759
+ def mock_rfcbib_get_rfc8343(times)
2760
+ expect(RelatonIso::IsoBibliography).to receive(:get).with("ISO 8343", nil,
2761
+ anything) do
2762
+ RelatonBib::XMLParser.from_xml(<<~"OUTPUT")
2763
+ <bibitem id="RFC8343">
2827
2764
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
2828
2765
  <docidentifier type="DOI">10.17487/RFC8341</docidentifier>
2829
- <docidentifier type="RFC">RFC 8341</docidentifier>
2766
+ <docidentifier type="ISO">ISO 8341</docidentifier>
2767
+ <docidentifier type="ISO">ISO 8343-EN</docidentifier>
2768
+ <docidentifier type="ISO" language="fr">ISO 8343-FR</docidentifier>
2769
+ <docidentifier type="ISO" language="de">ISO 8343-DE</docidentifier>
2830
2770
  <date type="published">
2831
2771
  <on>2018</on>
2832
2772
  </date>
2833
2773
  <status>published</status>
2834
2774
  </bibitem>
2835
2775
  OUTPUT
2836
- end
2776
+ end.exactly(times).times
2837
2777
  end
2838
2778
  end