|
|
|
@ -10,6 +10,7 @@ import ( |
|
|
|
|
"github.com/obscuren/otto" |
|
|
|
|
"io/ioutil" |
|
|
|
|
"os" |
|
|
|
|
"path" |
|
|
|
|
"path/filepath" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
@ -25,6 +26,20 @@ type JSRE struct { |
|
|
|
|
objectCb map[string][]otto.Value |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (jsre *JSRE) LoadExtFile(path string) { |
|
|
|
|
result, err := ioutil.ReadFile(path) |
|
|
|
|
if err == nil { |
|
|
|
|
jsre.vm.Run(result) |
|
|
|
|
} else { |
|
|
|
|
ethutil.Config.Log.Debugln("Could not load file:", path) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (jsre *JSRE) LoadIntFile(file string) { |
|
|
|
|
assetPath := path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "ethereal", "assets", "ext") |
|
|
|
|
jsre.LoadExtFile(path.Join(assetPath, file)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func NewJSRE(ethereum *eth.Ethereum) *JSRE { |
|
|
|
|
re := &JSRE{ |
|
|
|
|
ethereum, |
|
|
|
@ -39,6 +54,10 @@ func NewJSRE(ethereum *eth.Ethereum) *JSRE { |
|
|
|
|
// Init the JS lib
|
|
|
|
|
re.vm.Run(jsLib) |
|
|
|
|
|
|
|
|
|
// Load extra javascript files
|
|
|
|
|
re.LoadIntFile("string.js") |
|
|
|
|
re.LoadIntFile("big.js") |
|
|
|
|
|
|
|
|
|
// We have to make sure that, whoever calls this, calls "Stop"
|
|
|
|
|
go re.mainLoop() |
|
|
|
|
|
|
|
|
|