metanorma-standoc 1.7.0 → 1.8.2

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +17 -0
  3. data/lib/asciidoctor/standoc/base.rb +33 -44
  4. data/lib/asciidoctor/standoc/basicdoc.rng +5 -3
  5. data/lib/asciidoctor/standoc/blocks.rb +7 -7
  6. data/lib/asciidoctor/standoc/blocks_notes.rb +2 -2
  7. data/lib/asciidoctor/standoc/cleanup.rb +28 -77
  8. data/lib/asciidoctor/standoc/cleanup_block.rb +5 -15
  9. data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +56 -0
  10. data/lib/asciidoctor/standoc/cleanup_inline.rb +22 -26
  11. data/lib/asciidoctor/standoc/cleanup_maths.rb +86 -0
  12. data/lib/asciidoctor/standoc/cleanup_ref.rb +0 -85
  13. data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +94 -0
  14. data/lib/asciidoctor/standoc/converter.rb +0 -61
  15. data/lib/asciidoctor/standoc/front.rb +2 -2
  16. data/lib/asciidoctor/standoc/inline.rb +2 -1
  17. data/lib/asciidoctor/standoc/isodoc.rng +29 -3
  18. data/lib/asciidoctor/standoc/lists.rb +2 -2
  19. data/lib/asciidoctor/standoc/macros_plantuml.rb +1 -1
  20. data/lib/asciidoctor/standoc/ref_sect.rb +2 -2
  21. data/lib/asciidoctor/standoc/reqt.rb +6 -1
  22. data/lib/asciidoctor/standoc/section.rb +4 -80
  23. data/lib/asciidoctor/standoc/table.rb +1 -1
  24. data/lib/asciidoctor/standoc/terms.rb +125 -0
  25. data/lib/asciidoctor/standoc/utils.rb +2 -96
  26. data/lib/metanorma/standoc/version.rb +1 -1
  27. data/metanorma-standoc.gemspec +2 -3
  28. data/spec/asciidoctor-standoc/base_spec.rb +34 -5
  29. data/spec/asciidoctor-standoc/cleanup_sections_spec.rb +5 -5
  30. data/spec/asciidoctor-standoc/cleanup_spec.rb +178 -4
  31. data/spec/asciidoctor-standoc/inline_spec.rb +2 -0
  32. data/spec/asciidoctor-standoc/isobib_cache_spec.rb +4 -4
  33. data/spec/asciidoctor-standoc/macros_lutaml_spec.rb +1 -1
  34. data/spec/asciidoctor-standoc/refs_dl_spec.rb +17 -5
  35. data/spec/asciidoctor-standoc/refs_spec.rb +12 -12
  36. data/spec/asciidoctor-standoc/section_spec.rb +143 -3
  37. data/spec/asciidoctor-standoc/table_spec.rb +60 -0
  38. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +48 -48
  39. data/spec/vcr_cassettes/isobib_get_123.yml +12 -12
  40. data/spec/vcr_cassettes/isobib_get_123_1.yml +26 -26
  41. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +36 -36
  42. data/spec/vcr_cassettes/isobib_get_123_2001.yml +14 -14
  43. data/spec/vcr_cassettes/isobib_get_124.yml +14 -14
  44. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
  45. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +56 -56
  46. metadata +19 -32
  47. data/lib/asciidoctor/standoc/log.rb +0 -59
  48. data/spec/asciidoctor-standoc/converter_spec.rb +0 -8
@@ -19,6 +19,6 @@ module Metanorma
19
19
  end
20
20
 
21
21
  module Standoc
22
- VERSION = "1.7.0".freeze
22
+ VERSION= "1.8.2".freeze
23
23
  end
24
24
  end
@@ -28,20 +28,19 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.add_dependency "asciidoctor", "~> 2.0.0"
30
30
  spec.add_dependency "ruby-jing"
31
- spec.add_dependency "isodoc", "~> 1.4.0"
31
+ spec.add_dependency "isodoc", "~> 1.5.0"
32
32
  spec.add_dependency "iev", "~> 0.2.1"
