#!/usr/bin/env node /* Optimise the SVGs in ./core/images using SVGO from https://github.com/svg/svgo Install SVGO with the following command in the root of the repo: npm install svgo@2.3.0 */ "use strict"; var fs = require("fs"), path = require("path"), { optimize } = require("svgo"), config = { plugins: [ "cleanupAttrs", "removeDoctype", "removeXMLProcInst", "removeComments", "removeMetadata", "removeTitle", "removeDesc", "removeUselessDefs", "removeEditorsNSData", "removeEmptyAttrs", "removeHiddenElems", "removeEmptyText", "removeEmptyContainers", // 'removeViewBox', "cleanupEnableBackground", "convertStyleToAttrs", "convertColors", "convertPathData", "convertTransform", "removeUnknownsAndDefaults", "removeNonInheritableGroupAttrs", "removeUselessStrokeAndFill", "removeUnusedNS", "cleanupIDs", "cleanupNumericValues", "moveElemsAttrsToGroup", "moveGroupAttrsToElems", "collapseGroups", // 'removeRasterImages', "mergePaths", "convertShapeToPath", "sortAttrs", //'removeDimensions', {name: "removeAttrs", params: { attrs: "(stroke|fill)" } } ] }; var basepath = "./core/images/", files = fs.readdirSync(basepath).sort(); files.forEach(function(filename) { if(filename.slice(-4) === ".tid") { var filepath = path.resolve(basepath,filename), data = fs.readFileSync(filepath,"utf8"), lines = data.split("\n"), blankLine = lines.indexOf(""), header = lines.slice(0,blankLine), body = lines.slice(blankLine + 1), fakeSVG = body.join("\n"); // A hack to make the new-journal-button work fakeSVG = fakeSVG.replace("<>","<<now "DD">>"); config.path = filepath; var result = optimize(fakeSVG,config); if(result) { var newSVG = header.join("\n") + "\n\n" + result.data.replace("<<now "DD">>","<>"); fs.writeFileSync(filepath,newSVG); } else { console.log("Error " + err + " with " + filename); process.exit(); }; } });