fix wasm build
This commit is contained in:
parent
4a0ec4c8fe
commit
9d4cc1ff09
|
@ -9,7 +9,6 @@ GOOS=freebsd GOARCH=386 go build -o bin/varaq-freebsd-386 main.go
|
||||||
GOOS=freebsd GOARCH=amd64 go build -o bin/varaq-freebsd-amd64 main.go
|
GOOS=freebsd GOARCH=amd64 go build -o bin/varaq-freebsd-amd64 main.go
|
||||||
GOOS=freebsd GOARCH=arm go build -o bin/varaq-freebsd-arm main.go
|
GOOS=freebsd GOARCH=arm go build -o bin/varaq-freebsd-arm main.go
|
||||||
GOOS=illumos GOARCH=amd64 go build -o bin/varaq-illumos-amd64 main.go
|
GOOS=illumos GOARCH=amd64 go build -o bin/varaq-illumos-amd64 main.go
|
||||||
GOOS=js GOARCH=wasm go build -o bin/varaq.wasm main.go
|
|
||||||
GOOS=linux GOARCH=386 go build -o bin/varaq-linux-386 main.go
|
GOOS=linux GOARCH=386 go build -o bin/varaq-linux-386 main.go
|
||||||
GOOS=linux GOARCH=amd64 go build -o bin/varaq-linux-amd64 main.go
|
GOOS=linux GOARCH=amd64 go build -o bin/varaq-linux-amd64 main.go
|
||||||
GOOS=linux GOARCH=arm go build -o bin/varaq-linux-arm main.go
|
GOOS=linux GOARCH=arm go build -o bin/varaq-linux-arm main.go
|
||||||
|
@ -35,3 +34,4 @@ GOOS=windows GOARCH=386 go build -o bin/varaq-windows-386 main.go
|
||||||
GOOS=windows GOARCH=amd64 go build -o bin/varaq-windows-amd64 main.go
|
GOOS=windows GOARCH=amd64 go build -o bin/varaq-windows-amd64 main.go
|
||||||
GOOS=windows GOARCH=arm go build -o bin/varaq-windows-arm main.go
|
GOOS=windows GOARCH=arm go build -o bin/varaq-windows-arm main.go
|
||||||
GOOS=windows GOARCH=arm64 go build -o bin/varaq-windows-arm64 main.go
|
GOOS=windows GOARCH=arm64 go build -o bin/varaq-windows-arm64 main.go
|
||||||
|
GOOS=js GOARCH=wasm go build -o bin/varaq.wasm webmain.go
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"index.html" readall disp
|
||||||
|
} ":3333" servehttp
|
Binary file not shown.
40
main.go
40
main.go
|
@ -1,26 +1,14 @@
|
||||||
//go:build js && wasm
|
|
||||||
// +build js,wasm
|
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
|
||||||
"syscall/js"
|
|
||||||
"varaq/varaq"
|
"varaq/varaq"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if runtime.GOARCH == "wasm" {
|
|
||||||
done := make(chan struct{}, 0)
|
|
||||||
js.Global().Set("varaq", js.FuncOf(jsInterpret))
|
|
||||||
fmt.Println("varaq WASM init, Qa'pla!")
|
|
||||||
<-done
|
|
||||||
} else {
|
|
||||||
argsCount := len(os.Args[1:])
|
argsCount := len(os.Args[1:])
|
||||||
if argsCount >= 1 {
|
if argsCount >= 1 {
|
||||||
runFile(os.Args[1])
|
runFile(os.Args[1])
|
||||||
|
@ -29,7 +17,6 @@ func main() {
|
||||||
}
|
}
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
func repl() {
|
func repl() {
|
||||||
scanner := bufio.NewScanner(os.Stdin)
|
scanner := bufio.NewScanner(os.Stdin)
|
||||||
|
@ -74,30 +61,3 @@ func interpret(src string) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func jsInterpret(this js.Value, args []js.Value) interface{} {
|
|
||||||
if len(args) < 1 {
|
|
||||||
return js.ValueOf("no input")
|
|
||||||
}
|
|
||||||
input := args[0].String()
|
|
||||||
|
|
||||||
tokens, err := varaq.Tokenize(input)
|
|
||||||
if err != nil {
|
|
||||||
return js.ValueOf(fmt.Errorf("%v", err))
|
|
||||||
}
|
|
||||||
|
|
||||||
code := varaq.Parse(tokens)
|
|
||||||
buf := bytes.NewBufferString("")
|
|
||||||
|
|
||||||
strings := make([]string, len(args[1:]))
|
|
||||||
for i, jsVal := range args[1:] {
|
|
||||||
strings[i] = jsVal.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
err = varaq.Interpret(code, strings, buf)
|
|
||||||
if err != nil {
|
|
||||||
return js.ValueOf(fmt.Errorf("%v", err))
|
|
||||||
}
|
|
||||||
|
|
||||||
return js.ValueOf(buf.String())
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
//go:build (js && wasm)
|
||||||
|
// +build js,wasm
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"syscall/js"
|
||||||
|
"varaq/varaq"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
done := make(chan struct{}, 0)
|
||||||
|
js.Global().Set("varaq", js.FuncOf(jsInterpret))
|
||||||
|
fmt.Println("varaq WASM init, Qa'pla!")
|
||||||
|
<-done
|
||||||
|
}
|
||||||
|
|
||||||
|
func jsInterpret(this js.Value, args []js.Value) interface{} {
|
||||||
|
if len(args) < 1 {
|
||||||
|
return js.ValueOf("no input")
|
||||||
|
}
|
||||||
|
input := args[0].String()
|
||||||
|
|
||||||
|
tokens, err := varaq.Tokenize(input)
|
||||||
|
if err != nil {
|
||||||
|
return js.ValueOf(fmt.Errorf("%v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
code := varaq.Parse(tokens)
|
||||||
|
buf := bytes.NewBufferString("")
|
||||||
|
|
||||||
|
strings := make([]string, len(args[1:]))
|
||||||
|
for i, jsVal := range args[1:] {
|
||||||
|
strings[i] = jsVal.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
err = varaq.Interpret(code, strings, buf)
|
||||||
|
if err != nil {
|
||||||
|
return js.ValueOf(fmt.Errorf("%v", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
return js.ValueOf(buf.String())
|
||||||
|
}
|
Loading…
Reference in New Issue