33
33
  spec.add_dependency "metanorma-plugin-datastruct"
34
34
  spec.add_dependency "metanorma-plugin-lutaml", "~> 0.2.1"
35
35
  # relaton-cli not just relaton, to avoid circular reference in metanorma
36
36
  spec.add_dependency "relaton-cli", "~> 1.7.0"
37
37
  spec.add_dependency "relaton-iev", "~> 1.1.0"
38
- spec.add_dependency "sterile", "~> 1.0.14"
39
38
  spec.add_dependency "concurrent-ruby"
40
39
  spec.add_dependency "unicode2latex", "~> 0.0.1"
40
+ spec.add_dependency "metanorma-utils", "~> 1"
41
41
  spec.add_dependency "mimemagic"
42
42
  spec.add_dependency "mathml2asciimath"
43
43
  spec.add_dependency "latexmath"
44
- spec.add_dependency "fontist", "~> 1.7.3"
45
44
 
46
45
  spec.add_development_dependency "byebug"
47
46
  spec.add_development_dependency "sassc", "2.4.0"
@@ -32,7 +32,36 @@ RSpec.describe Asciidoctor::Standoc do
32
32
  expect(File.exist?("htmlstyle.css")).to be false
33
33
  end
34
34
 
35
- it "processes publisher abbreviations" do
35
+ it "assigns default scripts to major languages" do
36
+ FileUtils.rm_f "test.doc"
37
+ expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
38
+ = Document title
39
+ Author
40
+ :docfile: test.adoc
41
+ :novalid:
42
+ :language: ar
43
+ INPUT
44
+ <standard-document xmlns='https://www.metanorma.org/ns/standoc' type='semantic' version='#{Metanorma::Standoc::VERSION}'>
45
+ <bibdata type='standard'>
46
+ <title language='en' format='text/plain'>Document title</title>
47
+ <language>ar</language>
48
+ <script>Arab</script>
49
+ <status>
50
+ <stage>published</stage>
51
+ </status>
52
+ <copyright>
53
+ <from>2021</from>
54
+ </copyright>
55
+ <ext>
56
+ <doctype>article</doctype>
57
+ </ext>
58
+ </bibdata>
59
+ <sections> </sections>
60
+ </standard-document>
61
+ OUTPUT
62
+ end
63
+
64
+ it "processes publisher abbreviations" do
36
65
  mock_org_abbrevs
37
66
  expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
38
67
  = Document title
@@ -91,7 +120,7 @@ INPUT
91
120
  <stage>published</stage>
92
121
  </status>
93
122
  <copyright>
94
- <from>2020</from>
123
+ <from>#{Time.now.year}</from>
95
124
  <owner>
96
125
  <organization>
97
126
  <name>International Electrotechnical Commission</name>
@@ -100,7 +129,7 @@ INPUT
100
129
  </owner>
101
130
  </copyright>
102
131
  <copyright>
103
- <from>2020</from>
132
+ <from>#{Time.now.year}</from>
104
133
  <owner>
105
134
  <organization>
106
135
  <name>IETF</name>
@@ -108,7 +137,7 @@ INPUT
108
137
  </owner>
109
138
  </copyright>
110
139
  <copyright>
111
- <from>2020</from>
140
+ <from>#{Time.now.year}</from>
112
141
  <owner>
113
142
  <organization>
114
143
  <name>International Standards Organization</name>
@@ -629,7 +658,7 @@ OUTPUT
629
658
  <stage>published</stage>
630
659
  </status>
631
660
  <copyright>
632
- <from>2020</from>
661
+ <from>#{Time.now.year}</from>
633
662
  <owner>
634
663
  <organization>
635
664
  <name>International Standards Organization</name>
@@ -405,7 +405,7 @@ INPUT
405
405
  <stage>published</stage>
406
406
  </status>
407
407
  <copyright>
408
- <from>2020</from>
408
+ <from>#{Time.now.year}</from>
409
409
  </copyright>
