metanorma-utils 1.4.4.1 → 1.4.5
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.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +3 -0
- data/lib/utils/image.rb +5 -3
- data/lib/utils/main.rb +1 -0
- data/lib/utils/version.rb +1 -1
- data/lib/utils/xml.rb +35 -12
- data/metanorma-utils.gemspec +1 -1
- data/spec/img_spec.rb +37 -3
- data/spec/utils_spec.rb +3 -4
- data/spec/xml_spec.rb +14 -1
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf98f7674d114f222187c3da69bd8c436990eaec0a9a988402afdd8e178fe2e8
|
4
|
+
data.tar.gz: fecee536903d05211404268e2408c983c32332aabdfaac56de813d7a7fdc8eef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2f07346a598463eeb74fabb69e930ce7bb343a72e574303d3a22517532d421bb2df84733bcebd846bfce69b20d9cb1ee798d917dadcfe44f46920606a9b64c8
|
7
|
+
data.tar.gz: 8cb5b3a0b22c94d6945002d2735e4babc9809056bd14e26b396ec3d03391d5867829e21fad78955cca7c62cb876c56adb9d896feb53957c9c3da74dcd400bfa3
|
@@ -18,6 +18,9 @@ jobs:
|
|
18
18
|
uses: metanorma/ci/.github/workflows/rubygems-release.yml@main
|
19
19
|
with:
|
20
20
|
next_version: ${{ github.event.inputs.next_version }}
|
21
|
+
release_command: rake release
|
22
|
+
bundler_cache: false
|
23
|
+
post_install: gem install bundler rake rspec
|
21
24
|
secrets:
|
22
25
|
rubygems-api-key: ${{ secrets.METANORMA_CI_RUBYGEMS_API_KEY }}
|
23
26
|
pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
|
data/lib/utils/image.rb
CHANGED
@@ -127,12 +127,14 @@ module Metanorma
|
|
127
127
|
# Check whether just the local path or the other specified relative path
|
128
128
|
# works.
|
129
129
|
def datauri(uri, local_dir = ".")
|
130
|
-
return uri if datauri?(uri) || url?(uri)
|
130
|
+
return uri if datauri?(uri) || url?(uri)
|
131
131
|
|
132
|
-
|
132
|
+
options = absolute_path?(uri) ? [uri] : [uri, File.join(local_dir, uri)]
|
133
|
+
path = options.detect do |p|
|
133
134
|
File.exist?(p) ? p : nil
|
134
135
|
end
|
135
|
-
|
136
|
+
|
137
|
+
unless path
|
136
138
|
warn "Image specified at `#{uri}` does not exist."
|
137
139
|
return uri # Return original provided location
|
138
140
|
end
|
data/lib/utils/main.rb
CHANGED
data/lib/utils/version.rb
CHANGED
data/lib/utils/xml.rb
CHANGED
@@ -6,12 +6,19 @@ require "nokogiri"
|
|
6
6
|
|
7
7
|
module Metanorma
|
8
8
|
module Utils
|
9
|
-
NAMECHAR = "\u0000-\u002c\u002f\u003a-\u0040\\u005b-\u005e"\
|
10
|
-
"\u0060\u007b-\u00b6\u00b8-\u00bf\u00d7\u00f7\u037e"\
|
11
|
-
"\u2000-\u200b"\
|
9
|
+
NAMECHAR = "\u0000-\u002c\u002f\u003a-\u0040\\u005b-\u005e" \
|
10
|
+
"\u0060\u007b-\u00b6\u00b8-\u00bf\u00d7\u00f7\u037e" \
|
11
|
+
"\u2000-\u200b" \
|
12
12
|
"\u200e-\u203e\u2041-\u206f\u2190-\u2bff\u2ff0-\u3000".freeze
|
13
|
-
NAMESTARTCHAR = "\\u002d\u002e\u0030-\u0039\u00b7\u0300-\u036f"\
|
13
|
+
NAMESTARTCHAR = "\\u002d\u002e\u0030-\u0039\u00b7\u0300-\u036f" \
|
14
14
|
"\u203f-\u2040".freeze
|
15
|
+
NOKOHEAD = <<~HERE.freeze
|
16
|
+
<!DOCTYPE html SYSTEM
|
17
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
18
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
19
|
+
<head> <title></title> <meta charset="UTF-8" /> </head>
|
20
|
+
<body> </body> </html>
|
21
|
+
HERE
|
15
22
|
|
16
23
|
class << self
|
17
24
|
def to_ncname(tag, asciionly: true)
|
@@ -31,14 +38,6 @@ module Metanorma
|
|
31
38
|
node.nil? || node.id.nil? || node.id.empty? ? "_#{uuid}" : node.id
|
32
39
|
end
|
33
40
|
|
34
|
-
NOKOHEAD = <<~HERE.freeze
|
35
|
-
<!DOCTYPE html SYSTEM
|
36
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
37
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
38
|
-
<head> <title></title> <meta charset="UTF-8" /> </head>
|
39
|
-
<body> </body> </html>
|
40
|
-
HERE
|
41
|
-
|
42
41
|
# block for processing XML document fragments as XHTML,
|
43
42
|
# to allow for HTMLentities
|
44
43
|
# Unescape special chars used in Asciidoctor substitution processing
|
@@ -55,12 +54,36 @@ module Metanorma
|
|
55
54
|
end
|
56
55
|
end
|
57
56
|
|
57
|
+
def noko_html(&block)
|
58
|
+
doc = ::Nokogiri::XML.parse(NOKOHEAD)
|
59
|
+
fragment = doc.fragment("")
|
60
|
+
::Nokogiri::XML::Builder.with fragment, &block
|
61
|
+
fragment.to_xml(encoding: "US-ASCII").lines.map do |l|
|
62
|
+
l.gsub(/\s*\n/, "")
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def to_xhtml_fragment(xml)
|
67
|
+
doc = ::Nokogiri::XML.parse(NOKOHEAD)
|
68
|
+
doc.fragment(xml)
|
69
|
+
end
|
70
|
+
|
58
71
|
def ns(xpath)
|
59
72
|
xpath.gsub(%r{/([a-zA-z])}, "/xmlns:\\1")
|
60
73
|
.gsub(%r{::([a-zA-z])}, "::xmlns:\\1")
|
61
74
|
.gsub(%r{\[([a-zA-z][a-z0-9A-Z@/-]* ?=)}, "[xmlns:\\1")
|
62
75
|
.gsub(%r{\[([a-zA-z][a-z0-9A-Z@/-]*[/\[\]])}, "[xmlns:\\1")
|
63
76
|
end
|
77
|
+
|
78
|
+
def numeric_escapes(xml)
|
79
|
+
c = HTMLEntities.new
|
80
|
+
xml.split(/(&[^ \r\n\t#;]+;)/).map do |t|
|
81
|
+
if /^(&[^ \t\r\n#;]+;)/.match?(t)
|
82
|
+
c.encode(c.decode(t), :hexadecimal)
|
83
|
+
else t
|
84
|
+
end
|
85
|
+
end.join
|
86
|
+
end
|
64
87
|
end
|
65
88
|
end
|
66
89
|
end
|
data/metanorma-utils.gemspec
CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_dependency "asciidoctor", ">= 2"
|
28
28
|
spec.add_dependency "concurrent-ruby"
|
29
|
+
spec.add_dependency "csv"
|
29
30
|
spec.add_dependency "htmlentities", "~> 4.3.4"
|
30
31
|
spec.add_dependency "marcel", "~> 1.0.0"
|
31
32
|
spec.add_dependency "mime-types"
|
@@ -37,7 +38,6 @@ Gem::Specification.new do |spec|
|
|
37
38
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
38
39
|
spec.add_development_dependency "guard", "~> 2.14"
|
39
40
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
40
|
-
spec.add_development_dependency "metanorma-standoc", "~> 2.0"
|
41
41
|
spec.add_development_dependency "rake", "~> 13.0"
|
42
42
|
spec.add_development_dependency "rspec", "~> 3.6"
|
43
43
|
spec.add_development_dependency "rubocop", "~> 1.5.2"
|
data/spec/img_spec.rb
CHANGED
@@ -2,6 +2,38 @@ require "spec_helper"
|
|
2
2
|
require "fileutils"
|
3
3
|
|
4
4
|
RSpec.describe Metanorma::Utils do
|
5
|
+
context "recognises data uris" do
|
6
|
+
it "where the content is an existing file at a relative path" do
|
7
|
+
expect(Metanorma::Utils.datauri("spec/fixtures/rice_image1.png"))
|
8
|
+
.to eq Metanorma::Utils.encode_datauri("spec/fixtures/rice_image1.png")
|
9
|
+
end
|
10
|
+
|
11
|
+
it "where the content is an existing file at an absolute path" do
|
12
|
+
expect(Metanorma::Utils.datauri(File.expand_path("spec/fixtures/rice_image1.png")))
|
13
|
+
.to eq Metanorma::Utils.encode_datauri("spec/fixtures/rice_image1.png")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "where the content is a relative file path pointing to a bogus file" do
|
17
|
+
expect(Metanorma::Utils.datauri("spec/fixtures/bogus.png"))
|
18
|
+
.to eq "spec/fixtures/bogus.png"
|
19
|
+
end
|
20
|
+
|
21
|
+
it "where the content is an absolute file path pointing to a bogus file" do
|
22
|
+
expect(Metanorma::Utils.datauri("D:/spec/fixtures/bogus.png"))
|
23
|
+
.to eq "D:/spec/fixtures/bogus.png"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "where the content is a data/image URI" do
|
27
|
+
expect(Metanorma::Utils.datauri("data1:img/gif,base64,ABBC"))
|
28
|
+
.to eq "data1:img/gif,base64,ABBC"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "where the content is an URL" do
|
32
|
+
expect(Metanorma::Utils.datauri("https://example.com/image.png"))
|
33
|
+
.to eq "https://example.com/image.png"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
5
37
|
it "recognises data uris" do
|
6
38
|
expect(Metanorma::Utils.datauri?("data:img/gif,base64,ABBC"))
|
7
39
|
.to eq true
|
@@ -306,10 +338,12 @@ RSpec.describe Metanorma::Utils do
|
|
306
338
|
it "generates data uris" do
|
307
339
|
expect(Metanorma::Utils.datauri("data:xyz")).to eq "data:xyz"
|
308
340
|
expect(Metanorma::Utils.datauri("spec/fixtures/rice_image1.png")).to be_equivalent_to "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAYAAACAvzbMAAAABmJLR0QA/wD/AP+gvaeTAAAEzUlEQVR4nO3dz4tVZRzH8fedacogMCjHoiBop1RaOzF/QAv7QUIYZdCq/oQo+hdC10FRbVtVBC0r09y0iZAmoVwWRRaMBZlKnhZ3UlEwnVFnhvt6wQPnnnOeh8/m8r0P9zznKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC42HT1RPVOdbT6c6Edrd5euDa9bOkAWJF2V3PVUA2jGtbfPG6jhXMLba56ahlzArBCTFf7q2GqhhfXNxzY3HB6R8Owc9xO72j4fHPDC7Pjexq3fZmNMOFGyx0Altn+6pV1Mw0fPtDo0bWXv/nLE7Xn24bjZxot9H31BmSEFUkBYZLtrj6+c6bhq0ca3X/rlXU6drK2fN3w27iIPF19ch0zwoqlgDCpbqqOTNWGgw/X/808LnZovnZ+U0N9Vz1Ynb0OGWFFm1ruALBMdlUb9q6/+uJRtf32en62qo2Nn86CiaOAMKmerXr5rsUP8NLd5w6fWXIaWIUUECbV1qqti5h9/Gfb+b7blpwGViEFhEl177qZumUJ34A1U3XHTFX3XKNMsKooIAAsigLCpPrx+Jk6tYRnp/4+W7+fqeqna5QJVhUFhEl1uOrwicUPcGj+/OGS08AqpIAwqT6oevfnxQ/w3i/nDj9achpYhSwkZFJNV0dGtfGLzeN1HVfjwHw9Nl5IOFc9lIWETCAzECbVP9XrQ7VnruHYySvv+MPJem6uYRh/fC3FgwnlbaJMsu+r2/4629b3f23YsrbRfWsu3+HgfO06cu49WPuqN29ATgBWoOnGhWCYqmHvbMNnmxpObT//OvdT2xs+3TS+dsHeIG/kBxgA1ZNdsKFUF2wo1aUbSj2+bCkBWJGmGheHtxoXij8W2tzCuV353xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAS/wLBh+fQNux/v8AAAAASUVORK5CYII="
|
309
|
-
expect(Metanorma::Utils.datauri("rice_image1.png",
|
341
|
+
expect(Metanorma::Utils.datauri("rice_image1.png",
|
310
342
|
"spec/fixtures")).to be_equivalent_to "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAYAAACAvzbMAAAABmJLR0QA/wD/AP+gvaeTAAAEzUlEQVR4nO3dz4tVZRzH8fedacogMCjHoiBop1RaOzF/QAv7QUIYZdCq/oQo+hdC10FRbVtVBC0r09y0iZAmoVwWRRaMBZlKnhZ3UlEwnVFnhvt6wQPnnnOeh8/m8r0P9zznKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC42HT1RPVOdbT6c6Edrd5euDa9bOkAWJF2V3PVUA2jGtbfPG6jhXMLba56ahlzArBCTFf7q2GqhhfXNxzY3HB6R8Owc9xO72j4fHPDC7Pjexq3fZmNMOFGyx0Altn+6pV1Mw0fPtDo0bWXv/nLE7Xn24bjZxot9H31BmSEFUkBYZLtrj6+c6bhq0ca3X/rlXU6drK2fN3w27iIPF19ch0zwoqlgDCpbqqOTNWGgw/X/808LnZovnZ+U0N9Vz1Ynb0OGWFFm1ruALBMdlUb9q6/+uJRtf32en62qo2Nn86CiaOAMKmerXr5rsUP8NLd5w6fWXIaWIUUECbV1qqti5h9/Gfb+b7blpwGViEFhEl177qZumUJ34A1U3XHTFX3XKNMsKooIAAsigLCpPrx+Jk6tYRnp/4+W7+fqeqna5QJVhUFhEl1uOrwicUPcGj+/OGS08AqpIAwqT6oevfnxQ/w3i/nDj9achpYhSwkZFJNV0dGtfGLzeN1HVfjwHw9Nl5IOFc9lIWETCAzECbVP9XrQ7VnruHYySvv+MPJem6uYRh/fC3FgwnlbaJMsu+r2/4629b3f23YsrbRfWsu3+HgfO06cu49WPuqN29ATgBWoOnGhWCYqmHvbMNnmxpObT//OvdT2xs+3TS+dsHeIG/kBxgA1ZNdsKFUF2wo1aUbSj2+bCkBWJGmGheHtxoXij8W2tzCuV353xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAS/wLBh+fQNux/v8AAAAASUVORK5CYII="
|
311
343
|
expect(Metanorma::Utils.datauri2mime("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAYAAACAvzbMAAAABmJLR0QA/wD/AP+gvaeTAAAEzUlEQVR4nO3dz4tVZRzH8fedacogMCjHoiBop1RaOzF/QAv7QUIYZdCq/oQo+hdC10FRbVtVBC0r09y0iZAmoVwWRRaMBZlKnhZ3UlEwnVFnhvt6wQPnnnOeh8/m8r0P9zznKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC42HT1RPVOdbT6c6Edrd5euDa9bOkAWJF2V3PVUA2jGtbfPG6jhXMLba56ahlzArBCTFf7q2GqhhfXNxzY3HB6R8Owc9xO72j4fHPDC7Pjexq3fZmNMOFGyx0Altn+6pV1Mw0fPtDo0bWXv/nLE7Xn24bjZxot9H31BmSEFUkBYZLtrj6+c6bhq0ca3X/rlXU6drK2fN3w27iIPF19ch0zwoqlgDCpbqqOTNWGgw/X/808LnZovnZ+U0N9Vz1Ynb0OGWFFm1ruALBMdlUb9q6/+uJRtf32en62qo2Nn86CiaOAMKmerXr5rsUP8NLd5w6fWXIaWIUUECbV1qqti5h9/Gfb+b7blpwGViEFhEl177qZumUJ34A1U3XHTFX3XKNMsKooIAAsigLCpPrx+Jk6tYRnp/4+W7+fqeqna5QJVhUFhEl1uOrwicUPcGj+/OGS08AqpIAwqT6oevfnxQ/w3i/nDj9achpYhSwkZFJNV0dGtfGLzeN1HVfjwHw9Nl5IOFc9lIWETCAzECbVP9XrQ7VnruHYySvv+MPJem6uYRh/fC3FgwnlbaJMsu+r2/4629b3f23YsrbRfWsu3+HgfO06cu49WPuqN29ATgBWoOnGhWCYqmHvbMNnmxpObT//OvdT2xs+3TS+dsHeIG/kBxgA1ZNdsKFUF2wo1aUbSj2+bCkBWJGmGheHtxoXij8W2tzCuV353xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAS/wLBh+fQNux/v8AAAAASUVORK5CYII=")&.first&.to_s).to eq "image/png"
|
312
|
-
|
313
|
-
|
344
|
+
expect(Metanorma::Utils.datauri("spec/fixtures/rice_image0.png")).to be_equivalent_to "spec/fixtures/rice_image0.png"
|
345
|
+
expect do
|
346
|
+
Metanorma::Utils.datauri("spec/fixtures/rice_image0.png")
|
347
|
+
end.to output(%r{Image specified at `spec/fixtures/rice_image0\.png` does not exist\.}).to_stderr
|
314
348
|
end
|
315
349
|
end
|
data/spec/utils_spec.rb
CHANGED
@@ -23,11 +23,10 @@ RSpec.describe Metanorma::Utils do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
it "applies Asciidoctor substitutions" do
|
26
|
-
|
27
|
-
expect(Metanorma::Utils.asciidoc_sub("A -- B"))
|
26
|
+
expect(Metanorma::Utils.asciidoc_sub("A -- B", "html"))
|
28
27
|
.to eq "A — B"
|
29
|
-
expect(Metanorma::Utils.asciidoc_sub("*A* stem:[x]"))
|
30
|
-
.to eq "<strong>A</strong>
|
28
|
+
expect(Metanorma::Utils.asciidoc_sub("*A* stem:[x]", "html"))
|
29
|
+
.to eq "<strong>A</strong> \\$x\\$"
|
31
30
|
end
|
32
31
|
|
33
32
|
it "finds file path of docfile" do
|
data/spec/xml_spec.rb
CHANGED
@@ -34,6 +34,12 @@ RSpec.describe Metanorma::Utils do
|
|
34
34
|
expect(out).to be_equivalent_to <<~OUTPUT
|
35
35
|
<A>
|
36
36
|
OUTPUT
|
37
|
+
out = Metanorma::Utils.noko_html do |xml|
|
38
|
+
xml << doc.blocks.first.content
|
39
|
+
end.join
|
40
|
+
expect(out).to be_equivalent_to <<~OUTPUT
|
41
|
+
<A>
|
42
|
+
OUTPUT
|
37
43
|
end
|
38
44
|
|
39
45
|
it "wraps an Asciidoctor node in paragraph" do
|
@@ -69,7 +75,14 @@ RSpec.describe Metanorma::Utils do
|
|
69
75
|
|
70
76
|
it "applies namespace to xpath" do
|
71
77
|
expect(Metanorma::Utils.ns("//ab/Bb/c1-d[ancestor::c][d = 'x'][e/f]"))
|
72
|
-
.to be_equivalent_to("//xmlns:ab/xmlns:Bb/xmlns:c1-d[ancestor::xmlns:c]"\
|
78
|
+
.to be_equivalent_to("//xmlns:ab/xmlns:Bb/xmlns:c1-d[ancestor::xmlns:c]" \
|
73
79
|
"[xmlns:d = 'x'][xmlns:e/xmlns:f]")
|
74
80
|
end
|
81
|
+
|
82
|
+
it "converts HTML escapes to hex" do
|
83
|
+
expect(Metanorma::Utils.numeric_escapes("AéB"))
|
84
|
+
.to be_equivalent_to "AéB"
|
85
|
+
expect(Metanorma::Utils.numeric_escapes("A<X>é</X>B"))
|
86
|
+
.to be_equivalent_to "A<X>é</X>B"
|
87
|
+
end
|
75
88
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: csv
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: htmlentities
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,20 +192,6 @@ dependencies:
|
|
178
192
|
- - "~>"
|
179
193
|
- !ruby/object:Gem::Version
|
180
194
|
version: '4.7'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: metanorma-standoc
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: '2.0'
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '2.0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: rake
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|