|
|
@ -286,7 +286,7 @@ func (self *JSRE) loadScript(call otto.FunctionCall) otto.Value { |
|
|
|
// uses the "prettyPrint" JS function to format a value
|
|
|
|
// uses the "prettyPrint" JS function to format a value
|
|
|
|
func (self *JSRE) PrettyPrint(v interface{}) (val otto.Value, err error) { |
|
|
|
func (self *JSRE) PrettyPrint(v interface{}) (val otto.Value, err error) { |
|
|
|
var method otto.Value |
|
|
|
var method otto.Value |
|
|
|
v, err = self.vm.ToValue(v) |
|
|
|
v, err = self.ToValue(v) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
@ -297,8 +297,23 @@ func (self *JSRE) PrettyPrint(v interface{}) (val otto.Value, err error) { |
|
|
|
return method.Call(method, v) |
|
|
|
return method.Call(method, v) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// creates an otto value from a go type
|
|
|
|
// creates an otto value from a go type (serialized version)
|
|
|
|
|
|
|
|
func (self *JSRE) ToValue(v interface{}) (otto.Value, error) { |
|
|
|
|
|
|
|
done := make(chan bool) |
|
|
|
|
|
|
|
req := &evalReq{ |
|
|
|
|
|
|
|
fn: func(res *evalResult) { |
|
|
|
|
|
|
|
res.result, res.err = self.vm.ToValue(v) |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
done: done, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
self.evalQueue <- req |
|
|
|
|
|
|
|
<-done |
|
|
|
|
|
|
|
return req.res.result, req.res.err |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// creates an otto value from a go type (non-serialized version)
|
|
|
|
func (self *JSRE) ToVal(v interface{}) otto.Value { |
|
|
|
func (self *JSRE) ToVal(v interface{}) otto.Value { |
|
|
|
|
|
|
|
|
|
|
|
result, err := self.vm.ToValue(v) |
|
|
|
result, err := self.vm.ToValue(v) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
fmt.Println("Value unknown:", err) |
|
|
|
fmt.Println("Value unknown:", err) |
|
|
|