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