esvg 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|