metanorma-standoc 3.5.1.pre.alpha.1 → 3.5.1.pre.alpha.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.
- checksums.yaml +4 -4
- data/lib/metanorma/cleanup/image.rb +17 -74
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +4 -5
- metadata +12 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 79b37a413932b28bdbdaa5564347f846c2a1fdb3722c6201d5f688e80af65d03
|
|
4
|
+
data.tar.gz: 94adfc8f36c38c305be115769c7e5cfca64a6babda01e83261b6202f07d3cec2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1dc0236ec7ce90db11c8b8606299ef21c1c444ea84b9391517bd98f8cb8b5df5482e0b1f35d8ac75623ab2ce44e7ab1b042e1d1f89563a2a4374a31c7b12ce8e
|
|
7
|
+
data.tar.gz: 1ab82ac3c1f076d09d2ee443a6b5ac26500cb5eb7be9680f2d6a4e7e3dbf6ea77f11c441d543fb690b6740a9ea167cffec8ed3d1c818553bae941c0e2764ec0f
|
|
@@ -185,18 +185,6 @@ module Metanorma
|
|
|
185
185
|
node[:selector] = Crass.parse("#{v} {}").first[:selector]
|
|
186
186
|
end
|
|
187
187
|
|
|
188
|
-
IRI_TAG_PROPERTIES_MAP = {
|
|
189
|
-
clipPath: ["clip-path"],
|
|
190
|
-
"color-profile": nil,
|
|
191
|
-
cursor: nil,
|
|
192
|
-
filter: nil,
|
|
193
|
-
linearGradient: ["fill", "stroke"],
|
|
194
|
-
marker: ["marker", "marker-end", "marker-mid", "marker-start"],
|
|
195
|
-
mask: nil,
|
|
196
|
-
pattern: ["fill", "stroke"],
|
|
197
|
-
radialGradient: ["fill", "stroke"],
|
|
198
|
-
}.freeze
|
|
199
|
-
|
|
200
188
|
SVG_NS = "http://www.w3.org/2000/svg".freeze
|
|
201
189
|
|
|
202
190
|
def svg_uniqueids(xmldoc)
|
|
@@ -204,77 +192,32 @@ module Metanorma
|
|
|
204
192
|
ids = xmldoc.xpath("//m:svg//*/@id | //svg/@id", "m" => SVG_NS)
|
|
205
193
|
.map(&:text).group_by(&:itself).transform_values(&:count)
|
|
206
194
|
.delete_if { |_, v| v < 2 }
|
|
207
|
-
|
|
208
|
-
|
|
195
|
+
# re-resolve by position each time: replacing an outer SVG detaches
|
|
196
|
+
# the nodes of any SVG nested inside it
|
|
197
|
+
xmldoc.xpath("//m:svg", "m" => SVG_NS).size.times do |i|
|
|
198
|
+
svg = xmldoc.xpath("//m:svg", "m" => SVG_NS)[i]
|
|
199
|
+
ids = svg_uniqueids1(svg, i, ids)
|
|
209
200
|
end
|
|
210
201
|
end
|
|
211
202
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
IRI_TAG_PROPERTIES_MAP.key?(e.name.to_sym) and m << e.name
|
|
215
|
-
end.uniq
|
|
216
|
-
iri_properties = iri_tag_names.each_with_object([]) do |t, m|
|
|
217
|
-
(IRI_TAG_PROPERTIES_MAP[t.to_sym] || [t]).each { |t1| m = m << t1 }
|
|
218
|
-
end.uniq
|
|
219
|
-
iri_properties.empty? and return []
|
|
220
|
-
iri_properties << "style"
|
|
221
|
-
end
|
|
222
|
-
|
|
203
|
+
# Vectory returns a rewritten copy: reparse it with the caller's XML
|
|
204
|
+
# library and swap it into the caller's tree.
|
|
223
205
|
def svg_uniqueids1(svg, idx, ids)
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
206
|
+
rewritten = Vectory::SvgIdDisambiguator
|
|
207
|
+
.rewrite(svg.to_xml, "_inject_#{idx}", ids)
|
|
208
|
+
.sub(/\A<\?xml[^>]*\?>\s*/, "")
|
|
209
|
+
new_svg = svg_replace(svg, rewritten)
|
|
210
|
+
new_ids = new_svg.xpath(".//*[@id] | ./@id/..").map { |x| x["id"] }
|
|
229
211
|
ids.merge(new_ids.each.to_h { |value| [value, true] })
|
|
230
212
|
end
|
|
231
213
|
|
|
232
|
-
def
|
|
233
|
-
svg.
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
elsif !e.attributes.empty?
|
|
238
|
-
svg_attrupdate(e, iri_properties, idx, ids)
|
|
239
|
-
end
|
|
240
|
-
svg_linkupdate(e, idx, ids)
|
|
241
|
-
svg_idupdate(e, idx, ids)
|
|
242
|
-
end
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
def svg_update_url(text, idx, ids)
|
|
246
|
-
text.gsub(/url\("?#([a-zA-Z][\w:.-]*)"?\)/) do |x|
|
|
247
|
-
if ids[$1] then "url(##{$1}_inject_#{idx})"
|
|
248
|
-
else x
|
|
249
|
-
end
|
|
250
|
-
end
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
def svg_styleupdate(elem, idx, ids)
|
|
254
|
-
elem.children = svg_update_url(elem.text, idx, ids)
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
def svg_attrupdate(elem, iri_properties, idx, ids)
|
|
258
|
-
iri_properties.each do |p|
|
|
259
|
-
elem[p] or next
|
|
260
|
-
elem[p] = svg_update_url(elem[p], idx, ids)
|
|
214
|
+
def svg_replace(svg, xml)
|
|
215
|
+
if defined?(Moxml) && svg.is_a?(Moxml::Node)
|
|
216
|
+
Moxml.new(:leptris).parse(xml).root.tap { |n| svg.replace(n) }
|
|
217
|
+
else
|
|
218
|
+
svg.replace(xml).first
|
|
261
219
|
end
|
|
262
220
|
end
|
|
263
|
-
|
|
264
|
-
def svg_linkupdate(elem, idx, ids)
|
|
265
|
-
%w(xlink:href href).each do |ref|
|
|
266
|
-
iri = elem[ref]&.strip
|
|
267
|
-
/^#/.match?(iri) or next
|
|
268
|
-
ids[iri.sub(/^#/, "")] or next
|
|
269
|
-
elem[ref] += "_inject_#{idx}"
|
|
270
|
-
end
|
|
271
|
-
end
|
|
272
|
-
|
|
273
|
-
def svg_idupdate(elem, idx, ids)
|
|
274
|
-
elem["id"] or return
|
|
275
|
-
ids[elem["id"]] or return
|
|
276
|
-
elem["id"] += "_inject_#{idx}"
|
|
277
|
-
end
|
|
278
221
|
end
|
|
279
222
|
end
|
|
280
223
|
end
|
data/metanorma-standoc.gemspec
CHANGED
|
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
|
34
34
|
# spec.add_dependency "iev", "~> 0.4"
|
|
35
35
|
spec.add_dependency "isodoc", "~> 3.7.2"
|
|
36
36
|
spec.add_dependency "metanorma-core", "~> 0.2.3"
|
|
37
|
-
spec.add_dependency "metanorma-document"
|
|
37
|
+
spec.add_dependency "metanorma-document", ">= 0.5.2.pre.alpha.1"
|
|
38
38
|
spec.add_dependency "metanorma-mirror"
|
|
39
39
|
spec.add_dependency "metanorma-plugin-asciichem", "~> 0.1.0"
|
|
40
40
|
spec.add_dependency "metanorma-plugin-glossarist", "~> 0.5"
|
|
@@ -48,11 +48,10 @@ Gem::Specification.new do |spec|
|
|
|
48
48
|
# svgmap_cleanup reparses vectory's returned document and grafts the
|
|
49
49
|
# content back (the 0.13 SvgMapping contract: vectory processes its own
|
|
50
50
|
# tree and returns the result instead of mutating the caller's document).
|
|
51
|
-
spec.add_dependency "vectory", "~> 0.13"
|
|
52
|
-
#
|
|
53
|
-
# when a requirement names one, and the ecosystem target is relaton 3.0+
|
|
51
|
+
spec.add_dependency "vectory", "~> 0.13", ">= 0.13.2"
|
|
52
|
+
# Stable relaton-cli 3.0.0 is out; the ecosystem target is relaton 3.0+
|
|
54
53
|
# (glossarist 2.14+ requires relaton ~> 3.0.0.pre.alpha).
|
|
55
|
-
spec.add_dependency "relaton-cli", ">= 3.0.0
|
|
54
|
+
spec.add_dependency "relaton-cli", ">= 3.0.0", "< 3.1.0"
|
|
56
55
|
spec.add_dependency "relaton-iev", "~> 2.0"
|
|
57
56
|
spec.add_dependency "svg_conform", "~> 0.2"
|
|
58
57
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metanorma-standoc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.5.1.pre.alpha.
|
|
4
|
+
version: 3.5.1.pre.alpha.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-27 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: addressable
|
|
@@ -86,14 +86,14 @@ dependencies:
|
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
89
|
+
version: 0.5.2.pre.alpha.1
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - ">="
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
96
|
+
version: 0.5.2.pre.alpha.1
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: metanorma-mirror
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -241,6 +241,9 @@ dependencies:
|
|
|
241
241
|
- - "~>"
|
|
242
242
|
- !ruby/object:Gem::Version
|
|
243
243
|
version: '0.13'
|
|
244
|
+
- - ">="
|
|
245
|
+
- !ruby/object:Gem::Version
|
|
246
|
+
version: 0.13.2
|
|
244
247
|
type: :runtime
|
|
245
248
|
prerelease: false
|
|
246
249
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -248,13 +251,16 @@ dependencies:
|
|
|
248
251
|
- - "~>"
|
|
249
252
|
- !ruby/object:Gem::Version
|
|
250
253
|
version: '0.13'
|
|
254
|
+
- - ">="
|
|
255
|
+
- !ruby/object:Gem::Version
|
|
256
|
+
version: 0.13.2
|
|
251
257
|
- !ruby/object:Gem::Dependency
|
|
252
258
|
name: relaton-cli
|
|
253
259
|
requirement: !ruby/object:Gem::Requirement
|
|
254
260
|
requirements:
|
|
255
261
|
- - ">="
|
|
256
262
|
- !ruby/object:Gem::Version
|
|
257
|
-
version: 3.0.0
|
|
263
|
+
version: 3.0.0
|
|
258
264
|
- - "<"
|
|
259
265
|
- !ruby/object:Gem::Version
|
|
260
266
|
version: 3.1.0
|
|
@@ -264,7 +270,7 @@ dependencies:
|
|
|
264
270
|
requirements:
|
|
265
271
|
- - ">="
|
|
266
272
|
- !ruby/object:Gem::Version
|
|
267
|
-
version: 3.0.0
|
|
273
|
+
version: 3.0.0
|
|
268
274
|
- - "<"
|
|
269
275
|
- !ruby/object:Gem::Version
|
|
270
276
|
version: 3.1.0
|