lib/esvg/symbol.rb in esvg-4.2.5 vs lib/esvg/symbol.rb in esvg-4.3.0

- old
+ new

@@ -137,10 +137,11 @@ # Only optimize again if the file has changed return @optimized if @optimized && @optimized_at > @mtime @optimized = @content sub_def_ids + move_defs if svgo? response = Open3.capture3(%Q{#{Esvg.node_module('svgo')} --disable=removeUselessDefs -s '#{@optimized}' -o -}) if !response[0].empty? && response[2].success? @optimized = response[0] @@ -279,9 +280,17 @@ # else @optimized = @optimized.gsub /id="#{id}"/, %Q{class="#{id}"} end end + end + end + + # <defs> should be moved to the beginning of the SVG file for braod browser support. Ahem, Firefox ಠ_ಠ + def move_defs + if defs = @optimized.scan(/(\s*<defs>.+<\/defs>\s*)/m).flatten[0] + @optimized.sub!(defs, '') + @optimized.sub!(/(<svg.+?>)/, "\1#{defs}") end end end end