77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import sys, inkex, os
|
||
|
|
||
|
options = {
|
||
|
"cleanupAttrs": True,
|
||
|
"removeDoctype": True,
|
||
|
"removeXMLProcInst": True,
|
||
|
"removeComments": True,
|
||
|
"removeMetadata": True,
|
||
|
"removeTitle": False,
|
||
|
"removeDesc": True,
|
||
|
"removeUselessDefs": True,
|
||
|
"removeEditorsNSData": True,
|
||
|
"removeEmptyAttrs": True,
|
||
|
"removeHiddenElems": True,
|
||
|
"removeEmptyText": True,
|
||
|
"removeEmptyContainers": True,
|
||
|
"removeViewBox": True,
|
||
|
"cleanupEnableBackground": True,
|
||
|
"convertStyleToAttrs": True,
|
||
|
"convertColors": True,
|
||
|
"convertPathData": True,
|
||
|
"convertTransform": True,
|
||
|
"removeUnknownsAndDefaults": True,
|
||
|
"removeNonInheritableGroupAttrs": True,
|
||
|
"removeUselessStrokeAndFill": True,
|
||
|
"removeUnusedNS": True,
|
||
|
"cleanupIDs": True,
|
||
|
"cleanupNumericValues": True,
|
||
|
"moveElemsAttrsToGroup": True,
|
||
|
"moveGroupAttrsToElems": True,
|
||
|
"collapseGroups": True,
|
||
|
"removeRasterImages": False,
|
||
|
"mergePaths": True,
|
||
|
"convertShapeToPath": True,
|
||
|
"sortAttrs": False,
|
||
|
"transformsWithOnePath": False,
|
||
|
"removeDimensions": False,
|
||
|
"removeAttrs": False,
|
||
|
"addClassesToSVGElement": False
|
||
|
}
|
||
|
|
||
|
class SVGOOutput(inkex.EffectExtension):
|
||
|
|
||
|
def __init__(self):
|
||
|
inkex.Effect.__init__(self)
|
||
|
|
||
|
self.arg_parser.add_argument("--tabs",
|
||
|
type=str,
|
||
|
dest="tab")
|
||
|
|
||
|
for key in options:
|
||
|
self.arg_parser.add_argument("--" + key, type=inkex.Boolean,
|
||
|
dest=key, default=options[key])
|
||
|
|
||
|
def getCommand(self, name, option):
|
||
|
return " --"+ name + " " + str(option).lower()
|
||
|
|
||
|
def effect(self):
|
||
|
# "node.exe" or "node" on Windows or just "node" on Linux
|
||
|
command = "node svgo.js --file=" + self.options.input_file
|
||
|
|
||
|
optionsDict = self.options.__dict__
|
||
|
|
||
|
for key in options:
|
||
|
command += self.getCommand(key, optionsDict[key])
|
||
|
|
||
|
p = os.popen(command)
|
||
|
result = p.read()
|
||
|
p.close()
|
||
|
|
||
|
sys.stdout.write(result)
|
||
|
sys.stdout.close()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
SVGOOutput().run()
|