metanorma-utils 1.4.4.2 → 1.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +3 -0
- 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 +7 -6
- 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/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,16 +2,15 @@ require "spec_helper"
|
|
2
2
|
require "fileutils"
|
3
3
|
|
4
4
|
RSpec.describe Metanorma::Utils do
|
5
|
-
|
6
5
|
context "recognises data uris" do
|
7
6
|
it "where the content is an existing file at a relative path" do
|
8
7
|
expect(Metanorma::Utils.datauri("spec/fixtures/rice_image1.png"))
|
9
|
-
.to eq Metanorma::Utils.encode_datauri(
|
8
|
+
.to eq Metanorma::Utils.encode_datauri("spec/fixtures/rice_image1.png")
|
10
9
|
end
|
11
10
|
|
12
11
|
it "where the content is an existing file at an absolute path" do
|
13
12
|
expect(Metanorma::Utils.datauri(File.expand_path("spec/fixtures/rice_image1.png")))
|
14
|
-
.to eq Metanorma::Utils.encode_datauri(
|
13
|
+
.to eq Metanorma::Utils.encode_datauri("spec/fixtures/rice_image1.png")
|
15
14
|
end
|
16
15
|
|
17
16
|
it "where the content is a relative file path pointing to a bogus file" do
|
@@ -339,10 +338,12 @@ RSpec.describe Metanorma::Utils do
|
|
339
338
|
it "generates data uris" do
|
340
339
|
expect(Metanorma::Utils.datauri("data:xyz")).to eq "data:xyz"
|
341
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="
|
342
|
-
expect(Metanorma::Utils.datauri("rice_image1.png",
|
341
|
+
expect(Metanorma::Utils.datauri("rice_image1.png",
|
343
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="
|
344
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"
|
345
|
-
|
346
|
-
|
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
|
347
348
|
end
|
348
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
|