esvg 3.1.0 → 3.2.0
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/esvg/svg.rb +48 -8
- data/lib/esvg/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5df426e77287c9878d1d1e4015cb0e53b587bb5a
|
4
|
+
data.tar.gz: 37c2c9e0f77f3898afdef009a59fecaae870fbec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbcb61a40159c48fef3e224b3a83723ef243d224acb6eff08b2c42032c66471b214e3d16ef6399abeb80d3c13c4f86ed5e4b6766cefa21fc4ee5d0026c5f7b32
|
7
|
+
data.tar.gz: 3305442d217788371c21e7c9f069522257c1d1f38dd85bef58ea996904a3197201ac5ab086b2c306a4db733ad092df56b107d22620bdbdfd72558a970bb77d06
|
data/lib/esvg/svg.rb
CHANGED
@@ -150,7 +150,16 @@ module Esvg
|
|
150
150
|
(svg_cache.keys - files.keys.map {|file| file_key(file) }).each do |f|
|
151
151
|
svg_cache.delete(f)
|
152
152
|
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def build_paths
|
156
|
+
build_keys = svgs.keys.reject do |key|
|
157
|
+
key == '.' ||
|
158
|
+
key.match(/^_/) ||
|
159
|
+
config[:flatten].include?(key)
|
160
|
+
end
|
153
161
|
|
162
|
+
build_keys.map { | key | File.expand_path(build_path(key)) }
|
154
163
|
end
|
155
164
|
|
156
165
|
def flatten_path(path)
|
@@ -354,21 +363,50 @@ module Esvg
|
|
354
363
|
end
|
355
364
|
end
|
356
365
|
|
366
|
+
def build_path(key)
|
367
|
+
dir = config[:js_build_dir] || File.dirname(config[:js_path])
|
368
|
+
|
369
|
+
if config[:js_build_version]
|
370
|
+
key = "#{key}-#{config[:js_build_version]}"
|
371
|
+
end
|
372
|
+
|
373
|
+
File.join(dir, key+'.js')
|
374
|
+
end
|
375
|
+
|
357
376
|
def write_path(path, key)
|
358
|
-
# Write
|
377
|
+
# Write root svgs
|
359
378
|
return config[path] if key == "."
|
360
379
|
|
361
380
|
if !key.start_with?('_') && path.to_s.start_with?('js')
|
362
|
-
|
363
|
-
|
364
|
-
|
381
|
+
build_path(key)
|
382
|
+
else
|
383
|
+
config[path].sub(/[^\/]+?\./, key+'.')
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
387
|
+
# Scans <def> blocks for IDs
|
388
|
+
# If urls(#id) are used, ensure these IDs are unique to this file
|
389
|
+
# Only replace IDs if urls exist to avoid replacing defs
|
390
|
+
# used in other svg files
|
391
|
+
#
|
392
|
+
def sub_def_ids(file, content)
|
393
|
+
return content unless !!content.match(/<defs>/)
|
394
|
+
|
395
|
+
content.scan(/<defs>.+<\/defs>/m).flatten.each do |defs|
|
396
|
+
defs.scan(/id="(.+?)"/).flatten.uniq.each_with_index do |id, index|
|
365
397
|
|
366
|
-
|
367
|
-
|
398
|
+
if content.match(/url\(##{id}\)/)
|
399
|
+
new_id = "#{classname(file)}-ref#{index}"
|
400
|
+
|
401
|
+
content = content.gsub(/id="#{id}"/, %Q{class="#{new_id}"})
|
402
|
+
.gsub(/url\(##{id}\)/, "url(##{new_id})" )
|
403
|
+
else
|
404
|
+
content = content.gsub(/id="#{id}"/, %Q{class="#{id}"})
|
405
|
+
end
|
368
406
|
end
|
369
407
|
end
|
370
408
|
|
371
|
-
|
409
|
+
content
|
372
410
|
end
|
373
411
|
|
374
412
|
def prep_svg(file, content)
|
@@ -379,12 +417,14 @@ module Esvg
|
|
379
417
|
.gsub(/\s?fill="(#0{3,6}|black|rgba?\(0,0,0\))"/,'') # Strip black fill
|
380
418
|
.gsub(/style="([^"]*?)fill:(.+?);/m, 'fill="\2" style="\1') # Make fill a property instead of a style
|
381
419
|
.gsub(/style="([^"]*?)fill-opacity:(.+?);/m, 'fill-opacity="\2" style="\1') # Move fill-opacity a property instead of a style
|
420
|
+
|
421
|
+
sub_def_ids(file, content)
|
382
422
|
end
|
383
423
|
|
384
424
|
def optimize(svg)
|
385
425
|
if config[:optimize] && svgo_path = find_node_module('svgo')
|
386
426
|
path = write_svg(svg)
|
387
|
-
svg = `#{svgo_path} '#{path}' -o -`
|
427
|
+
svg = `#{svgo_path} --disable=removeUselessDefs '#{path}' -o -`
|
388
428
|
FileUtils.rm(path)
|
389
429
|
end
|
390
430
|
|
data/lib/esvg/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: esvg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Mathis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|