var cmd_line = ""
var is_executing = false;
var working_dir = "C:\\"
function addCmdChar( char_code ) {
let char = String.fromCharCode( char_code )
cmd_line += char
if ( !is_executing )
print( char )
}
function executeCmdLine() {
// If not executing something, use the command line to execute something
if ( !is_executing ) {
is_executing = true
invoke_extern("exec", cmd_line)
}
// If already executing something, use the line as input
else
invoke_extern("input", cmd_line)
// Empty the buffer
cmd_line = ""
}
function initialize( wd ) {
working_dir = wd;
printPrefix()
}
function onExecutionEnded() {
printPrefix()
print( cmd_line )
is_executing = false
}
function escapeText(text) {
return text
.replaceAll(' ', ' ')
.replaceAll("\r\n", '
')
.replaceAll("\n", '
')
}
function onOutputReceived( output ) {
let span = document.createElement("span")
span.innerHTML = escapeText(output)
document.body.firstElementChild.appendChild( span )
}
function onErrorOutputReceived( output ) {
let span = document.createElement("span")
span.setAttribute("class", "stderr")
span.innerHTML = escapeText(output)
document.body.firstElementChild.appendChild( span )
}
function print( text ) {
$('body div').append( text )
}
function printPrefix() {
print(working_dir + '$ ')
}
window.onkeypress = e => {
if ( e.charCode == 0x0D ) {
print("\r\n")
executeCmdLine()
}
else
addCmdChar( e.charCode )
}