metanorma-utils 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/utils/main.rb +32 -0
- data/lib/utils/version.rb +1 -1
- data/spec/fixtures/action_schemaexpg1.svg +122 -0
- data/spec/spec_helper.rb +8 -0
- data/spec/utils_spec.rb +86 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91f96b7aa6ec3c7ee29649b93edc0dfc1b485ab5db05f6b5c8dcf4f3c38da3bb
|
4
|
+
data.tar.gz: '080959b8d7c6057098cbf4cd6d22b6711f10ee122b85a833af16cfc352a1ccb1'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8702b7f309905c9add48241b1f6ca0a6bd11832171d0d7bdbfed97e61fad52dcb86e0eacb680ea3e888fee9f7b2c445b5790e62e4f90779b26152bed168b7880
|
7
|
+
data.tar.gz: c218e92eda255cb5d0dd8351146f65eefb83f361d206d8e2d12b4bc4e076cdcb49826a349cf560847af91365b050c95ee13ee30c658f7d40d12bcae46d2d208e
|
data/lib/utils/main.rb
CHANGED
@@ -78,6 +78,38 @@ module Metanorma
|
|
78
78
|
hash
|
79
79
|
end
|
80
80
|
|
81
|
+
def svgmap_rewrite(xmldoc)
|
82
|
+
xmldoc.xpath("//svgmap").each do |s|
|
83
|
+
next unless s["src"]
|
84
|
+
path = File.file?(s["src"]) ? s["src"] : @localdir + s["src"]
|
85
|
+
File.file?(path) or next
|
86
|
+
svg = Nokogiri::XML(File.read(path, encoding: "utf-8"))
|
87
|
+
svgmap_rewrite1(s, svg, path)
|
88
|
+
next if s.at(".//eref")
|
89
|
+
svgmap_to_image(s, svg&.at(".//xmlns:image/@height")&.text, svg&.at(".//xmlns:image/@width")&.text)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def svgmap_to_image(s, height, width)
|
94
|
+
s.children.remove
|
95
|
+
s.name = "img"
|
96
|
+
s["mimetype"] = "image/svg+xml"
|
97
|
+
s["height"] = height || "auto"
|
98
|
+
s["width"] = width || "auto"
|
99
|
+
end
|
100
|
+
|
101
|
+
def svgmap_rewrite1(s, svg, path)
|
102
|
+
targets = s.xpath("./target").each_with_object({}) do |t, m|
|
103
|
+
x = t.at("./xref") and m[t["href"]] = "##{x['target']}"
|
104
|
+
x = t.at("./link") and m[t["href"]] = x['target']
|
105
|
+
t.remove if t.at("./xref | ./link")
|
106
|
+
end
|
107
|
+
svg.xpath(".//xmlns:a").each do |a|
|
108
|
+
x = targets[a["xlink:href"]] and a["xlink:href"] = x
|
109
|
+
end
|
110
|
+
File.open(path, "w", encoding: "utf-8") { |f| f.write(svg.to_xml) }
|
111
|
+
end
|
112
|
+
|
81
113
|
# not currently used
|
82
114
|
def flatten_rawtext_lines(node, result)
|
83
115
|
node.lines.each do |x|
|
data/lib/utils/version.rb
CHANGED
@@ -0,0 +1,122 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3
|
+
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
4
|
+
viewBox="0 0 595.28 841.89" style="enable-background:new 0 0 595.28 841.89;" xml:space="preserve">
|
5
|
+
<style type="text/css">
|
6
|
+
.st0{fill:none;stroke:#000000;stroke-miterlimit:10;}
|
7
|
+
</style>
|
8
|
+
<image style="overflow:visible;" width="368" height="315" xlink:href="data:image/gif;base64,R0lGODlhcAE7Aff/AAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBmAABmMwBm
|
9
|
+
ZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/MwD/ZgD/
|
10
|
+
mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNmZjNmmTNm
|
11
|
+
zDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/mTP/zDP/
|
12
|
+
/2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZmzGZm/2aZ
|
13
|
+
AGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkA
|
14
|
+
M5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZAJmZM5mZ
|
15
|
+
ZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswA
|
16
|
+
mcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZZsyZmcyZ
|
17
|
+
zMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A
|
18
|
+
//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+ZzP+Z///M
|
19
|
+
AP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP////j4+PLy8uvr6+Xl5d/f39jY2NLS0szM
|
20
|
+
zMXFxb+/v7i4uLKysqysrKWlpZ+fn5mZmZKSkoyMjIWFhX9/f3l5eXJycmxsbGZmZl9fX1lZWVJS
|
21
|
+
UkxMTEZGRj8/Pzk5OTMzMywsLCYmJh8fHxkZGRMTEwwMDAYGBgAAACwAAAAAcAE7AQAI/gCvCRxI
|
22
|
+
sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN
|
23
|
+
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" transform="matrix(1 0 0 1 114 263.8898)">
|
112
|
+
</image>
|
113
|
+
<a xlink:href="mn://action_schema" >
|
114
|
+
<rect x="123.28" y="273.93" class="st0" width="88.05" height="41.84"/>
|
115
|
+
</a>
|
116
|
+
<a xlink:href="mn://basic_attribute_schema" >
|
117
|
+
<rect x="324.69" y="450.52" class="st0" width="132.62" height="40.75"/>
|
118
|
+
</a>
|
119
|
+
<a xlink:href="mn://support_resource_schema" >
|
120
|
+
<rect x="324.69" y="528.36" class="st0" width="148.16" height="40.75"/>
|
121
|
+
</a>
|
122
|
+
</svg>
|
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,7 @@ end
|
|
5
5
|
require "rspec/matchers"
|
6
6
|
require "equivalent-xml"
|
7
7
|
require "metanorma-utils"
|
8
|
+
require "rexml/document"
|
8
9
|
|
9
10
|
RSpec.configure do |config|
|
10
11
|
# Enable flags like --only-failures and --next-failure
|
@@ -32,3 +33,10 @@ class Dummy
|
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
36
|
+
def xmlpp(x)
|
37
|
+
s = ""
|
38
|
+
f = REXML::Formatters::Pretty.new(2)
|
39
|
+
f.compact = true
|
40
|
+
f.write(REXML::Document.new(x), s)
|
41
|
+
s
|
42
|
+
end
|
data/spec/utils_spec.rb
CHANGED
@@ -72,6 +72,92 @@ RSpec.describe Metanorma::Utils do
|
|
72
72
|
OUTPUT
|
73
73
|
end
|
74
74
|
|
75
|
+
it "rewrites SVGs" do
|
76
|
+
FileUtils.cp "spec/fixtures/action_schemaexpg1.svg", "action_schemaexpg1.svg"
|
77
|
+
FileUtils.cp "spec/fixtures/action_schemaexpg1.svg", "action_schemaexpg2.svg"
|
78
|
+
xmldoc = Nokogiri::XML(<<~INPUT)
|
79
|
+
<standard-document type="semantic" version="1.8.2">
|
80
|
+
<bibdata type="standard">
|
81
|
+
<title language="en" format="text/plain">Document title</title>
|
82
|
+
<docidentifier/>
|
83
|
+
<docnumber/>
|
84
|
+
<version/>
|
85
|
+
<language>en</language>
|
86
|
+
<script>Latn</script>
|
87
|
+
<status>
|
88
|
+
<stage>published</stage>
|
89
|
+
</status>
|
90
|
+
<copyright>
|
91
|
+
<from>2021</from>
|
92
|
+
</copyright>
|
93
|
+
<ext>
|
94
|
+
<doctype>article</doctype>
|
95
|
+
</ext>
|
96
|
+
</bibdata>
|
97
|
+
<sections><svgmap id="_d5b5049a-dd53-4ea0-bc6f-e8773bd59052"><target href="mn://action_schema"><xref target="ref1">Computer</xref></target></svgmap>
|
98
|
+
<svgmap id="_4072bdcb-5895-4821-b636-5795b96787cb" src="action_schemaexpg1.svg"><target href="mn://action_schema"><xref target="ref1">Computer</xref></target><target href="http://www.example.com"><link target="http://www.example.com">Phone</link></target></svgmap>
|
99
|
+
<svgmap id="_60dadf08-48d4-4164-845c-b4e293e00abd" src="action_schemaexpg2.svg" alt="Workmap"><target href="href1.htm"><xref target="ref1">Computer</xref></target><target href="mn://basic_attribute_schema"><link target="http://www.example.com">Phone</link></target><target href="mn://support_resource_schema"><eref type="express" bibitemid="express_action_schema" citeas=""><localityStack><locality type="anchor"><referenceFrom>action_schema.basic</referenceFrom></locality></localityStack>Coffee</eref></target></svgmap></sections>
|
100
|
+
</standard-document>
|
101
|
+
INPUT
|
102
|
+
Metanorma::Utils.svgmap_rewrite(xmldoc)
|
103
|
+
expect(xmldoc.to_xml).to be_equivalent_to <<~OUTPUT
|
104
|
+
<standard-document type="semantic" version="1.8.2">
|
105
|
+
<bibdata type="standard">
|
106
|
+
<title language="en" format="text/plain">Document title</title>
|
107
|
+
<docidentifier/>
|
108
|
+
<docnumber/>
|
109
|
+
<version/>
|
110
|
+
<language>en</language>
|
111
|
+
<script>Latn</script>
|
112
|
+
<status>
|
113
|
+
<stage>published</stage>
|
114
|
+
</status>
|
115
|
+
<copyright>
|
116
|
+
<from>2021</from>
|
117
|
+
</copyright>
|
118
|
+
<ext>
|
119
|
+
<doctype>article</doctype>
|
120
|
+
</ext>
|
121
|
+
</bibdata>
|
122
|
+
<sections><svgmap id="_d5b5049a-dd53-4ea0-bc6f-e8773bd59052"><target href="mn://action_schema"><xref target="ref1">Computer</xref></target></svgmap>
|
123
|
+
<img id="_4072bdcb-5895-4821-b636-5795b96787cb" src="action_schemaexpg1.svg" mimetype="image/svg+xml" height="315" width="368"/>
|
124
|
+
<svgmap id="_60dadf08-48d4-4164-845c-b4e293e00abd" src="action_schemaexpg2.svg" alt="Workmap"><target href="mn://support_resource_schema"><eref type="express" bibitemid="express_action_schema" citeas=""><localityStack><locality type="anchor"><referenceFrom>action_schema.basic</referenceFrom></locality></localityStack>Coffee</eref></target></svgmap></sections>
|
125
|
+
</standard-document>
|
126
|
+
OUTPUT
|
127
|
+
expect(xmlpp(File.read("action_schemaexpg1.svg", encoding: "utf-8").sub(%r{<image .*</image>}m, ""))).to be_equivalent_to <<~OUTPUT
|
128
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
129
|
+
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
130
|
+
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Layer_1' x='0px' y='0px' viewBox='0 0 595.28 841.89' style='enable-background:new 0 0 595.28 841.89;' xml:space='preserve'>
|
131
|
+
<style type='text/css'> .st0{fill:none;stroke:#000000;stroke-miterlimit:10;} </style>
|
132
|
+
<a xlink:href='#ref1'>
|
133
|
+
<rect x='123.28' y='273.93' class='st0' width='88.05' height='41.84'/>
|
134
|
+
</a>
|
135
|
+
<a xlink:href='mn://basic_attribute_schema'>
|
136
|
+
<rect x='324.69' y='450.52' class='st0' width='132.62' height='40.75'/>
|
137
|
+
</a>
|
138
|
+
<a xlink:href='mn://support_resource_schema'>
|
139
|
+
<rect x='324.69' y='528.36' class='st0' width='148.16' height='40.75'/>
|
140
|
+
</a>
|
141
|
+
</svg>
|
142
|
+
OUTPUT
|
143
|
+
expect(xmlpp(File.read("action_schemaexpg2.svg", encoding: "utf-8").sub(%r{<image .*</image>}m, ""))).to be_equivalent_to <<~OUTPUT
|
144
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
145
|
+
<!-- Generator: Adobe Illustrator 25.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
146
|
+
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Layer_1' x='0px' y='0px' viewBox='0 0 595.28 841.89' style='enable-background:new 0 0 595.28 841.89;' xml:space='preserve'>
|
147
|
+
<style type='text/css'> .st0{fill:none;stroke:#000000;stroke-miterlimit:10;} </style>
|
148
|
+
<a xlink:href='mn://action_schema'>
|
149
|
+
<rect x='123.28' y='273.93' class='st0' width='88.05' height='41.84'/>
|
150
|
+
</a>
|
151
|
+
<a xlink:href='http://www.example.com'>
|
152
|
+
<rect x='324.69' y='450.52' class='st0' width='132.62' height='40.75'/>
|
153
|
+
</a>
|
154
|
+
<a xlink:href='mn://support_resource_schema'>
|
155
|
+
<rect x='324.69' y='528.36' class='st0' width='148.16' height='40.75'/>
|
156
|
+
</a>
|
157
|
+
</svg>
|
158
|
+
OUTPUT
|
159
|
+
end
|
160
|
+
|
75
161
|
# not testing Asciidoctor log extraction here
|
76
162
|
it "generates log" do
|
77
163
|
xml = Nokogiri::XML(<<~INPUT)
|
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.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sterile
|
@@ -253,6 +253,7 @@ files:
|
|
253
253
|
- lib/utils/main.rb
|
254
254
|
- lib/utils/version.rb
|
255
255
|
- metanorma-utils.gemspec
|
256
|
+
- spec/fixtures/action_schemaexpg1.svg
|
256
257
|
- spec/spec_helper.rb
|
257
258
|
- spec/utils_spec.rb
|
258
259
|
homepage: https://github.com/metanorma/metanorma-utils
|
@@ -274,7 +275,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
274
275
|
- !ruby/object:Gem::Version
|
275
276
|
version: '0'
|
276
277
|
requirements: []
|
277
|
-
rubygems_version: 3.
|
278
|
+
rubygems_version: 3.1.4
|
278
279
|
signing_key:
|
279
280
|
specification_version: 4
|
280
281
|
summary: metanorma-utils
|