2022-10-05 19:18:32 +02:00
|
|
|
"use strict";
|
|
|
|
let my_output_callback = function(text){
|
|
|
|
let line_list = text.split("\n");
|
|
|
|
|
|
|
|
for(let one_line of line_list){
|
|
|
|
let span_one_line = document.createElement("span");
|
|
|
|
|
|
|
|
span_one_line.classList.add("line");
|
|
|
|
span_one_line.textContent = one_line;
|
|
|
|
|
|
|
|
document.getElementById("console").appendChild(span_one_line);
|
|
|
|
document.getElementById("console").scrollTop = document.getElementById("console").scrollHeight;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
let my_error_callback = function(text, type){
|
|
|
|
let span_one_line = document.createElement("span");
|
|
|
|
|
|
|
|
span_one_line.classList.add("line", "stderr-" + type);
|
|
|
|
span_one_line.textContent = text + "\n";
|
|
|
|
|
|
|
|
document.getElementById("console").appendChild(span_one_line);
|
|
|
|
document.getElementById("console").scrollTop = document.getElementById("console").scrollHeight;
|
|
|
|
}
|
|
|
|
|
|
|
|
let juicescript = new Juicescript({
|
|
|
|
callback: {
|
|
|
|
stdout: my_output_callback,
|
|
|
|
stderr: my_error_callback
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2022-10-05 19:31:46 +02:00
|
|
|
document.addEventListener("DOMContentLoaded", function(){
|
|
|
|
button_run();
|
|
|
|
});
|
|
|
|
|
2022-10-05 19:18:32 +02:00
|
|
|
function button_run(){
|
|
|
|
// clear console
|
|
|
|
document.getElementById("console").innerHTML = "";
|
|
|
|
|
|
|
|
// get source code from editor
|
|
|
|
let juice_program = document.getElementById("editor").value;
|
|
|
|
|
|
|
|
// parse source code
|
|
|
|
/**/const parse_start = performance.now();
|
|
|
|
let parse_success = juicescript.parse(juice_program);
|
|
|
|
/**/const parse_end = performance.now();
|
|
|
|
/**/juicescript.io.stderr.info("Parsing took " + (parse_end - parse_start) + "ms");
|
|
|
|
|
|
|
|
// execute program
|
|
|
|
if(parse_success){
|
|
|
|
/**/const run_start = performance.now();
|
|
|
|
juicescript.run();
|
|
|
|
/**/const run_end = performance.now();
|
|
|
|
/**/juicescript.io.stderr.info("Running took " + (run_end - run_start) + "ms");
|
|
|
|
|
|
|
|
} else {
|
|
|
|
juicescript.io.stderr.info("Not executing program due to parse error");
|
|
|
|
}
|
|
|
|
}
|