mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2025-12-23 22:18:36 -05:00
* fix: set up Ruby before linting in Github Actions * chore: separate linting from fixing Before we commit we want to fix as much as possible, but when we're checking a pull request we're not going to commit anything so we want to know about all the problems, including the fixable ones.
45 lines
1.3 KiB
Ruby
Executable File
45 lines
1.3 KiB
Ruby
Executable File
# frozen_string_literal: true
|
|
|
|
require "nokogiri"
|
|
|
|
num_cleaned = 0
|
|
[ARGV].flatten.each do | path |
|
|
unless path.end_with?( ".svg" )
|
|
raise "#{path} is not a .svg file"
|
|
end
|
|
|
|
svg = File.read( path )
|
|
doc = Nokogiri::XML( svg, &:noblanks )
|
|
if doc.at( "svg" )["width"].to_i != 24 || doc.at( "svg" )["height"].to_i != 24
|
|
raise "#{path} is not a 24x24 square"
|
|
end
|
|
|
|
doc.search( "//path" ).each do | path_node |
|
|
if path_node["fill-rule"] == "evenodd" || path_node["style"] =~ /fill-rule:\s+?evenodd/
|
|
raise "#{path} has a path with evenodd. They should all have nonzero fill."
|
|
end
|
|
end
|
|
doc.at( "defs" )&.remove
|
|
if doc.namespaces.include?( "xmlns:sodipodi" )
|
|
doc.search( "//sodipodi:namedview" ).each( &:remove )
|
|
end
|
|
doc.traverse do | node |
|
|
next unless node.respond_to? :attributes
|
|
|
|
node.attributes.each do | key, val |
|
|
next unless
|
|
val&.namespace&.prefix == "sodipodi" ||
|
|
val&.namespace&.prefix == "inkscape" ||
|
|
%w(id style fill).include?( key )
|
|
|
|
val.remove
|
|
end
|
|
end
|
|
# doc.at("svg").remove_attribute "xmlns:inkscape"
|
|
# doc.at("svg").remove_attribute "xmlns:sodipodi"
|
|
doc.remove_namespaces!
|
|
File.write( path, doc.to_xml( indent: 2 ) )
|
|
num_cleaned += 1
|
|
end
|
|
puts "Cleaned #{num_cleaned} SVGs"
|