metanorma-standoc 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,6 +39,7 @@ module Asciidoctor
39
39
  {
40
40
  id: Utils::anchor_or_uuid,
41
41
  unnumbered: node.option?("unnumbered") ? "true" : nil,
42
+ subsequence: node.attr("subsequence"),
42
43
  obligation: node.attr("obligation"),
43
44
  filename: node.attr("filename")
44
45
  }
@@ -30,6 +30,9 @@
30
30
  <data type="boolean"/>
31
31
  </attribute>
32
32
  </optional>
33
+ <optional>
34
+ <attribute name="subsequence"/>
35
+ </optional>
33
36
  <attribute name="id">
34
37
  <data type="ID"/>
35
38
  </attribute>
@@ -5,7 +5,9 @@ module Asciidoctor
5
5
  { id: Utils::anchor_or_uuid(node),
6
6
  headerrows: node.attr("headerrows"),
7
7
  unnumbered: node.option?("unnumbered") ? "true" : nil,
8
- alt: node.attr("alt") }
8
+ subsequence: node.attr("subsequence"),
9
+ alt: node.attr("alt"),
10
+ summary: node.attr("summary") }
9
11
  end
10
12
 
11
13
  def table(node)
@@ -6,7 +6,7 @@ require "pathname"
6
6
  require "open-uri"
7
7
  require "uuidtools"
8
8
  require "sterile"
9
- #require_relative "../../hacks/sterile"
9
+ require "mimemagic"
10
10
 
11
11
  module Asciidoctor
12
12
  module Standoc
@@ -47,8 +47,8 @@ module Asciidoctor
47
47
  end
48
48
 
49
49
  def smartformat(n)
50
- n.gsub(/ -- /, "&#8201;&#8212;&#8201;").
51
- gsub(/--/, "&#8212;").smart_format.gsub(/</, "&lt;").gsub(/>/, "&gt;")
50
+ n.gsub(/ --? /, "&#8201;&#8211;&#8201;").
51
+ gsub(/--/, "&#8211;").smart_format.gsub(/</, "&lt;").gsub(/>/, "&gt;")
52
52
  end
53
53
 
54
54
  # Set hash value using keys path
@@ -186,6 +186,18 @@ module Asciidoctor
186
186
  end
187
187
  end
188
188
 
189
+ def datauri2mime(uri)
190
+ %r{^data:image/(?<imgtype>[^;]+);base64,(?<imgdata>.+)$} =~ uri
191
+ file = Tempfile.new(["hello", ".jpg"])
192
+ file.binmode
193
+ file.write(Base64.strict_decode64(imgdata))
194
+ file.rewind
195
+ type = MimeMagic.by_magic(file)
196
+ file.close
197
+ file.unlink
198
+ [type]
199
+ end
200
+
189
201
  SUBCLAUSE_XPATH = "//clause[ancestor::clause or ancestor::annex or "\
190
202
  "ancestor::introduction]".freeze
191
203
  end
@@ -3,48 +3,57 @@ require_relative "./requirement"
3
3
  module Metanorma
4
4
  module Standoc
5
5
  class LatexmlRequirement < Requirement
6
+ @recommended_version = '0.8.4'
7
+ @minimal_version = '0.8.0'
8
+
6
9
  def initialize
7
- @recommended_version = '0.8.4'
8
- @minimal_version = '0.8.0'
9
10
  version_output, = Open3.capture2e("latexml --VERSION")
10
- @actual_version = version_output&.match(%r{\d+(.\d+)*})
11
- rescue
12
- warn "LaTeXML not found in PATH, please ensure that LaTeXML is installed."
13
- end
14
-
15
- def satisfied
16
- version = @actual_version
11
+ version = version_output&.match(%r{\d+(.\d+)*})
17
12
 
18
13
  if version.to_s.empty?
19
- abort "LaTeXML not found in PATH, please ensure that LaTeXML is installed."
20
- end
14
+ @error_message = "LaTeXML not installed (or don't works properly)."\
15
+ " You must upgrade/install LaTeXML to #{@recommended_version} version"
21
16
 
22
- if Gem::Version.new(version) < Gem::Version.new(@minimal_version)
23
- abort "Minimal supported LaTeXML version is #{@minimal_version} "\
24
- "found #{version}, recommended version is #{@recommended_version}"
25
- end
26
-
27
- if Gem::Version.new(version) < Gem::Version.new(@recommended_version)
17
+ elsif Gem::Version.new(version) < Gem::Version.new(@minimal_version)
18
+ @error_message = "Minimal supported LaTeXML version is #{@minimal_version} "\
19
+ "found #{version}, recommended version is #{@recommended_version}"
20
+
21
+ elsif Gem::Version.new(version) < Gem::Version.new(@recommended_version)
28
22
  version = "unknown" if version.to_s.empty?
