/* globals require, console */ 'use strict'; var fs = require('fs'); var path = require('path'); var process = require('process'); // destination output var destDir = 'flags'; try { fs.mkdirSync(destDir); } catch (err) { if (err.code !== 'EEXIST') { console.error(err); process.exit(1); } } // read mappings var contents = fs.readFileSync('iso-3166.json', 'utf8'); var iso3166 = JSON.parse(contents); var mappings = {}; for (var i = 0; i < iso3166.length; i++) { var key = iso3166[i]['alpha-2'].toLowerCase(); var val = iso3166[i]['alpha-3'].toLowerCase(); mappings[key] = val; } // rename svg files var flagDir = 'flag-icon-css-0.8.4/flags/4x3'; var files = fs.readdirSync(flagDir); for (var i = 0; i < files.length; i++) { var f = files[i]; var src = path.join(flagDir, f); var file = path.parse(f); var newName = mappings[file.name] + file.ext; var dst = path.join(destDir, newName); fs.createReadStream(src).pipe(fs.createWriteStream(dst)); } // create the css var cssFile = 'flag-icon-css-0.8.4/css/flag-icon.css'; var content = fs.readFileSync(cssFile, 'utf-8'); for (var twoChar in mappings) { if (mappings.hasOwnProperty(twoChar)) { var threeChar = mappings[twoChar]; var re = new RegExp('.*\.flag-icon-squared {\n.*\n}\n'); content = content.replace(re, ''); re = new RegExp('4x3/' + twoChar + '\.svg'); content = content.replace(re, threeChar + '.svg'); re = new RegExp('flag-icon-' + twoChar + ' '); content = content.replace(re, 'flag-icon-' + threeChar + ' '); } } fs.writeFileSync('flag-icon.css', content, 'utf8')