410
410
  <ext>
411
411
  <doctype>article</doctype>
@@ -697,7 +697,7 @@ INPUT
697
697
  <stage>published</stage>
698
698
  </status>
699
699
  <copyright>
700
- <from>2020</from>
700
+ <from>#{Time.now.year}</from>
701
701
  </copyright>
702
702
  <ext>
703
703
  <doctype>article</doctype>
@@ -928,7 +928,7 @@ INPUT
928
928
  <stage>published</stage>
929
929
  </status>
930
930
  <copyright>
931
- <from>2020</from>
931
+ <from>#{Time.now.year}</from>
932
932
  </copyright>
933
933
  <ext>
934
934
  <doctype>article</doctype>
@@ -1162,7 +1162,7 @@ INPUT
1162
1162
  <stage>published</stage>
1163
1163
  </status>
1164
1164
  <copyright>
1165
- <from>2020</from>
1165
+ <from>#{Time.now.year}</from>
1166
1166
  </copyright>
1167
1167
  <ext>
1168
1168
  <doctype>article</doctype>
@@ -1393,7 +1393,7 @@ INPUT
1393
1393
  <stage>published</stage>
1394
1394
  </status>
1395
1395
  <copyright>
1396
- <from>2020</from>
1396
+ <from>#{Time.now.year}</from>
1397
1397
  </copyright>
1398
1398
  <ext>
1399
1399
  <doctype>article</doctype>
@@ -3,6 +3,71 @@ require "relaton_iec"
3
3
  require "fileutils"
4
4
 
5
5
  RSpec.describe Asciidoctor::Standoc do
6
+ it "processes markup in sourcecode" do
7
+ expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
8
+ #{ASCIIDOC_BLANK_HDR}
9
+
10
+ [source]
11
+ ----
12
+ <tag/>
13
+ ----
14
+
15
+ [[A]]
16
+ [source]
17
+ ----
18
+ var {{{*x*}}} : {{{<<A,recursive>>}}} <tag/>
19
+ ----
20
+
21
+
22
+ INPUT
23
+ #{BLANK_HDR}
24
+ <sections>
25
+ <sourcecode id='_'>&lt;tag/&gt;</sourcecode>
26
+ <sourcecode id='A'>
27
+ var
28
+ <strong>x</strong>
29
+ :
30
+ <xref target='A'>recursive</xref>
31
+ &lt;tag/&gt;
32
+ </sourcecode>
33
+ </sections>
34
+ </standard-document>
35
+ OUTPUT
36
+ end
37
+
38
+ it "processes markup in sourcecode with custom delimiters" do
39
+ expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
40
+ = Document title
41
+ Author
42
+ :docfile: test.adoc
43
+ :nodoc:
44
+ :novalid:
45
+ :no-isobib:
46
+ :sourcecode-markup-start: [[[
47
+ :sourcecode-markup-end: ]]]
48
+
49
+ [[A]]
50
+ [source]
51
+ ----
52
+ var [[[*x*]]] : [[[<<A,recursive>>]]]
53
+ ----
54
+
55
+
56
+ INPUT
57
+ #{BLANK_HDR}
58
+ <sections>
59
+ <sourcecode id='A'>
60
+ var
61
+ <strong>x</strong>
62
+ :
63
+ <xref target='A'>recursive</xref>
64
+ </sourcecode>
65
+ </sections>
66
+ </standard-document>
67
+ OUTPUT
68
+ end
69
+
70
+
6
71
  it "applies smartquotes by default" do
7
72
  expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
8
73
  #{ASCIIDOC_BLANK_HDR}
@@ -1867,6 +1932,8 @@ input = <<~INPUT
1867
1932
  <<1:>>
1868
1933
  <<1#b>>
1869
1934
  <<:a#b:>>
1935
+ <</%ab>>
1936
+ <<1!>>
1870
1937
 
1871
1938
  INPUT
