Skip to content

Commit 77d3ccf

Browse files
committed
init svgo-inkscape
0 parents  commit 77d3ccf

File tree

6 files changed

+222
-0
lines changed

6 files changed

+222
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
svgo-inkscape/node_modules/*
2+
svgo-inkscape/node/*

README.md

Whitespace-only changes.

svgo-inkscape.inx

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
3+
<_name>SVGO Output</_name>
4+
<id>org.inkscape.output.svgo</id>
5+
<param name="tabs" type="notebook">
6+
<page name="plugins1" _gui-text="Plugins 1">
7+
<param name="cleanupAttrs" type="boolean" _gui-text="cleanupAttrs">true</param>
8+
<param name="removeDoctype" type="boolean" _gui-text="removeDoctype">true</param>
9+
<param name="removeXMLProcInst" type="boolean" _gui-text="removeXMLProcInst">true</param>
10+
<param name="removeComments" type="boolean" _gui-text="removeComments">true</param>
11+
<param name="removeMetadata" type="boolean" _gui-text="removeMetadata">true</param>
12+
<param name="removeTitle" type="boolean" _gui-text="removeTitle">false</param>
13+
<param name="removeDesc" type="boolean" _gui-text="removeDesc">true</param>
14+
<param name="removeUselessDefs" type="boolean" _gui-text="removeUselessDefs">true</param>
15+
<param name="removeEditorsNSData" type="boolean" _gui-text="removeEditorsNSData">true</param>
16+
<param name="removeEmptyAttrs" type="boolean" _gui-text="removeEmptyAttrs">true</param>
17+
<param name="removeHiddenElems" type="boolean" _gui-text="removeHiddenElems">true</param>
18+
<param name="removeEmptyText" type="boolean" _gui-text="removeEmptyText">true</param>
19+
<param name="removeEmptyContainers" type="boolean" _gui-text="removeEmptyContainers">true</param>
20+
<param name="removeViewBox" type="boolean" _gui-text="removeViewBox">true</param>
21+
<param name="cleanupEnableBackground" type="boolean" _gui-text="cleanupEnableBackground">true</param>
22+
<param name="convertStyleToAttrs" type="boolean" _gui-text="convertStyleToAttrs">true</param>
23+
<param name="convertColors" type="boolean" _gui-text="convertColors">true</param>
24+
<param name="convertPathData" type="boolean" _gui-text="convertPathData">true</param>
25+
<param name="convertTransform" type="boolean" _gui-text="convertTransform">true</param>
26+
<param name="removeUnknownsAndDefaults" type="boolean" _gui-text="removeUnknownsAndDefaults">true</param>
27+
</page>
28+
<page name="plugins2" _gui-text="Plugins 2">
29+
<param name="removeNonInheritableGroupAttrs" type="boolean" _gui-text="removeNonInheritableGroupAttrs">true</param>
30+
<param name="removeUselessStrokeAndFill" type="boolean" _gui-text="removeUselessStrokeAndFill">true</param>
31+
<param name="removeUnusedNS" type="boolean" _gui-text="removeUnusedNS">true</param>
32+
<param name="cleanupIDs" type="boolean" _gui-text="cleanupIDs">true</param>
33+
<param name="cleanupNumericValues" type="boolean" _gui-text="cleanupNumericValues">true</param>
34+
<param name="moveElemsAttrsToGroup" type="boolean" _gui-text="moveElemsAttrsToGroup">true</param>
35+
<param name="moveGroupAttrsToElems" type="boolean" _gui-text="moveGroupAttrsToElems">true</param>
36+
<param name="collapseGroups" type="boolean" _gui-text="collapseGroups">true</param>
37+
<param name="removeRasterImages" type="boolean" _gui-text="removeRasterImages">false</param>
38+
<param name="mergePaths" type="boolean" _gui-text="mergePaths">true</param>
39+
<param name="convertShapeToPath" type="boolean" _gui-text="convertShapeToPath">true</param>
40+
<param name="sortAttrs" type="boolean" _gui-text="sortAttrs">false</param>
41+
<param name="transformsWithOnePath" type="boolean" _gui-text="transformsWithOnePath">false</param>
42+
<param name="removeDimensions" type="boolean" _gui-text="removeDimensions">false</param>
43+
<param name="removeAttrs" type="boolean" _gui-text="removeAttrs">false</param>
44+
<param name="addClassesToSVGElement" type="boolean" _gui-text="addClassesToSVGElement">false</param>
45+
</page>
46+
<page name="pluginshelp1" _gui-text="Help (Plugins 1)">
47+
<_param name="instructions" type="description" xml:space="preserve">
48+
[ cleanupAttrs ] cleanup attributes from newlines, trailing and repeating spaces
49+
[ removeDoctype ] remove doctype declaration
50+
[ removeXMLProcInst ] remove XML processing instructions
51+
[ removeComments ] remove comments
52+
[ removeMetadata ] remove metadata
53+
[ removeTitle ] remove title (disabled by default)
54+
[ removeDesc ] remove desc (only non-meaningful by default)
55+
[ removeUselessDefs ] remove elements of defs without id
56+
[ removeEditorsNSData ] remove editors namespaces, elements and attributes
57+
[ removeEmptyAttrs ] remove empty attributes
58+
[ removeHiddenElems ] remove hidden elements
59+
[ removeEmptyText ] remove empty Text elements
60+
[ removeEmptyContainers ] remove empty Container elements
61+
[ removeViewBox ] remove viewBox attribute when possible (disabled by default)
62+
[ cleanUpEnableBackground ] remove or cleanup enable-background attribute when possible
63+
[ convertStyleToAttrs ] convert styles into attributes
64+
[ convertColors ] convert colors (from rgb() to #rrggbb, from #rrggbb to #rgb)
65+
[ convertPathData ] convert Path data to relative or absolute whichever is shorter, convert one segment to another, trim useless delimiters, smart rounding and much more
66+
[ convertTransform ] collapse multiple transforms into one, convert matrices to the short aliases and much more
67+
[ removeUnknownsAndDefaults ] remove unknown elements content and attributes, remove attrs with default values
68+
</_param>
69+
</page>
70+
<page name="pluginshelp2" _gui-text="Help (Plugins 2)">
71+
<_param name="instructions" type="description" xml:space="preserve">
72+
[ removeNonInheritableGroupAttrs ] remove non-inheritable group's "presentation" attributes
73+
[ removeUselessStrokeAndFill ] remove useless stroke and fill attrs
74+
[ removeUnusedNS ] remove unused namespaces declaration
75+
[ cleanupIDs ] remove unused and minify used IDs
76+
[ cleanupNumericValues ] round numeric values to the fixed precision, remove default 'px' units
77+
[ moveElemsAttrsToGroup ] move elements attributes to the existing group wrapper
78+
[ moveGroupAttrsToElems ] move some group attributes to the content elements
79+
[ collapseGroups ] collapse useless groups
80+
[ removeRasterImages ] remove raster images (disabled by default)
81+
[ mergePaths ] merge multiple Paths into one
82+
[ convertShapeToPath ] convert some basic shapes to path
83+
[ sortAttrs ] sort element attributes for epic readability (disabled by default)
84+
[ transformsWithOnePath ] apply transforms, crop by real width, center vertical alignment and resize SVG with one Path inside (disabled by default)
85+
[ removeDimensions ] remove width/height attributes if viewBox is present (disabled by default)
86+
[ removeAttrs ] remove attributes by pattern (disabled by default)
87+
[ addClassesToSVGElement ] add classnames to an outer svg element (disabled by default)
88+
</_param>
89+
</page>
90+
</param>
91+
<output>
92+
<extension>.svg</extension>
93+
<mimetype>image/svg+xml</mimetype>
94+
<_filetypename>Optimized with svgo (*.svg)</_filetypename>
95+
<_filetypetooltip>Scalable Vector Graphics</_filetypetooltip>
96+
</output>
97+
<script>
98+
<command reldir="extensions" interpreter="python">./svgo-inkscape/svgo.inkscape.py</command>
99+
</script>
100+
</inkscape-extension>

svgo-inkscape/package.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"name": "svgo-inkscape",
3+
"private": true,
4+
"version": "0.1.0",
5+
"repository": "git://github.com/juanfran/svgo-inkscape.git",
6+
"author": {
7+
"name": "Juanfran Alcántara"
8+
},
9+
"engines": {
10+
"node": ">= 0.12"
11+
},
12+
"license": "MIT",
13+
"dependencies": {
14+
"minimist": "^1.1.2",
15+
"svgo": "^0.5.3"
16+
}
17+
}

svgo-inkscape/svgo.inkscape.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#!/usr/bin/env python
2+
#-*- coding: utf-8 -*-
3+
import sys, inkex, os
4+
5+
options = {
6+
"cleanupAttrs": True,
7+
"removeDoctype": True,
8+
"removeXMLProcInst": True,
9+
"removeComments": True,
10+
"removeMetadata": True,
11+
"removeTitle": False,
12+
"removeDesc": True,
13+
"removeUselessDefs": True,
14+
"removeEditorsNSData": True,
15+
"removeEmptyAttrs": True,
16+
"removeHiddenElems": True,
17+
"removeEmptyText": True,
18+
"removeEmptyContainers": True,
19+
"removeViewBox": True,
20+
"cleanupEnableBackground": True,
21+
"convertStyleToAttrs": True,
22+
"convertColors": True,
23+
"convertPathData": True,
24+
"convertTransform": True,
25+
"removeUnknownsAndDefaults": True,
26+
"removeNonInheritableGroupAttrs": True,
27+
"removeUselessStrokeAndFill": True,
28+
"removeUnusedNS": True,
29+
"cleanupIDs": True,
30+
"cleanupNumericValues": True,
31+
"moveElemsAttrsToGroup": True,
32+
"moveGroupAttrsToElems": True,
33+
"collapseGroups": True,
34+
"removeRasterImages": False,
35+
"mergePaths": True,
36+
"convertShapeToPath": True,
37+
"sortAttrs": False,
38+
"transformsWithOnePath": False,
39+
"removeDimensions": False,
40+
"removeAttrs": False,
41+
"addClassesToSVGElement": False
42+
}
43+
44+
class SvgoInkscape (inkex.Effect):
45+
46+
def __init__(self):
47+
inkex.Effect.__init__(self)
48+
49+
self.OptionParser.add_option("--tabs",
50+
action="store", type="string",
51+
dest="tab")
52+
53+
for key in options:
54+
self.OptionParser.add_option("--" + key, type="inkbool",
55+
action="store", dest=key, default=options[key])
56+
57+
def getCommand(self, name, option):
58+
return " --"+ name + " " + str(option).lower()
59+
60+
def effect(self):
61+
command = "./node/bin/node svgo.js --file=" + self.args[0]
62+
63+
optionsDict = self.options.__dict__
64+
65+
for key in options:
66+
command += self.getCommand(key, optionsDict[key])
67+
68+
result = os.popen(command).read()
69+
70+
sys.stdout.write(result.encode("UTF-8"))
71+
sys.stdout.close()
72+
73+
if __name__ == '__main__':
74+
e = SvgoInkscape()
75+
e.affect(output=False)

svgo-inkscape/svgo.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
var fs = require('fs');
2+
var execSync = require('child_process').execSync;
3+
4+
var argv = require('minimist')(process.argv.slice(2), {boolean: true});
5+
6+
var SVGOptimize = require('svgo');
7+
8+
var file = fs.readFileSync(argv.file, 'utf8');
9+
10+
var options = {};
11+
var optionsKeys = Object.keys(argv).filter(function(key) {
12+
return key !== 'file' && key !== '_';
13+
});
14+
15+
options.plugins = optionsKeys.map(function(key) {
16+
var obj = {};
17+
18+
obj[key] = argv[key];
19+
20+
return obj;
21+
});
22+
23+
24+
var svgo = new SVGOptimize(options);
25+
26+
svgo.optimize(file, function (result) {
27+
process.stdout.write(result.data);
28+
});

0 commit comments

Comments
 (0)