29
- header_msg = "WARNING latexmlmath version #{version} below #{@recommended_version}!"
23
+ header_msg = "latexmlmath version #{version} below #{@recommended_version}!"
30
24
  suggestion = if Gem.win_platform?
31
25
  "cmd encoding is set to UTF-8 with `chcp 65001`"
32
26
  else
33
27
  "terminal encoding is set to UTF-8 with `export LANG=en_US.UTF-8`"
34
28
  end
35
29
 
36
- warn "#{header_msg} Please sure that #{suggestion} command"
30
+ @error_message = "WARNING #{header_msg} Please sure that #{suggestion} command"
37
31
 
38
32
  @cmd = "latexmlmath --preload=amsmath -- -"
39
33
  else
40
34
  @cmd = "latexmlmath --preload=amsmath --inputencoding=UTF-8 -- -"
41
35
  end
36
+ rescue
37
+ @error_message = "LaTeXML not installed (or don't works properly)."\
38
+ " You must upgrade/install LaTeXML to #{@recommended_version} version"
42
39
  end
43
40
 
44
- def cmd
45
- if @cmd.nil?
46
- satisfied
41
+ def satisfied(abort = false)
42
+ unless @error_message.nil?
43
+ if abort
44
+ abort @error_message
45
+ else
46
+ warn @error_message
47
+ end
47
48
  end
49
+
50
+ @error_message.nil?
51
+ end
52
+
53
+ def cmd
54
+ abort @error_message unless @error_message.nil?
55
+
56
+ @cmd
48
57
  end
49
58
  end
50
59
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Standoc
3
- VERSION = "1.3.2".freeze
3
+ VERSION = "1.3.3".freeze
4
4
  end
5
5
  end
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.add_dependency "concurrent-ruby"
37
37
  spec.add_dependency "html2doc", "~> 0.8.11"
38
38
  spec.add_dependency "unicode2latex", "~> 0.0.1"
39
+ spec.add_dependency "mimemagic"
39
40
 
40
41
  spec.add_development_dependency "bundler", "~> 2.0.1"
41
42
  spec.add_development_dependency "byebug"
@@ -96,7 +96,7 @@ RSpec.describe Asciidoctor::Standoc do
96
96
  :email_2: barney@rockhead.example.com
97
97
  :publisher: Hanna Barbera, Cartoon Network
98
98
  :part-of: ABC
99
- :translated-from: DEF
99
+ :translated-from: DEF,GHI;JKL MNO,PQR
100
100
  :keywords: a, b, c
101
101
  INPUT
102
102
  <?xml version="1.0" encoding="UTF-8"?>
@@ -235,12 +235,18 @@ RSpec.describe Asciidoctor::Standoc do
235
235
  <docidentifier>ABC</docidentifier>
236
236
  </bibitem>
237
237
  </relation>
238
- <relation type="translatedFrom">
239
- <bibitem>
240
- <title>--</title>
241
- <docidentifier>DEF</docidentifier>
242
- </bibitem>
243
- </relation>
238
+ <relation type="translatedFrom">
239
+ <bibitem>
240
+ <title>GHI</title>
241
+ <docidentifier>DEF</docidentifier>
242
+ </bibitem>
243
+ </relation>
244
+ <relation type="translatedFrom">
245
+ <bibitem>
246
+ <title>PQR</title>
247
+ <docidentifier>JKL MNO</docidentifier>
248
+ </bibitem>
249
+ </relation>
244
250
  <keyword>a</keyword>
245
251
  <keyword>b</keyword>
246
252
  <keyword>c</keyword>
@@ -37,10 +37,11 @@ RSpec.describe Asciidoctor::Standoc do
37
37
  OUTPUT
38
38
  end
39
39
 
40
+ =begin
40
41
  it "processes stem blocks" do
41
42
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
42
43
  #{ASCIIDOC_BLANK_HDR}
43
- [stem]
44
+ [stem%inequality]
44
45
  ++++
45
46
  r = 1 %
46
47
  r = 1 %
