diff options
author | Felix Lange <fjl@twurst.com> | 2015-03-18 20:39:01 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2015-03-18 20:39:01 +0800 |
commit | d15f90645d5b2e90c441140972d9fe6ecd753643 (patch) | |
tree | b1f024c3c01f25b67bc25ed0452a9b584dad984f /javascript/javascript_runtime.go | |
parent | a59dd393e71cc52b1f96973aef884af619166f38 (diff) | |
parent | 0a1eeca41e6ba5920ba65d9b41654768299bc7e3 (diff) | |
download | dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.gz dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.bz2 dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.lz dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.xz dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.tar.zst dexon-d15f90645d5b2e90c441140972d9fe6ecd753643.zip |
Merge remote-tracking branch 'ethereum/conversion' into conversion
Diffstat (limited to 'javascript/javascript_runtime.go')
-rw-r--r-- | javascript/javascript_runtime.go | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/javascript/javascript_runtime.go b/javascript/javascript_runtime.go deleted file mode 100644 index 0a137f72a..000000000 --- a/javascript/javascript_runtime.go +++ /dev/null @@ -1,103 +0,0 @@ -package javascript - -import ( - "fmt" - "io/ioutil" - "os" - "path" - "path/filepath" - - "github.com/ethereum/go-ethereum/logger" - "github.com/ethereum/go-ethereum/xeth" - "github.com/obscuren/otto" -) - -var jsrelogger = logger.NewLogger("JSRE") - -type JSRE struct { - Vm *otto.Otto - xeth *xeth.XEth - - objectCb map[string][]otto.Value -} - -func (jsre *JSRE) LoadExtFile(path string) { - result, err := ioutil.ReadFile(path) - if err == nil { - jsre.Vm.Run(result) - } else { - jsrelogger.Infoln("Could not load file:", path) - } -} - -func (jsre *JSRE) LoadIntFile(file string) { - assetPath := path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "cmd", "mist", "assets", "ext") - jsre.LoadExtFile(path.Join(assetPath, file)) -} - -func NewJSRE(xeth *xeth.XEth) *JSRE { - re := &JSRE{ - otto.New(), - xeth, - make(map[string][]otto.Value), - } - - // Init the JS lib - re.Vm.Run(jsLib) - - // Load extra javascript files - re.LoadIntFile("bignumber.min.js") - - re.Bind("eth", &JSEthereum{re.xeth, re.Vm}) - - re.initStdFuncs() - - jsrelogger.Infoln("started") - - return re -} - -func (self *JSRE) Bind(name string, v interface{}) { - self.Vm.Set(name, v) -} - -func (self *JSRE) Run(code string) (otto.Value, error) { - return self.Vm.Run(code) -} - -func (self *JSRE) initStdFuncs() { - t, _ := self.Vm.Get("eth") - eth := t.Object() - eth.Set("require", self.require) -} - -func (self *JSRE) Require(file string) error { - if len(filepath.Ext(file)) == 0 { - file += ".js" - } - - fh, err := os.Open(file) - if err != nil { - return err - } - - content, _ := ioutil.ReadAll(fh) - self.Run("exports = {};(function() {" + string(content) + "})();") - - return nil -} - -func (self *JSRE) require(call otto.FunctionCall) otto.Value { - file, err := call.Argument(0).ToString() - if err != nil { - return otto.UndefinedValue() - } - if err := self.Require(file); err != nil { - fmt.Println("err:", err) - return otto.UndefinedValue() - } - - t, _ := self.Vm.Get("exports") - - return t -} |