73 lines
1.2 KiB
Go
73 lines
1.2 KiB
Go
|
|
package main
|
||
|
|
|
||
|
|
import "hawk"
|
||
|
|
import "fmt"
|
||
|
|
import "os"
|
||
|
|
import "runtime"
|
||
|
|
import "runtime/debug"
|
||
|
|
//import "sync"
|
||
|
|
import "time"
|
||
|
|
|
||
|
|
func exit_with_error(msg string, err error) {
|
||
|
|
fmt.Printf("ERROR: %s - %s\n", msg, err.Error())
|
||
|
|
os.Exit(1)
|
||
|
|
}
|
||
|
|
|
||
|
|
func make_hawk(script string) (*hawk.Hawk, error) {
|
||
|
|
var h *hawk.Hawk
|
||
|
|
var err error
|
||
|
|
|
||
|
|
h, err = hawk.New()
|
||
|
|
if err != nil { return nil, err }
|
||
|
|
|
||
|
|
err = h.ParseText(script)
|
||
|
|
if err != nil {
|
||
|
|
h.Close()
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
|
||
|
|
return h, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
var h *hawk.Hawk
|
||
|
|
var rtx *hawk.Rtx
|
||
|
|
var err error
|
||
|
|
|
||
|
|
debug.SetGCPercent(100) // enable normal GC
|
||
|
|
|
||
|
|
fmt.Printf ("BEGINNING OF TEST3\n")
|
||
|
|
|
||
|
|
h, err = make_hawk(`function main(s) {
|
||
|
|
print enbase64(s, "hello", 1.289);
|
||
|
|
print debase64(s);
|
||
|
|
return x
|
||
|
|
}`)
|
||
|
|
if err != nil {
|
||
|
|
fmt.Printf("ERROR: failed to make hawk - %s\n", err.Error())
|
||
|
|
return
|
||
|
|
}
|
||
|
|
|
||
|
|
rtx, err = h.NewRtx("test3")
|
||
|
|
if err != nil {
|
||
|
|
//
|
||
|
|
} else {
|
||
|
|
var v *hawk.Val
|
||
|
|
|
||
|
|
v, err = rtx.Call("main", hawk.Must(rtx.NewValFromStr("this is a test3 string")))
|
||
|
|
if err != nil {
|
||
|
|
//
|
||
|
|
} else {
|
||
|
|
fmt.Printf("V=>[%v]\n", v.String())
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
h.Close()
|
||
|
|
fmt.Printf ("END OF TEST3\n")
|
||
|
|
|
||
|
|
runtime.GC()
|
||
|
|
runtime.Gosched()
|
||
|
|
time.Sleep(1000 * time.Millisecond) // give finalizer time to print
|
||
|
|
}
|
||
|
|
|