metanorma-standoc 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,iVBORw0KGgoAAAANSUhEUgAAAM4AAAAjCAYAAADcxTWYAAAAAXNSR0IArs4c6QAAExZJREFUeAHtnQmYVcWVx6t3oGn2xRVwQUEQIiKi0YgGVNxmjBCXQcOHkTiaxIwy6mSMqKhJXJKMcUky7kZjBDUoKsEIqIggLsEFUFFAFGSHpmm2Xub3v30LDuW7bwEUP+ed7/u9OudU3br3VtWpqnvfoykYdN2zbgekEccOgZOhNzSHDTAbJsBfYS5sl2wsLHVF9bXu5x/e4w6oWuBWl1RsVz35g3ZtC7TYvNZ90LSju7Hz+a62oMiV1W3atRe0E85evAN1DOLY38GeQR0a3W3hO3A93AL/CXnJt8A3pgUKt/NOruG40WCDZjn2HPgErIzAmAQ7EqS2vryeb4Fd3gLbEzjncdUjzZVPQz8DOkBX6Ai94G7w0g/lOW/k0/9/LVDvClz9N+i2cw2cPbj3B8z9/x79CHgC1hv/W+gXwCnG1x/9QmNnVNXYRfV1rhF7YukZZBj5U+EhaJahbD77K2wBhUxdQSHPN8Wu8Ivho628+u2aFJfUHt898DLcCV+bh9xct092pZnEjfwU0skzZJ4JekkguRm0EtXIyCQl9TXRC4GlpS1dl7Xz3OrSCldQn3Le6kNdamCJAnkzKJDy8jVoAb3kabNplWtaW+1WljR3JXXqnkiG83lZrKvfPoSHY1vJ/XCiFOQoKIcfyNjVkuuK831zwUONnk59jMwZcYGmpIelK2zzigmc9UVl7qXWh0YrTiGrT4Joa2jlEGvk9V3bAtVFjVyn6kWuz6p33MrSZs70Y9/gyg4O7P0Cu3Ng7zIzl8DRstkivtIppJ/kcNX3mrLnous1dkbR9qwtM9UrrXq6N1t0ce02rkzasq0LKqsM7Ly5C1tA/biuqLE7ZckUt9f6Ja6ypKnfeIf9VBVcprb2H8c+vXi6OMjfZWY2gaOHix5wpbnK542ejbrAFPp3dAXdS6Bt20Wg+lNKWe0mV1XcxE1oe4Qrrqtlj5xy1Um5f0tZYd75lbeAnnG0RetcNd+dsOxVtwI9flUQ9ltoT+RiteponOrFk56dvxaS9IxTwtXpe5qB8B3oCFZy/QZry6Y2rqQtqTgazo9975E+DrfDstgXPVTutmGFm9ymtxuwbJrrtWaOW1zWxje8LxamPrr2IkPPYd2gFObDeNB5kmQwGXqpMRN+ExfSPlzB/Td4MvbZpA3GEDgUdoMa+BT0UPsQhAMCV7R3P5v0Y7hWjkBaYf8KtMqPjiHZRrpjjYBVcDmE7XwGvgGg3YLaxE9Yuo9U14Q7Ep17GPQG3Vs1zAVdx6uQJLofPZO8AbfFha4gPajA1Y1eU1Ix7rhlr7mJrQ9z64obu8a1G+IiaZOzyNV9zoCxKUqOwtcB7oUX4/yhpBq7rWE5yH8XpBP12w9B2/zmsBKmw++gFtQON4Bi46owcPbG+TM4E/aEJGmWlJHgX2L8i9BXw0HGJ1WDW/wHqDFuhkjK6je56qI2bnz7I92hq2dHq06Gt2zzOPC78BQ0iSrZ+qHGeQHOgaVb3ZGmB9THjE9ve9Qpt8S+80i/BQoqL/+NosFR4R0m1blGwi/gEePXQHjO2OrcO4wt9Vk4PPYpmHVt02JbSRloEDeVgWhWviTSGq7lafRjYtsm6l/tANTG99iMWB9OehNo8ISivnkAhoYZ2DqXv0e1k9quCyj4tTU7b01xRfcO6z9/r8faD93f2UFkETjqo4d1fCyaBP7hDdJr4arY1jn3j+2hsc8nGs+DQMGUatK/GP+voRysqN0vhCGgPj4dJH3U2F4uRfkAlNqg0Yk00MZAHUhoh5zEBtokjlSAdAa9bFCAvA1eNADVcX/0jjrGRPuNK9y0lj3cm827upabKn1WUno8GWrgJgkFFFQzoDTIl9/K/RgPWge6BoMXder1kCpofJl9UVRuhHeQ2jrkvtjkSe0IPmh81o+9Eqe6Rx80cimgvSQFjc9X/XeDrs2KVi21e6qg8eV+gDLZGybVoLbyEMY2gVlfUNBZLwaa1GxgJ1FkyybpGuhWjrEG+imBrT4dGvi8eRzK771h0mHot0O58VlVwTgNfNAor1uhPhF17K3QSEYs40jVSJ2gPyigfHkN+J/A7pBOvk2mZlJ1pJdesTKXdDSos3rCkaDg9DIc5V+9od83rS6ucO822881ybzE28BX0OteNvq64rQD6X2Bb31gH4itmd3LbBQFpORXcE6kbf1Yh/oivL7VtUW7Ge2k2BpPavcpXbE7x3lKBhndqwoUK6dZA/2p2FbA2QGm61FfaWWcDlZsm6gPNOtaUdtdDQoyK6r/KutArw5sTQ6lxvcOb0knb+At6eeN2mT7e7W15nipal8ra6yB3jK25deEH4rGlJ3k9sLeJrjjA7SS/wmeie0wqVIgqFHtAHgUuzecCg/CYpC0akiiz335vA3mgwbJX+AGuAZ+CxqoH8EUuAj8DaFu8wWqbC+62MGgJdfLJV7R1qyElwPLylq6TUUlWPU+KyldRIYGkYJe97IP+EGPGonuu2OsK/ErqnFF6kQ+NVl0hxWgBr8CrNyJ0Qn6wWHQB+aAlf+NjSrSv9kM9FOMbfvDu9ui6H68nOyVONUML/luQ7LlcxTa7XAj9AUNeulHwWfg5S6vxOkvSdV2Ov4COAFqwct1KE29QZrUds+TN7iuoKBH240rV/+z+YHujeZdXIvNlebQRDWsM5Ot4D0d1D/q17shFPWLlx97JU51f4PgSPgRqE/UlwvBSn0hlga8RCc9A86GNyCUd3FcCB+YjFL0Q+Es+DmMBO2h1akKLitjMLSdCGc1W0a63V7ZWTnaICa8VQvrkH0ivGYyFqMPgE+NT6oaJ52MI1ODUauj77ifBgdocFwMy41/BroG6jrj2wNddUnCgeqvow15vaISX/zwK7Dqtau9VpWlcfFwRD6E/1LoEOe/RKrV55XYVtIJjpASy+uk6k8rEzBGGUcB+kBjp1KfwHk8jNEb0Xo2LOPbHcl3c42iSTDVATvou5XjNSFVweeggF8CVuxjw5E2A13t8njgU1tofG8jCpyK2KNlWzeaJIrGP8KBcCrcAXMhSTTo1aEjoDMMhpmQJAq0MfAHU+Amr2uFqeFnG+03rHSltZux1G+J8hY57yTkaiBZ2d8agb4e+/uBT6Yf/D7rN14JUm0ZwvP5VUMDeIUprxVAoqDwonwb6JqQJGp/K/YcCnArCrBbYT48A0MgFE1+VtTXCpzrDdeiaztnpZs1Al0Txpny8WzDM+pKN7V1z+g7ud14XmUFCorvFNNOBr7CN7wSp3bV3C3IGxvY3pyKssobSovhOdDM0RIUnVfCn2EzJIlmYSHZD9Q5bUGrhU6g2W8BLIN0Uk6mZiQF1VlgW/MW7EkQyYbCMtdq0xrXvfIjvtdp7N1J6UdJGfjnB3ltAtua0zEUPKE0DRx2cAdZblbgaGHsx9GHx3Yp6f5gV5snsR+Al0FyMOwFXWXEoglP/eVFfTgM7vWOOFXbnhRzEana+xOQtG9ItnwejiYySboxokFcowqK6xp+AfJcu2+7zfxerQT7SwqcVNdbHzitbYNIxQqDstYsskYxhhr5A6iAdqAGHwUKjKfhbVgISaJBmm6g2uNU/76gTlHA9IFw4G7Cp63FHRCJ3sQsKWvtBi6d4npWvu8WN1KMppVWaXJ1n1aqrBHocwPbm37L5u2wTu9XGgbZBpP5CLoPHLlvho5SYplBOsUbcap2OcT41E8KHiv3YcyGq0HtvE2nYx8Bqncf0OCpBitrMUpirF+6AlD3PxPugSTRmIpEP9JdzAuB+U324Nmm6ssMGo3nUMJ7t/mLMLoYh2JhhLG9ejqK3eJFK472gprJ7ob+INkTfhSjRlInqCE+BZVfDFpV1oEGukSRrAsvAw1cBcQeoFG+GyhgDoBSSCXLcT4It8ECW0BvYprVVLmB/GSjhteYmq0SfuzpD+uLousIB5TyB+vDyDbnMn6pdpDbrFkYYYO/agsYfZDRpb5n7BfRtSqrjST+GabBaviyVvpEOC52nhanPvmzV4J0GrZWmL1B/SrdXov858BDMAesaMI4DDTRFZoMBVSlsdOpW9pekVbA6NBvD7N4qZOuzp2dZ9tVdV8Gn8EfYD1IzoD7pVjRQJdo8AwAFRoOx4MXNVy3GO/bWekaKpoMz8AjsA62Eb/anPr5i+6w1bPcwsbtMwWNjm8CekgcKMPIVeha7axMskagJ81WatjvmbI/RH8BHjU+qddCL+OrRR9nbKlaHS4PfDLfhU9i/1hSHzixK0rUuWo7K8diCA2KybAQdA6h9ngWvGjClLwJ6ovmMpBDoDdMlxHIydg6r+pPJ1varp5SCphCftme4dk0XX1fRt6dVDoquryttet59UrQQrE77AdfEB84PuNxFNEJjoEToAfsAxqMOyLzObgaPgZ1yEswE9RhibKxqNRV1Kxz/fm5zabCkqjhU8xaBSkqOBHfLNBKqo7+F9D9WHkfI9XgsGVS6c/j1MDubjL/gn4W/B20zRkER4OVazHCyUHBdrktFOtjje8p9P8xtlc1OdjnjA7YfkD/Al1BpYBRO2sFOBSszI4N7Ro0WO4ymVqxRoLq0Dk0AVwC3wLJ+XBvpH15H6n6dWeebRWVaQV/Oqi0HbbwshBFbeSDqDAMHF9wPop4ACStoTNoC9cSloL27n2gGTQCNe4aWAGSKtCFaSuiAar8eZC1KECWlrVyA5ZOc4eseZ8vzlonLfWNEyrtiv/WhDy5zwzywueR0LbFB2K8B7p/LwpOkUqewzkqRcZb+D4Dta2VJ40xH13n0spv5Q5roIcDTauDSCX1OMeYDK2iao9+xqdAF6nEDyKfF7ZVuc9Ik9q2U7HwmEx2RVB3qnEQ1hEuAOOoQ8FzCxwQ1CfzMdCOQhOJl7qkwPEFfKpg8AEhX1+ohp/JyEJ0UdrajIAnsigfFdEbmPKa9e645a9hN/wrwoRnG+3JrWj2Xw4/sU6jK4i1OmgmtjLHGuiaaZLkUzJ6w+NwcFKh2P8w6ZA0ZbQqanb3sgzlDW/EqVaD241vNforxpa6ALTdvhU6QToZRObaoMCx2Lof9VU6mUDmL4MCYdupfbZItFXjnUKwVdOEasVvTb3vI6/E6fwUtiZvL6n6a4XPjFPteELRiiM0JvqCAnoVvADPguSghiT6rCw66Nh/M3ZWqhr3ZTgPKsFHoiJb25RfgzpwFkhag7YUWqkU2TdAVlLNv+HQb9ROXzyJFwKFvBhIjHOtZAqGTqABp5lzHHwOzaEtaIbVvvWvcA68CqHomnWdbWASXA7a4iTJSjI0oBdBCbQCP+vpmnQNl4EGcjqZSmZX0CyuthsM2ww8bK1M6jyV0QBTmVQDZTb+O0Hn1/ZCuwGtBrWgQaMBcgFoUKQSzbCaUApBbVEBkqUwEUbClaC6rbyNoXZWG/wD/guiMqXRP0hsFP3CXS96ZMfyGuk+oLGjfrkR6sDLDJROoPzRoGCtBy+aOA4B3dtNoDpCmY6jJ+ikKqN6QumGYxm8C+NhLEyAD0GiYw6KtIaP6QXb8XfVNAgujSu5glQXI+kHk6Qg6pT+kdawfVCjdo/tPqQzYj1ton/81Hrzanf1+39yLfmJhuztFHWmom7pdh6f7WHlFNwbFGwauLlKOw7IdI0anOrkXET1SjLV3VBq62cRaidQqoBON4mQnVrKa9dH/x7nugOHR6nsr4loZXkGjgJNTE+BJtTFoImjMwyDE8HK2YlTuC0V6P7hUG5FphfbGuu8k1QzxBjwgfM99KwCR6uMfqqhH3VK3wHRyvBViO57zg6cKJuBnWvQ6HKyqTfVZWsm/yhVxjfE14v7UNBItHKJTDKTAo/mOhq17fEnUlR+YM5SafRSo0t9zNiDjJ5WLeWLM/2oc1lpK744W8tfScn1ctNWn8/Mt8DbNMFrOTTDZMpG4z/XkXg0B/qgmIJu95vV2F60r7aifbcuUrI/9I60DB+NCZzK4qbuvg6nRT/VKGflCR4uM9SQz863QNoW0E7kcDgb7oN3YDnoeVnPWmthLmhndS4cC1UQ7fuVZit6PvEyzStxqm2KHgYVWE1in01GY/SIHWeSvm4zU+l1Tj8OXBH9MPCJ3Y9z5y582s0r3zubL0BTVZf35VsgqQUeJUNINOm3BD3GaBe1Br4gua44ijgvL3slTvWM41ed8iBP5hPGp1d5WZ1brzHbblrtHtnrJDeTf/3ZZuOqbZY5U2dezbfAzmiBDVSixxC9sUwZNDpJVoNXBRGtJP75RrbfekmXKHD8S4FUK84s8vU6VNIaCiItw4e2Zs35YeDy0hbuyd378Xsn/tJN6j9KmKGmfHa+BXZeC+QSOHrDMjU+9W9Jw1eT2hPaFUffa4TSH8dI6AeqLyvRS4Fm/OxmCX/dRv/Vh4InL/kW2JUtoH1ctqLRegzotfI/Ew7SqiNpCtqu6dttK/MwrrOOXPRS/nSq/vZwbXaLVS5V58vmWyCnFshlxVHFNZAUNMr3zzbaqqVacVRmuyXFjzu3u678gfkW2JEWyDVwMp3rLgqsAr2h+Kq+dMx0Tfn8fAvs9Bb4P/RCZMfd+bNlAAAAAElFTkSuQmCC" 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")