diff --git a/juicescript.js b/juicescript.js index 9e3a34b..de86c44 100644 --- a/juicescript.js +++ b/juicescript.js @@ -1,5 +1,9 @@ /*! Juicescript.js v1.0.0-a | (c) DrMaxNix 2022 | juice.drmaxnix.de */ +///////////////////////// +// M A I N C L A S S // +///////////////////////// + class Juicescript { /* CONSTRUCTOR: Return new juicescript parser with OPTIONS @@ -18,15 +22,17 @@ class Juicescript { if(!(this.callback.stderr instanceof Function)){ throw "invalid stderr callback"; } + + + // GET IO ADAPTER // + this.io = new Juicescript_io(this.callback); } /* Parse given PROGRAM-STRING and store syntax tree */ parse(program_string){ - // DEVIDE INTO LINES // - var line_list = program_string.split("\n"); - /**/console.log(line_list); + } @@ -35,30 +41,55 @@ class Juicescript { // DEBUG STUFFS // run(){ - //this.io_stdout("stdout text"); - //this.io_stderr_debug("This debug is a test"); - //this.io_stderr_info("This info is a test"); - //this.io_stderr_warning("This warning is a test"); - //this.io_stderr_error("This error is a test"); - } - - - - - - io_stdout(text){ - this.callback.stdout(text); - } - io_stderr_debug(text){ - this.callback.stderr("[DEBUG] " + text, "debug"); - } - io_stderr_info(text){ - this.callback.stderr("[INFO ] " + text, "info"); - } - io_stderr_warning(text){ - this.callback.stderr("[WARN ] " + text, "warning"); - } - io_stderr_error(text){ - this.callback.stderr("[ERROR] " + text, "error"); + this.io.stdout("stdout text"); + this.io.stderr.debug("This debug is a test"); + this.io.stderr.info("This info is a test"); + this.io.stderr.warning("This warning is a test"); + this.io.stderr.error("This error is a test"); + } +} + + + + + +///////////////////////////////// +// I N P U T / O U T P U T // +///////////////////////////////// + +class Juicescript_io { + /* + CONSTRUCTOR: Return new juicescript io adapter with CALLBACKs + */ + constructor(callback){ + // store callbacks + this.callback = callback; + } + + /* + HELPER: Stdout method + */ + stdout(text){ + this.callback.stdout(text); + } + + /* + GETTER: Return stderr method collection + */ + get stderr(){ + return { + debug: (text) => { + this.callback.stderr("[DEBUG] " + text, "debug"); + }, + info: (text) => { + this.callback.stderr("[INFO ] " + text, "info"); + }, + warning: (text) => { + this.callback.stderr("[WARN ] " + text, "warning"); + }, + error: (text) => { + this.callback.stderr("[ERROR] " + text, "error"); + } + } } }