euro-flags
Version:
Print the flags of 28 European countries to the console!
104 lines (98 loc) • 5.15 kB
JavaScript
const euro_flags = require('./index.js');
const getScale = function(params, country, border) {
for (let i = 0; i < params.length; i++) {
if (params[i] && params[i].startsWith('--scale=')) {
const scaleString = params[i].replace('--scale=', '').trim();
if (scaleString.toLowerCase() === 'full') {
if (!process.stdout.isTTY) {
console.log('\nError: --scale=full only works in a terminal. Using default scale.');
return -1;
}
const countryData = euro_flags[country];
if (countryData) {
const flagW = euro_flags[country].minWidth();
const flagH = euro_flags[country].minHeight();
const terminalW = process.stdout.columns - 4 - (border ? 2 : 0);
const terminalH = process.stdout.rows - 2 - (border ? 2 : 0);
if (terminalW < flagW || terminalH < flagH) {
return 1;
}
return Math.min(parseInt(terminalW / flagW), parseInt(terminalH / flagH));
}
} else if (scaleString.length > 0 && !isNaN(scaleString)) {
const scale = parseInt(scaleString);
return scale >= 1 ? scale : 1;
}
}
}
return -1;
}
const getBorder = function(params) {
for (let i = 0; i < params.length; i++) {
if (params[i] && params[i].toLowerCase() === ('--border')) {
return true;
}
}
return false;
}
const printAll = function() {
const flags = '\n' +
' Armenia:\n' + euro_flags['armenia'].create(undefined, false) + '\n\n' +
' Austria:\n' + euro_flags['austria'].create(undefined, false) + '\n\n' +
' Belgium:\n' + euro_flags['belgium'].create(undefined, false) + '\n\n' +
' Bulgaria:\n' + euro_flags['bulgaria'].create(undefined, false) + '\n\n' +
' Denmark:\n' + euro_flags['denmark'].create(undefined, false) + '\n\n' +
' England:\n' + euro_flags['england'].create(undefined, false) + '\n\n' +
' Estonia:\n' + euro_flags['estonia'].create(undefined, false) + '\n\n' +
' Finland:\n' + euro_flags['finland'].create(undefined, false) + '\n\n' +
' France:\n' + euro_flags['france'].create(undefined, false) + '\n\n' +
' Georgia:\n' + euro_flags['georgia'].create(undefined, false) + '\n\n' +
' Germany:\n' + euro_flags['germany'].create(undefined, false) + '\n\n' +
' Greece:\n' + euro_flags['greece'].create(undefined, false) + '\n\n' +
' Hungary:\n' + euro_flags['hungary'].create(undefined, false) + '\n\n' +
' Iceland:\n' + euro_flags['iceland'].create(undefined, false) + '\n\n' +
' Ireland:\n' + euro_flags['ireland'].create(undefined, false) + '\n\n' +
' Italy:\n' + euro_flags['italy'].create(undefined, false) + '\n\n' +
' Latvia:\n' + euro_flags['latvia'].create(undefined, false) + '\n\n' +
' Lithuania:\n' + euro_flags['lithuania'].create(undefined, false) + '\n\n' +
' Luxembourg:\n' + euro_flags['luxembourg'].create(undefined, false) + '\n\n' +
' Monaco:\n' + euro_flags['monaco'].create(undefined, false) + '\n\n' +
' Netherlands:\n' + euro_flags['netherlands'].create(undefined, false) + '\n\n' +
' Norway:\n' + euro_flags['norway'].create(undefined, false) + '\n\n' +
' Poland:\n' + euro_flags['poland'].create(undefined, false) + '\n\n' +
' Romania:\n' + euro_flags['romania'].create(undefined, false) + '\n\n' +
' Russia:\n' + euro_flags['russia'].create(undefined, false) + '\n\n' +
' Sweden:\n' + euro_flags['sweden'].create(undefined, false) + '\n\n' +
' Switzerland:\n' + euro_flags['switzerland'].create(undefined, false) + '\n\n' +
' Ukraine:\n' + euro_flags['ukraine'].create(undefined, false);
console.log(flags);
}
const printUsage = function(includeCountryNames) {
console.log('\nUsage:');
console.log(' $ euro-flags <country-name>');
console.log(' $ euro-flags <country-name> --border');
console.log(' $ euro-flags <country-name> --scale=<scale-number>');
console.log(' $ euro-flags <country-name> --scale=full');
if (includeCountryNames) {
console.log('\nSupported Countries:');
console.log(' Armenia, Austria, Belgium, Bulgaria, Denmark, England, Estonia,');
console.log(' Finland, France, Georgia, Germany, Greece, Hungary, Iceland,');
console.log(' Ireland, Italy, Latvia, Lithuania, Luxembourg, Monaco, Netherlands,');
console.log(' Norway, Poland, Romania, Russia, Sweden, Switzerland, Ukraine');
}
}
if (process.argv.length > 2) {
const params = process.argv.slice(2);
const country = params[0].toLowerCase();
const border = getBorder(params);
const scale = getScale(params, country, border);
if (euro_flags[country]) {
console.log(euro_flags[country].create(scale, border));
} else {
printUsage(true);
}
} else {
printAll();
printUsage(false);
}