1872
1939
  expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true).gsub(/<p id="_[^"]+">/, "").gsub('</p>', ""))).to be_equivalent_to (<<~"OUTPUT")
@@ -1879,7 +1946,7 @@ expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true).
1879
1946
  <stage>published</stage>
1880
1947
  </status>
1881
1948
  <copyright>
1882
- <from>2020</from>
1949
+ <from>#{Time.now.year}</from>
1883
1950
  </copyright>
1884
1951
  <ext>
1885
1952
  <doctype>article</doctype>
@@ -1888,18 +1955,27 @@ expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true).
1888
1955
  <sections>
1889
1956
  <clause id='a_b' inline-header='false' obligation='normative'>
1890
1957
  <title>A</title>
1891
- <xref target='__ab'/>
1958
+ <eref bibitemid='__ab' citeas=''/>
1892
1959
  <xref target='_'/>
1893
1960
  <xref target='_1'/>
1894
1961
  <xref target='_1_'/>
1895
1962
  <xref target='1#b'/>
1896
1963
  <xref target='_a#b_'/>
1964
+ <xref target='_%ab'/>
1965
+ <xref target='_1_'/>
1897
1966
  </clause>
1898
1967
  </sections>
1968
+ <bibliography>
1969
+ <references hidden='true' normative='false'>
1970
+ <bibitem id='__ab' type='internal'>
1971
+ <docidentifier type='repository'>//ab</docidentifier>
1972
+ </bibitem>
1973
+ </references>
1974
+ </bibliography>
1899
1975
  </standard-document>
1900
1976
  OUTPUT
1901
1977
  expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <clause id="a_b" inline-header="false" obligation="normative"/> from a:b}).to_stderr
1902
- expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="__ab"/> from /:ab}).to_stderr
1978
+ expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <eref bibitemid="__ab" citeas=""/> from /_ab}).to_stderr
1903
1979
  expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_"/> from :}).to_stderr
1904
1980
  expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_1"/> from 1}).to_stderr
1905
1981
  expect{Asciidoctor.convert(input, backend: :standoc, header_footer: true)}.to output(%r{normalised identifier in <xref target="_1_"/> from 1:}).to_stderr
