From 8a1923861236bca52b7a86ca6cb22f1fa48636c0 Mon Sep 17 00:00:00 2001 From: n loewen Date: Tue, 29 Aug 2023 12:02:18 -0400 Subject: [PATCH] dbg - Change to hardcoded functions instead of factory-generated ones, because VS Code type checking can't cope with the generated ones --- src/assembler.js | 6 +-- src/dbg.js | 95 ++++++++++++++++++++++++++++++------------------ 2 files changed, 63 insertions(+), 38 deletions(-) diff --git a/src/assembler.js b/src/assembler.js index 2e7cb1c..82d4b42 100644 --- a/src/assembler.js +++ b/src/assembler.js @@ -133,7 +133,7 @@ function handleLabelDefinition(op, IP, labels) { dbg.nit(` Points to byte: ${labels[label].pointsToByte}`); dbg.nit(` Bytes to replace: ${labels[label].bytesToReplace}`); dbg.nit(` IP: $${num2hex(IP)}, new code: none`); - dbgGroupEnd(1, 'Input line'); + dbg.nitGroupEnd('Input line'); return labels; } @@ -364,11 +364,11 @@ function decodeInstructions(source) { // Backfill label references for (let k of Object.keys(labels)) { - dbgGroup(1, `${ASM_LABEL_PREFIX}${k}`); + dbg.nitGroup(`${ASM_LABEL_PREFIX}${k}`); let label = labels[k]; dbg.nit(`Points to byte: ${label.pointsToByte}`); dbg.nit(`Bytes to replace: ${label.bytesToReplace}`); - dbgGroupEnd(1); + dbg.nitGroupEnd(); for (let j = 0; j < label.bytesToReplace.length; j++) { machineCode[label.bytesToReplace[j]] = label.pointsToByte; } diff --git a/src/dbg.js b/src/dbg.js index a0806a9..e9aa3a9 100644 --- a/src/dbg.js +++ b/src/dbg.js @@ -8,51 +8,76 @@ module.exports = class DBG { } else { throw new Error(`'${level}' is not a valid debug level`); } - this._levels.forEach((l) => { - this._createLogger(l); - this._createGrouper(l) - this._createGroupEnder(l) - this._createExecer(l) - }); } _levels = ['nitpick', 'debug', 'info', 'warn']; - _shortNames = {'nitpick':'nit', 'debug':'d', 'info':'i', 'warn':'warn'}; - _createLogger(name) { - const short = this._shortNames[name] - this[short] = (s = '') => { - if (this._lvl2num(name) >= this._lvl2num(this._level)) { - console.log(s); - } - } + warn = (s='') => { + if (this._lvl2num('warn') < this._lvl2num(this._level)) return + console.log(s); + } + i = (s='') => { + if (this._lvl2num('info') < this._lvl2num(this._level)) return + console.log(s); + } + d = (s='') => { + if (this._lvl2num('debug') < this._lvl2num(this._level)) return + console.log(s); + } + nit = (s='') => { + if (this._lvl2num('nitpick') < this._lvl2num(this._level)) return + console.log(s); } - _createGrouper(name) { - const short = this._shortNames[name] - this[short + 'Group'] = (s) => { - if (this._lvl2num(name) >= this._lvl2num(this._level)) { - console.group(s); - } - } + 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); } - _createGroupEnder(name) { - const short = this._shortNames[name] - this[short+'GroupEnd'] = () => { - if (this._lvl2num(name) >= this._lvl2num(this._level)) { - console.groupEnd(); - } - } + 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(); } - _createExecer(name) { - const short = this._shortNames[name] - this[short+'Exec'] = (func) => { - if (this._lvl2num(name) >= this._lvl2num(this._level)) { - func(); - } - } + 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) {