gojs
gojs copied to clipboard
Go bindings for the javascriptcore library (used in Webkit).
Go JavaScript Bindings
Highly experiemental, I'm not even sure these work currently. Original author is Robery Johnstone, and his mercurial repository can be found at https://bitbucket.org/rj/golang-javascriptcore/. I have updated the bindings to work with the latest changes to the reflect API, bits of it manually. The entire test suite minus one function (finally!) passes.
Update (2013/10/16): The test suite does not work at all, but it compiles again with go 1.0. Feel free to hack away at this if you think it might be useful :).
Update (2013/12/26): Thanks to @sqs, the test suite now passes. This library should still be considered "experimental", but should work.
Install
go get github.com/crazy2be/gojs
Use:
package main
import (
"github.com/crazy2be/gojs"
"fmt"
)
func main() {
ctx := gojs.NewContext()
defer ctx.Release()
ret, err := ctx.EvaluateScript("['hello', 'world'].join(' ')", nil, ".", 0)
if err != nil {
fmt.Println("Script had an error :(", ctx.ToStringOrDie(err))
return
}
if ret == nil {
fmt.Println("Nothing returned...")
return
}
retstr := ctx.ToStringOrDie(ret)
fmt.Println(retstr)
}
TODOs
(for anyone interested)
- Get the test suite to pass ;)
- Move as many functions as possible off of context. We should be able to make a nicely broken-down API where the conceptual weight is lower. For example, all of the functions that take
obj *Object
as the first parameter should really just be functions on*Object
directly. - ???
- PROFIT! (i.e. make something cool).
Documentation
There's not much documentation, because the original had no documentation. If I find a use for this beyond curiousity, I might add that as I go. Current documentation generated by godoc is available at http://godoc.org/github.com/crazy2be/gojs.