@@ -51,7 +52,7 @@ RSpec.describe Asciidoctor::Standoc do
51
52
  <mml:math><mml:msub xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"> <mml:mrow> <mml:mrow> <mml:mi mathvariant="bold-italic">F</mml:mi> </mml:mrow> </mml:mrow> <mml:mrow> <mml:mrow> <mml:mi mathvariant="bold-italic">&#x0391;</mml:mi> </mml:mrow> </mml:mrow> </mml:msub> </mml:math>
52
53
  ++++
53
54
 
54
- [latexmath]
55
+ [latexmath,subsequence=A]
55
56
  ++++
56
57
  M =
57
58
  \\begin{bmatrix}
@@ -64,15 +65,14 @@ RSpec.describe Asciidoctor::Standoc do
64
65
  INPUT
65
66
  #{BLANK_HDR}
66
67
  <sections>
67
- <formula id="_">
68
- <stem type="AsciiMath">r = 1 %
69
- r = 1 %</stem>
68
+ <formula id="_" inequality="true">
69
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>r</mi><mo>=</mo><mn>1</mn><mi>%</mi><mi>r</mi><mo>=</mo><mn>1</mn><mi>%</mi></math></stem>
70
70
  </formula>
71
71
 
72
72
  <formula id="_" unnumbered="true">
73
73
  <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub> <mrow> <mrow> <mi mathvariant="bold-italic">F</mi> </mrow> </mrow> <mrow> <mrow> <mi mathvariant="bold-italic">Α</mi> </mrow> </mrow> </msub> </math></stem>
74
74
  </formula>
75
- <formula id="_">
75
+ <formula id="_" subsequence="A">
76
76
  <stem type="MathML">
77
77
  <math xmlns="http://www.w3.org/1998/Math/MathML" alttext="M=\\begin{bmatrix}-\\sin\\lambda_{0}&amp;\\cos\\lambda_{0}&amp;0\\\\&#10;-\\sin\\varphi_{0}\\cos\\lambda_{0}&amp;-\\sin\\varphi_{0}\\sin\\lambda_{0}&amp;\\cos\\varphi_{0%&#10;}\\\\&#10;\\cos\\varphi_{0}\\cos\\lambda_{0}&amp;\\cos\\varphi_{0}\\sin\\lambda_{0}&amp;\\sin\\varphi_{0}%&#10;\\end{bmatrix}" display="block">
78
78
  <mrow>
@@ -234,7 +234,7 @@ RSpec.describe Asciidoctor::Standoc do
234
234
  </standard-document>
235
235
  OUTPUT
236
236
  end
237
-
237
+ =end
238
238
  it "ignores review blocks unless document is in draft mode" do
239
239
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
240
240
  #{ASCIIDOC_BLANK_HDR}
@@ -571,7 +571,7 @@ RSpec.describe Asciidoctor::Standoc do
571
571
  it "processes examples" do
572
572
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
573
573
  #{ASCIIDOC_BLANK_HDR}
574
- [example]
574
+ [example,subsequence=A]
575
575
  ====
576
576
  This is an example
577
577
 
@@ -585,7 +585,7 @@ RSpec.describe Asciidoctor::Standoc do
585
585
  INPUT
586
586
  #{BLANK_HDR}
587
587
  <sections>
588
- <example id="_"><p id="_">This is an example</p>
588
+ <example id="_" subsequence="A"><p id="_">This is an example</p>
589
589
  <p id="_">Amen</p></example>
590
590
  <example id="_" unnumbered="true"><p id="_">This is another example</p></example>
591
591
  </sections>
@@ -652,6 +652,25 @@ RSpec.describe Asciidoctor::Standoc do
652
652
  OUTPUT
653
653
  end
654
654
 
