cardiograph-computer/javascript-old/dbg.js

113 lines
2.6 KiB
JavaScript

module.exports = class DBG {
/**
* @param ${'none'|'warn'|'info'|'debug'|'nitpick'} [level='info']
**/
constructor(level = 'info') {
this.setLevel(level);
}
_levels = ['nitpick', 'debug', 'info', 'warn', 'none'];
setLevel(level) {
if (this._levels.includes(level)) {
this._level = level;
} else {
throw new Error(`'${level}' is not a valid debug level`);
}
}
/** @param {any} s **/
warn = (s='', ...z) => {
if (this._lvl2num('warn') < this._lvl2num(this._level)) return
console.log(s, ...z);
}
/** @param {any} s **/
i = (s='', ...z) => {
if (this._lvl2num('info') < this._lvl2num(this._level)) return
console.log(s, ...z);
}
/** @param {any} s **/
d = (s='', ...z) => {
if (this._lvl2num('debug') < this._lvl2num(this._level)) return
console.log(s, ...z);
}
/** @param {any} s **/
nit = (s='', ...z) => {
if (this._lvl2num('nitpick') < this._lvl2num(this._level)) return
console.log(s, ...z);
}
warnGroup = (s) => {
if (this._lvl2num('warn') < this._lvl2num(this._level)) return
console.group(s);
}
infoGroup = (s) => {
if (this._lvl2num('info') < this._lvl2num(this._level)) return
console.group(s);
}
debugGroup = (s) => {
if (this._lvl2num('debug') < this._lvl2num(this._level)) return
console.group(s);
}
nitGroup = (s) => {
if (this._lvl2num('nit') < this._lvl2num(this._level)) return
console.group(s);
}
warnGroupEnd = (s) => {
if (this._lvl2num('warn') < this._lvl2num(this._level)) return
console.groupEnd();
}
infoGroupEnd = (s) => {
if (this._lvl2num('info') < this._lvl2num(this._level)) return
console.group();
}
debugGroupEnd = (s) => {
if (this._lvl2num('debug') < this._lvl2num(this._level)) return
console.group();
}
nitGroupEnd = (s) => {
if (this._lvl2num('nit') < this._lvl2num(this._level)) return
console.group();
}
warnExec = (fn) => {
if (this._lvl2num('warn') < this._lvl2num(this._level)) return
fn();
}
infoExec = (fn) => {
if (this._lvl2num('info') < this._lvl2num(this._level)) return
fn();
}
debugExec = (fn) => {
if (this._lvl2num('debug') < this._lvl2num(this._level)) return
fn();
}
nitExec = (fn) => {
if (this._lvl2num('nit') < this._lvl2num(this._level)) return
fn();
}
_lvl2num(lvl) {
return 1 + this._levels.findIndex(l => l === lvl);
}
}
/* TEST
const dbg = new DBG('nitpick');
dbg.warnGroup('w');
dbg.warn('warn');
dbg.warnGroupEnd();
dbg.iGroup('i');
dbg.i('info');
dbg.iGroupEnd();
dbg.dGroup('d');
dbg.d('debug');
dbg.dGroupEnd();
dbg.nitGroup('n');
dbg.nit('nitpick');
dbg.nitGroupEnd();
*/