func Define(vm *otto.Otto, l *loop.Loop) error { if v, err := vm.Get("Promise"); err != nil { return err } else if !v.IsUndefined() { return nil } if err := timers.Define(vm, l); err != nil { return err } s, err := vm.Compile("bundle.js", rice.MustFindBox("dist-promise").MustString("bundle.js")) if err != nil { return err } if _, err := vm.Run(s); err != nil { return err } return nil }
func Define(vm *otto.Otto, l *loop.Loop) error { if v, err := vm.Get("Promise"); err != nil { return err } else if !v.IsUndefined() { return nil } if err := timers.Define(vm, l); err != nil { return err } s, err := vm.Compile("promise-bundle.js", src) if err != nil { return err } if _, err := vm.Run(s); err != nil { return err } return nil }
func main() { flag.Parse() vm := otto.New() if *debugger { vm.SetDebuggerHandler(repl.DebuggerHandler) } l := loop.New(vm) if err := timers.Define(vm, l); err != nil { panic(err) } if err := promise.Define(vm, l); err != nil { panic(err) } if err := fetch.Define(vm, l); err != nil { panic(err) } if err := process.Define(vm, flag.Args()); err != nil { panic(err) } blockingTask := looptask.NewEvalTask("") if len(flag.Args()) == 0 || *openRepl { l.Add(blockingTask) } if len(flag.Args()) > 0 { d, err := ioutil.ReadFile(flag.Arg(0)) if err != nil { panic(err) } // this is a very cheap way of "supporting" shebang lines if d[0] == '#' { d = []byte("// " + string(d)) } s, err := vm.Compile(flag.Arg(0), string(d)) if err != nil { panic(err) } if err := l.Eval(s); err != nil { panic(err) } } if len(flag.Args()) == 0 || *openRepl { go func() { if err := erepl.Run(l); err != nil && err != io.EOF { panic(err) } l.Ready(blockingTask) }() } if err := l.Run(); err != nil { panic(err) } }