let fs = require('fs') function embedSvg(src, dst) { fs.readFile(src, 'utf8', function(err, data) { if(err) throw err; data = data.replace(/<\?xml[^\?]*\?>[\r\n]*/g, ''); data = data.replace(/]*>[\r\n]*/g, ''); data = data.replace(/<\/svg>[\r\n]*/g, ''); data = data.replace(/>\s*]*>/g, ' '); data = data.replace(/<\/desc>/g, '>'); data = data.replace(/"/g, '"'); data = "(window)['"+src.replace(/^.*[\\\/]/, '')+"'] = `" + data + "`;"; fs.writeFile(dst, data, function(err) { if(err) throw err; }); }); } function embedCsv(src, dst) { fs.readFile(src, 'utf8', function(err, csvData) { if(err) throw err; let csvLines = csvData.split('\n').map(str => str.split(';')); let jsData = {}; let zones = csvLines[0]; for(let zoneIdx = 0; zoneIdx < zones.length; ++zoneIdx) { let zoneName = zones[zoneIdx]; let zoneData = []; for(let lineIdx = 1; lineIdx < csvLines.length; ++lineIdx) { zoneData[lineIdx-1] = Math.round(Number(csvLines[lineIdx][zoneIdx])); } jsData[zoneName] = zoneData; } let content = "(window)['"+src.replace(/^.*[\\\/]/, '')+"'] = " + JSON.stringify(jsData) + ";"; fs.writeFile(dst, content, function(err) { if(err) throw err; }); }); } embedSvg('../data/climate-zones-map.svg', 'climate-zones-map.svg.ts'); embedCsv('../data/climate-zones-data.csv', 'climate-zones-data.ts');