gh-97747: Improvements to WASM browser REPL. (#97665)

Improvements to WASM browser REPL.

Adds a text box to write and run code outside the REPL, a stop button, and handling of Ctrl-D for EOF.
This commit is contained in:
Katie Bell 2024-05-31 17:58:46 +10:00 committed by GitHub
parent 0d07182821
commit 010aaa32fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 69 additions and 8 deletions

View file

@ -19,18 +19,18 @@ class StdinBuffer {
}
stdin = () => {
if (this.numberOfCharacters + 1 === this.readIndex) {
while (this.numberOfCharacters + 1 === this.readIndex) {
if (!this.sentNull) {
// Must return null once to indicate we're done for now.
this.sentNull = true
return null
}
this.sentNull = false
// Prompt will reset this.readIndex to 1
this.prompt()
}
const char = this.buffer[this.readIndex]
this.readIndex += 1
// How do I send an EOF??
return char
}
}
@ -71,7 +71,11 @@ var Module = {
onmessage = (event) => {
if (event.data.type === 'run') {
// TODO: Set up files from event.data.files
if (event.data.files) {
for (const [filename, contents] of Object.entries(event.data.files)) {
Module.FS.writeFile(filename, contents)
}
}
const ret = callMain(event.data.args)
postMessage({
type: 'finished',