lib/esvg/symbol.rb in esvg-4.6.2 vs lib/esvg/symbol.rb in esvg-4.6.3
- old
+ new
@@ -16,16 +16,24 @@
def config
@parent.config
end
+ def exist?
+ File.exist?(@path)
+ end
+
+ def dir
+ @group
+ end
+
def read
- return if !File.exist?(@path)
+ return if !exist?
# Ensure that cache optimization matches current optimization settings
# If config has changed name, reset optimized build (name gets baked in)
- if changed? || @svgo_optimized != svgo? || name != file_name
+ if changed? || @svgo_optimized != optimize? || name != file_name
@optimized = nil
@optimized_at = nil
end
@group = dir_key
@@ -93,11 +101,11 @@
size: @size,
content: @content,
defs: @defs,
optimized: @optimized,
optimized_at: @optimized_at,
- svgo_optimized: svgo? && @svgo_optimized
+ svgo_optimized: optimize? && @svgo_optimized
}
end
def attr
{ id: @id, 'data-name' => @name }.merge @size
@@ -158,20 +166,29 @@
options.delete(:scale)
%Q{<use #{attributes(options)}></use>}
end
- def svgo?
- config[:optimize] && !!Esvg.node_module('svgo')
+ # Only optimize if
+ # - Configuration asks for it
+ # - SVGO is present
+ # - If Rails is present
+ def optimize?
+ config[:optimize] && !!Esvg.node_module('svgo') && config[:env] == 'production'
end
def optimize
read if changed?
# Only optimize again if the file has changed
- return @optimized if @optimized && @optimized_at && @optimized_at > @mtime
+ if @optimized && @optimized_at && @optimized_at > @mtime
+ return @optimized
+ end
- if svgo?
+ # Only optimize if SVGO is installed
+ if optimize?
+ puts "Optimizing #{name}.svg" if config[:print]
+
response = Open3.capture3(%Q{#{Esvg.node_module('svgo')} --disable=removeUselessDefs -s '#{@content}' -o -})
if !response[0].empty? && response[2].success?
@optimized = response[0]
@svgo_optimized = true
end