655
+ it "processes data URI images" do
656
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
657
+ #{ASCIIDOC_BLANK_HDR}
658
+ [subsequence=A]
659
+ .Split-it-right sample divider
660
+ image::data:image/*;base64,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[alttext]
661
+
662
+ INPUT
663
+ #{BLANK_HDR}
664
+ <sections>
665
+ <figure id="_" subsequence="A">
666
+ <name>Split-it-right sample divider</name>
667
+ <image src="data:image/png;base64,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" id="_" mimetype="image/png" height="auto" width="auto" alt="alttext"/>
668
+ </figure>
669
+ </sections>
670
+ </standard-document>
671
+ OUTPUT
672
+ end
673
+
655
674
  it "accepts attributes on images" do
656
675
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
657
676
  #{ASCIIDOC_BLANK_HDR}
@@ -885,7 +904,7 @@ RSpec.describe Asciidoctor::Standoc do
885
904
  it "processes requirement" do
886
905
  input = <<~"INPUT"
887
906
  #{ASCIIDOC_BLANK_HDR}
888
- [.requirement]
907
+ [.requirement,subsequence="A"]
889
908
  .Title
890
909
  ====
891
910
  I recommend this
@@ -894,7 +913,7 @@ RSpec.describe Asciidoctor::Standoc do
894
913
  output = <<~"OUTPUT"
895
914
  #{BLANK_HDR}
896
915
  <sections>
897
- <requirement id="_"><title>Title</title>
916
+ <requirement id="_" subsequence="A"><title>Title</title>
898
917
  <description><p id="_">I recommend this</p></description>
899
918
  </requirement>
900
919
  </sections>
@@ -242,6 +242,7 @@ RSpec.describe Asciidoctor::Standoc do
242
242
  it "moves notes inside preceding blocks, if they are not at clause end, and the blocks are not delimited" do
243
243
  expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
244
244
  #{ASCIIDOC_BLANK_HDR}
245
+
245
246
  [stem]
246
247
  ++++
247
248
  r = 1 %
@@ -254,8 +255,7 @@ RSpec.describe Asciidoctor::Standoc do
254
255
  INPUT
255
256
  #{BLANK_HDR}
256
257
  <sections><formula id="_">
257
- <stem type="AsciiMath">r = 1 %
258
- r = 1 %</stem>
258
+ <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>r</mi><mo>=</mo><mn>1</mn><mi>%</mi><mi>r</mi><mo>=</mo><mn>1</mn><mi>%</mi></math></stem>
259
259
  <note id="_">
260
260
  <p id="_">That formula does not do much</p>
261
261
  </note></formula>
@@ -774,7 +774,7 @@ r = 1 %</stem>
774
774
  #{NORM_REF_BOILERPLATE}
775
775
  <bibitem id="iso123" type="standard">
776
776
  <title format="text/plain">Standard</title>
777
- <docidentifier>ISO 123:—</docidentifier>
777
+ <docidentifier>ISO 123:–</docidentifier>
778
778
  <date type="published">
779
779
  <on>--</on>
780
780
  </date>
@@ -988,8 +988,8 @@ r = 1 %</stem>
988
988
  #{NORM_REF_BOILERPLATE}
989
989
  <bibitem type="standard" id="IEC60050-102">
990
990
  <title type="title-main" format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary (IEV)</title>
991
- <title type="title-part" format="text/plain" language="en" script="Latn">Part 102: Mathematics - General concepts and linear algebra</title>
992
- <title type="main" format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary (IEV) - Part 102: Mathematics - General concepts and linear algebra</title>
991
+ <title type="title-part" format="text/plain" language="en" script="Latn">Part 102: Mathematics – General concepts and linear algebra</title>
992
+ <title type="main" format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary (IEV) Part 102: Mathematics – General concepts and linear algebra</title>
993
993
  <uri type="src">https://webstore.iec.ch/publication/160</uri>
994
994
  <uri type="obp">/preview/info_iec60050-102%7Bed1.0%7Db.pdf</uri>
995
995
  <docidentifier type="IEC">IEC 60050-102:2007</docidentifier>
@@ -1023,9 +1023,9 @@ r = 1 %</stem>
1023
1023
  </owner>
1024
1024
  </copyright>
1025
1025
  </bibitem><bibitem type="standard" id="IEC60050-103">
1026
- <title type="title-main" format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary (IEV)</title>
1027
- <title type="title-part" format="text/plain" language="en" script="Latn">Part 103: Mathematics - Functions</title>
1028
- <title type="main" format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary (IEV) - Part 103: Mathematics - Functions </title>
1026
+ <title type="title-main" format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary (IEV)</title>
1027
+ <title type="title-part" format="text/plain" language="en" script="Latn">Part 103: Mathematics – Functions</title>
1028
+ <title type="main" format="text/plain" language="en" script="Latn">International Electrotechnical Vocabulary (IEV) Part 103: Mathematics – Functions</title>
1029
1029
  <uri type="src">https://webstore.iec.ch/publication/161</uri>
1030
1030
  <uri type="obp">/preview/info_iec60050-103%7Bed1.0%7Db.pdf</uri>
1031
1031
  <docidentifier type="IEC">IEC 60050-103:2009</docidentifier>
@@ -1163,7 +1163,7 @@ r = 1 %</stem>
1163
1163
  INPUT
1164
1164
  #{BLANK_HDR}
1165
1165
  <sections>
1166
- <stem type="MathML">/www.w3.org/1998/Math/MathML”&gt;<mfrac><mn>1</mn><mi>r</mi></mfrac></stem>
1166
+ <stem type="MathML"><math><mfrac><mn>1</mn><mi>r</mi></mfrac></math></stem>
1167
1167
  </sections>
1168
1168
 
1169
1169
 
@@ -45,12 +45,10 @@ EOS
45
45
  ISO_124_DATED = <<~EOS
46
46
  <bibdata type="standard">
47
47
  <fetched>#{Date.today}</fetched>
48
- <title type="title-intro" format="text/plain" language="en" script="Latn">Latex, rubber</title>
49
- <title type="title-main" format="text/plain" language="en" script="Latn">Determination of total solids content</title>
50
- <title type="main" format="text/plain" language="en" script="Latn">Latex, rubber - Determination of total solids content</title>
51
- <title type="title-intro" format="text/plain" language="fr" script="Latn">Latex de caoutchouc</title>
52
- <title type="title-main" format="text/plain" language="fr" script="Latn">Détermination des matières solides totales</title>
53
- <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc - Détermination des matières solides totales</title>
48
+ <title type="title-main" format="text/plain" language="en" script="Latn">Latex, rubber – Determination of total solids content</title>
49
+ <title type="main" format="text/plain" language="en" script="Latn">Latex, rubber – Determination of total solids content</title>
50
+ <title type="title-main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc Détermination des matières solides totales</title>
51
+ <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc – Détermination des matières solides totales</title>
54
52
  <uri type="src">https://www.iso.org/standard/61884.html</uri>
55
53
  <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:61884:en</uri>
56
54
  <uri type="rss">https://www.iso.org/contents/data/standard/06/18/61884.detail.rss</uri>
@@ -109,13 +107,12 @@ EOS
109
107
  ISO_123_UNDATED = <<~EOS
110
108
  <bibdata type="standard">
111
109
  <fetched>#{Date.today}</fetched>
112
- <title type="title-intro" format="text/plain" language="en" script="Latn">Rubber latex</title>
113
- <title type="title-main" format="text/plain" language="en" script="Latn">Sampling</title>
114
- <title type="main" format="text/plain" language="en" script="Latn">Rubber latex - Sampling</title>
115
- <title type="title-intro" format="text/plain" language="fr" script="Latn">Latex de caoutchouc</title>
116
- <title type="title-main" format="text/plain" language="fr" script="Latn">Échantillonnage</title>
117
- <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc - Échantillonnage</title>
110
+ <title type="title-main" format="text/plain" language="en" script="Latn">Rubber latex – Sampling</title>
111
+ <title type="main" format="text/plain" language="en" script="Latn">Rubber latex – Sampling</title>
112
+ <title type="title-main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc – Échantillonnage</title>
113
+ <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc – Échantillonnage</title>
118
114
  <uri type="src">https://www.iso.org/standard/23281.html</uri>
115
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
119
116
  <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
120
117
  <docidentifier type="ISO">ISO 123</docidentifier>
121
118
  <docnumber>123</docnumber>
@@ -151,13 +148,12 @@ EOS
151
148
  <relation type="instance">
152
149
  <bibitem type="standard">
153
150
  <fetched>#{Date.today}</fetched>
154
- <title type="title-intro" format="text/plain" language="en" script="Latn">Rubber latex</title>
155
- <title type="title-main" format="text/plain" language="en" script="Latn">Sampling</title>
156
- <title type="main" format="text/plain" language="en" script="Latn">Rubber latex - Sampling</title>
157
- <title type="title-intro" format="text/plain" language="fr" script="Latn">Latex de caoutchouc</title>
158
- <title type="title-main" format="text/plain" language="fr" script="Latn">Échantillonnage</title>
159
- <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc - Échantillonnage</title>
151
+ <title type="title-main" format="text/plain" language="en" script="Latn">Rubber latex – Sampling</title>
152
+ <title type="main" format="text/plain" language="en" script="Latn">Rubber latex – Sampling</title>
153
+ <title type="title-main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc – Échantillonnage</title>
154
+ <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc – Échantillonnage</title>
160
155
  <uri type="src">https://www.iso.org/standard/23281.html</uri>
156
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
161
157
  <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
162
158
  <docidentifier type="ISO">ISO 123:2001</docidentifier>
163
159
  <docnumber>123</docnumber>
@@ -214,13 +210,12 @@ EOS
214
210
  ISO_123_DATED = <<~EOS
215
211
  <bibdata type="standard">
216
212
  <fetched>#{Date.today}</fetched>
217
- <title type="title-intro" format="text/plain" language="en" script="Latn">Rubber latex</title>
218
- <title type="title-main" format="text/plain" language="en" script="Latn">Sampling</title>
219
- <title type="main" format="text/plain" language="en" script="Latn">Rubber latex - Sampling</title>
220
- <title type="title-intro" format="text/plain" language="fr" script="Latn">Latex de caoutchouc</title>
221
- <title type="title-main" format="text/plain" language="fr" script="Latn">Échantillonnage</title>
222
- <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc - Échantillonnage</title>
213
+ <title type="title-main" format="text/plain" language="en" script="Latn">Rubber latex – Sampling</title>
214
+ <title type="main" format="text/plain" language="en" script="Latn">Rubber latex – Sampling</title>
215
+ <title type="title-main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc – Échantillonnage</title>
216
+ <title type="main" format="text/plain" language="fr" script="Latn">Latex de caoutchouc – Échantillonnage</title>
223
217
  <uri type="src">https://www.iso.org/standard/23281.html</uri>
218
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:23281:en</uri>
224
219
  <uri type="rss">https://www.iso.org/contents/data/standard/02/32/23281.detail.rss</uri>
225
220
  <docidentifier type="ISO">ISO 123:2001</docidentifier>
226
221
  <docnumber>123</docnumber>
@@ -367,7 +362,7 @@ EOS
367
362
  db = Relaton::Db.new "#{Dir.home}/.relaton/cache", nil
368
363
  entry = db.load_entry("ISO(ISO 123:2001)")
369
364
  expect(entry).to include("<fetched>#{Date.today.to_s}</fetched>")
370
- expect(entry).to be_equivalent_to(ISO_123_DATED)
365
+ expect(entry).to be_equivalent_to(ISO_123_DATED)
371
366
 
372
367
  FileUtils.rm_rf File.expand_path("~/.relaton/cache")
373
368
  FileUtils.rm_rf File.expand_path("~/.iev/cache")
@@ -556,7 +551,7 @@ EOS
556
551
  entry = db.load_entry("ISO(ISO 124:2014)")
557
552
  #expect(db.fetched("ISO(ISO 124:2014)")).to eq(Date.today.to_s)
558
553
  expect(entry).to include("<fetched>#{Date.today.to_s}</fetched>")
559
- expect(entry).to be_equivalent_to(ISO_124_DATED)
554
+ expect(entry).to be_equivalent_to(ISO_124_DATED)
560
555
 
561
556
  FileUtils.rm_rf File.expand_path("~/.relaton/cache")
562
557
  FileUtils.mv File.expand_path("~/.relaton-bib.pstore1"), File.expand_path("~/.relaton/cache"), force: true
@@ -590,7 +585,7 @@ EOS
590
585
  entry = db.load_entry("ISO(ISO 123)")
591
586
  #expect(db.fetched("ISO(ISO 123)")).to eq(Date.today.to_s)
592
587
  expect(entry).to include("<fetched>#{Date.today.to_s}</fetched>")
593
- expect(entry).to be_equivalent_to(ISO_123_UNDATED)
588
+ expect(entry).to be_equivalent_to(ISO_123_UNDATED)
594
589
 
595
590
  FileUtils.rm_rf File.expand_path("~/.relaton/cache")
596
591
  FileUtils.mv File.expand_path("~/.relaton-bib.pstore1"), File.expand_path("~/.relaton/cache"), force: true
@@ -665,9 +660,9 @@ EOS
665
660
  EOS
666
661
 
667
662
  Asciidoctor.convert(input, backend: :standoc, header_footer: true)
668
- expect(db.load_entry("ISO(ISO 123:2001)")).to include("Rubber latex - Sampling")
663
+ expect(db.load_entry("ISO(ISO 123:2001)")).to include("Rubber latex")
669
664
  expect(db.load_entry("ISO(ISO 124)")).to include("Latex, rubber -- Determination of total solids content")
670
- expect(localdb.load_entry("ISO(ISO 123:2001)")).to include("Rubber latex - Sampling")
665
+ expect(localdb.load_entry("ISO(ISO 123:2001)")).to include("Rubber latex")
671
666
  expect(localdb.load_entry("ISO(ISO 124)")).to include("Latex, rubber -- Replacement")
672
667
 
673
668
  FileUtils.rm_rf File.expand_path("~/.relaton/cache")