bpm/modules/console.js
2020-02-21 16:39:49 +01:00

91 lines
No EOL
2.4 KiB
JavaScript

var colors = {
Reset: "\x1b[0m",
Bright: "\x1b[1m",
Dim: "\x1b[2m",
Underscore: "\x1b[4m",
Blink: "\x1b[5m",
Reverse: "\x1b[7m",
Hidden: "\x1b[8m",
FgBlack: "\x1b[30m",
FgRed: "\x1b[31m",
FgGreen: "\x1b[32m",
FgYellow: "\x1b[33m",
FgBlue: "\x1b[34m",
FgMagenta: "\x1b[35m",
FgCyan: "\x1b[36m",
FgWhite: "\x1b[37m",
BgBlack: "\x1b[40m",
BgRed: "\x1b[41m",
BgGreen: "\x1b[42m",
BgYellow: "\x1b[43m",
BgBlue: "\x1b[44m",
BgMagenta: "\x1b[45m",
BgCyan: "\x1b[46m",
BgWhite: "\x1b[47m",
};
class CustomConsole {
colors = colors;
width = process.stdout.columns | 999;
height = process.stdout.rows | 999;
time(...args){
return console.time(...args);
}
timeEnd(...args){
return console.timeEnd(...args);
}
outputArray(arr, empty = "None") {
if(!Array.isArray(arr))throw Error("Cannot convert non-array to array");
if(!arr.length)return console.log(empty);
var maxWidth = 0;
arr.forEach(a => {
var stripped = a.replace(/\x1b\[[0-9]{1,2}m/gi, "");
if(stripped.length + 1 > maxWidth)maxWidth = stripped.length + 1;
});
var width = Math.floor(maxWidth / this.width);
var pt = 0;
var collumn = 0;
var lines = [];
arr.forEach(a => {
var stripped = a.replace(/\x1b\[[0-9]{1,2}m/gi, "");
if(lines[pt]){
lines[pt] += " " + a + " ".repeat(maxWidth - stripped.length);
} else {
lines[pt] = a + " ".repeat(maxWidth - stripped.length);
}
if(collumn > width){
collumn = 0;
pt++;
return;
}
collumn++;
});
//console.log(lines);
lines.forEach((a) => console.log(a));
}
output(...args) {
console.log(...args);
}
log(...args) {
console.log(colors.FgGreen + "BPM" + colors.Reset + colors.Bright + " LOG" + colors.Reset, ...args);
}
warn(...args) {
console.log(colors.FgGreen + "BPM" + colors.Reset + colors.Bright + colors.FgYellow + " WARN" + colors.Reset, ...args);
}
error(...args) {
console.log(colors.FgGreen + "BPM" + colors.Reset + colors.Bright + colors.FgRed + " ERROR" + colors.Reset, ...args);
}
err(...args) {
this.error(args);
}
}
module.exports = CustomConsole;