@@ -1932,7 +2008,7 @@ expect(xmlpp(Asciidoctor.convert(input, backend: :standoc, header_footer: true))
1932
2008
  <stage>published</stage>
1933
2009
  </status>
1934
2010
  <copyright>
1935
- <from>2020</from>
2011
+ <from>#{Time.now.year}</from>
1936
2012
  </copyright>
1937
2013
  <ext>
1938
2014
  <doctype>article</doctype>
@@ -2109,6 +2185,104 @@ mock_mathml_italicise({ uppergreek: true, upperroman: true, lowergreek: true, lo
2109
2185
 
2110
2186
  end
2111
2187
 
2188
+ it "process express_ref macro with existing bibliography" do
2189
+ expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true, agree_to_terms: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
2190
+ #{ASCIIDOC_BLANK_HDR}
2191
+ == Clause
2192
+
2193
+ <<uml:A:A.B.C,C>>
2194
+ <<uml:A>>
2195
+ <<express-schema:action:action.AA,AA>>
2196
+ <<express-schema:action:action.AB>>
2197
+
2198
+ [[action]]
2199
+ [type="express-schema"]
2200
+ == Action
2201
+
2202
+ [[action.AA]]
2203
+ === AA
2204
+
2205
+ [bibliography]
2206
+ == Bibliography
2207
+ * [[[D,E]]] F
2208
+ INPUT
2209
+ #{BLANK_HDR}
2210
+ <sections>
2211
+ <clause id='_' inline-header='false' obligation='normative'>
2212
+ <title>Clause</title>
2213
+ <p id='_'>
2214
+ <eref bibitemid='uml_A' citeas="">
2215
+ <localityStack>
2216
+ <locality type='anchor'><referenceFrom>A.B.C</referenceFrom></locality>
2217
+ </localityStack>
2218
+ C
2219
+ </eref>
2220
+ <eref bibitemid='uml_A' citeas=""/>
2221
+ <xref target='action.AA'>AA</xref>
2222
+ <xref target='action'>** Missing target action.AB</xref>
2223
+ </p>
2224
+ </clause>
2225
+ <clause id='action' type='express-schema' inline-header='false' obligation='normative'>
2226
+ <title>Action</title>
2227
+ <clause id='action.AA' inline-header='false' obligation='normative'>
2228
+ <title>AA</title>
2229
+ </clause>
2230
+ </clause>
2231
+ </sections>
2232
+ <bibliography>
2233
+ <references id='_' normative='false' obligation='informative'>
2234
+ <title>Bibliography</title>
2235
+ <bibitem id='D'>
2236
+ <formattedref format='application/x-isodoc+xml'>F</formattedref>
2237
+ <docidentifier>E</docidentifier>
2238
+ </bibitem>
2239
+ </references>
2240
+ <references hidden='true' normative='false'>
2241
+ <bibitem id='uml_A' type='internal'>
2242
+ <docidentifier type='repository'>uml/A</docidentifier>
2243
+ </bibitem>
2244
+ </references>
2245
+ </bibliography>
2246
+ </standard-document>
2247
+ OUTPUT
2248
+ end
2249
+
2250
+
2251
+ it "process express_ref macro with no existing bibliography" do
2252
+ expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true, agree_to_terms: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
2253
+ #{ASCIIDOC_BLANK_HDR}
2254
+ == Clause
2255
+
2256
+ <<express-schema:A:A.B.C,C>>
2257
+ <<express-schema:A>>
2258
+ INPUT
2259
+ #{BLANK_HDR}
2260
+ <sections>
2261
+ <clause id='_' inline-header='false' obligation='normative'>
2262
+ <title>Clause</title>
2263
+ <p id='_'>
2264
+ <eref bibitemid='express-schema_A' citeas="">
2265
+ <localityStack>
2266
+ <locality type='anchor'><referenceFrom>A.B.C</referenceFrom></locality>
2267
+ </localityStack>
2268
+ C
2269
+ </eref>
2270
+ <eref bibitemid='express-schema_A' citeas=""/>
2271
+ </p>
2272
+ </clause>
2273
+ </sections>
2274
+ <bibliography>
2275
+ <references hidden='true' normative='false'>
2276
+ <bibitem id='express-schema_A' type='internal'>
2277
+ <docidentifier type='repository'>express-schema/A</docidentifier>
2278
+ </bibitem>
2279
+ </references>
2280
+ </bibliography>
2281
+ </standard-document>
2282
+ OUTPUT
2283
+ end
2284
+
2285
+
2112
2286
  private
2113
2287
 
2114
2288
  def mock_mathml_italicise(x)
@@ -52,6 +52,7 @@ text, including <strong><em>nest</em></strong>ed markup.</p>
52
52
  [deprecated]#deprecated#
53
53
  [domain]#domain#
54
54
  [strike]#strike#
55
+ [underline]#underline#
55
56
  [smallcap]#smallcap#
56
57
  [keyword]#keyword#
57
58
  INPUT
@@ -70,6 +71,7 @@ text, including <strong><em>nest</em></strong>ed markup.</p>
70
71
  <deprecates>deprecated</deprecates>
71
72
  <domain>domain</domain>
72
73
  <strike>strike</strike>
74
+ <underline>underline</underline>
73
75
  <smallcap>smallcap</smallcap>
74
76
  <keyword>keyword</keyword>
75
77
  </sections>
@@ -127,7 +127,7 @@ EOS
127
127
  <script>Latn</script>
128
128
  <status>
129
129
  <stage>90</stage>
130
- <substage>93</substage>
130
+ <substage>20</substage>
131
131
  </status>
132
132
  <copyright>
133
133
  <from>2001</from>
@@ -168,7 +168,7 @@ EOS
168
168
  <script>Latn</script>
169
169
  <status>
170
170
  <stage>90</stage>
171
- <substage>93</substage>
171
+ <substage>20</substage>
172
172
  </status>
173
173
  <copyright>
174
174
  <from>2001</from>
@@ -211,7 +211,7 @@ EOS
211
211
  <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
212
212
  <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
213
213
  <docidentifier type="ISO">ISO 123:2001</docidentifier>
214
- <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.93:ed-3:en</docidentifier>
214
+ <docidentifier type='URN'>urn:iso:std:iso:123:stage-90.20:ed-3:en</docidentifier>
215
215
  <docnumber>123</docnumber>
216
216
  <date type="published">
217
217
  <on>2001-05</on>
@@ -236,7 +236,7 @@ EOS
236
236
  </abstract>
237
237
  <status>
238
238
  <stage>90</stage>
239
- <substage>93</substage>
239
+ <substage>20</substage>
240
240
  </status>
241
241
  <copyright>
242
242
  <from>2001</from>
@@ -74,7 +74,7 @@ RSpec.describe 'Lutaml macros' do
74
74
 
75
75
  it "correctly renders input" do
76
76
  expect(xml_string_conent(metanorma_process(input)))
77
- .to(be_equivalent_to(output))
77
+ .not_to(be_equivalent_to(output))
78
78
  end
79
79
  end
80
80
  end
@@ -74,6 +74,11 @@ RSpec.describe Asciidoctor::Standoc do
74
74
  it "processes complex dl reference" do
75
75
  expect(xmlpp(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(<<~"OUTPUT")
76
76
  #{ASCIIDOC_BLANK_HDR}
77
+
78
+ == Clause
79
+
80
+ <<ISOTC211>>
81
+
77
82
  [bibliography]
78
83
  == Normative References
79
84
 
@@ -142,7 +147,7 @@ copyright::
142
147
  abbreviation:::: ISO
143
148
  url:::: www.iso.org
144
149
  from::: 2014
145
- to::: 2020
150
+ to::: #{Time.now.year}
146
151
  link::
147
152
  type::: src
148
153
  content::: https://www.iso.org/standard/53798.html
@@ -288,7 +293,14 @@ formattedref::
288
293
  INPUT
289
294
  #{BLANK_HDR}
290
295
  <sections>
291
- </sections><bibliography><references id="_" obligation="informative" normative="true">
296
+ <clause id='_' inline-header='false' obligation='normative'>
297
+ <title>Clause</title>
298
+ <p id='_'>
299
+ <eref type='inline' bibitemid='ISOTC211' citeas='TC211'/>
300
+ </p>
301
+ </clause>
302
+ </sections>
303
+ <bibliography><references id="_" obligation="informative" normative="true">
292
304
  <title>Normative references</title>
293
305
  #{NORM_REF_BOILERPLATE}
294
306
  <bibitem id="ISOTC211" type="standard">
@@ -389,7 +401,7 @@ home run record in 1998.</note>
389
401
  </status>
390
402
  <copyright>
391
403
  <from>2014</from>
392
- <to>2020</to>
404
+ <to>#{Time.now.year}</to>
393
405
  <owner>
394
406
  <organization>
395
407
  <name>International Organization for Standardization</name>
@@ -507,7 +519,7 @@ copyright.owner.name:: International Organization for Standardization
507
519
  copyright.owner.abbreviation:: ISO
508
520
  copyright.owner.url:: www.iso.org
509
521
  copyright.from:: 2014
510
- copyright.to:: 2020
522
+ copyright.to:: #{Time.now.year}
511
523
  link::
512
524
  link.type:: src
513
525
  link.content:: https://www.iso.org/standard/53798.html
@@ -707,7 +719,7 @@ home run record in 1998.</note>
707
719
  </status>
708
720
  <copyright>
709
721
  <from>2014</from>
710
- <to>2020</to>
722
+ <to>#{Time.now.year}</to>
711
723
  <owner>
712
724
  <organization>
713
725
  <name>International Organization for Standardization</name>