From 8511b1420bd199019378cf91ee3455cd5271eeb3 Mon Sep 17 00:00:00 2001 From: DrMaxNix Date: Tue, 6 Sep 2022 17:22:07 +0200 Subject: [PATCH] :art: build stderr messages with additional data --- src/io.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/src/io.js b/src/io.js index 6485d00..ec61c76 100644 --- a/src/io.js +++ b/src/io.js @@ -19,18 +19,81 @@ class Juicescript_io { */ get stderr(){ return { - debug: (text) => { - this.callback.stderr("[DEBUG] " + text, "debug"); + debug: (text, additional) => { + // add defaults + additional ??= {}; + additional.line ??= null; + + // set constant values + additional.prefix = "DEBUG"; + + // build and print + this.callback.stderr(this.build_stderr(text, additional), "debug"); }, - info: (text) => { - this.callback.stderr("[INFO ] " + text, "info"); + + info: (text, additional) => { + // add defaults + additional ??= {}; + additional.line ??= null; + + // set constant values + additional.prefix = "INFO "; + + // build and print + this.callback.stderr(this.build_stderr(text, additional), "info"); }, - warning: (text) => { - this.callback.stderr("[WARN ] " + text, "warning"); + + warning: (text, additional) => { + // add defaults + additional ??= {}; + additional.line ??= null; + + // set constant values + additional.prefix = "WARN "; + + // build and print + this.callback.stderr(this.build_stderr(text, additional), "warning"); }, - error: (text) => { - this.callback.stderr("[ERROR] " + text, "error"); + + error: (text, additional) => { + // add defaults + additional ??= {}; + additional.line ??= null; + + // set constant values + additional.prefix = "ERROR"; + + // build and print + this.callback.stderr(this.build_stderr(text, additional), "error"); } } } + + /* + HELPER: Build stderr string from TEXT and ADDITIONAL data + */ + build_stderr(text, additional){ + // START WITH EMPTY STRING // + var string = ""; + + + // PREFIX // + if(additional.prefix){ + string += "[" + additional.prefix + "] "; + } + + + // LINE NUMBER // + if(additional.line){ + string += "(line " + additional.line + ") "; + } + + + // TEXT // + string += text; + + + // RETURN // + return string; + } } \ No newline at end of file