aboutsummaryrefslogtreecommitdiffstats
path: root/ethereum/repl
diff options
context:
space:
mode:
Diffstat (limited to 'ethereum/repl')
-rw-r--r--ethereum/repl/repl.go85
-rw-r--r--ethereum/repl/repl_darwin.go123
l---------ethereum/repl/repl_linux.go1
-rw-r--r--ethereum/repl/repl_windows.go24
4 files changed, 0 insertions, 233 deletions
diff --git a/ethereum/repl/repl.go b/ethereum/repl/repl.go
deleted file mode 100644
index d08feb7b4..000000000
--- a/ethereum/repl/repl.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package ethrepl
-
-import (
- "bufio"
- "fmt"
- "io"
- "os"
- "path"
-
- "github.com/ethereum/eth-go"
- "github.com/ethereum/eth-go/ethlog"
- "github.com/ethereum/eth-go/ethutil"
- "github.com/ethereum/go-ethereum/javascript"
-)
-
-var logger = ethlog.NewLogger("REPL")
-
-type Repl interface {
- Start()
- Stop()
-}
-
-type JSRepl struct {
- re *javascript.JSRE
-
- prompt string
-
- history *os.File
-
- running bool
-}
-
-func NewJSRepl(ethereum *eth.Ethereum) *JSRepl {
- hist, err := os.OpenFile(path.Join(ethutil.Config.ExecPath, "history"), os.O_RDWR|os.O_CREATE, os.ModePerm)
- if err != nil {
- panic(err)
- }
-
- return &JSRepl{re: javascript.NewJSRE(ethereum), prompt: "> ", history: hist}
-}
-
-func (self *JSRepl) Start() {
- if !self.running {
- self.running = true
- logger.Infoln("init JS Console")
- reader := bufio.NewReader(self.history)
- for {
- line, err := reader.ReadString('\n')
- if err != nil && err == io.EOF {
- break
- } else if err != nil {
- fmt.Println("error reading history", err)
- break
- }
-
- addHistory(line[:len(line)-1])
- }
- self.read()
- }
-}
-
-func (self *JSRepl) Stop() {
- if self.running {
- self.running = false
- self.re.Stop()
- logger.Infoln("exit JS Console")
- self.history.Close()
- }
-}
-
-func (self *JSRepl) parseInput(code string) {
- defer func() {
- if r := recover(); r != nil {
- fmt.Println("[native] error", r)
- }
- }()
-
- value, err := self.re.Run(code)
- if err != nil {
- fmt.Println(err)
- return
- }
-
- self.PrintValue(value)
-}
diff --git a/ethereum/repl/repl_darwin.go b/ethereum/repl/repl_darwin.go
deleted file mode 100644
index 4c07280f7..000000000
--- a/ethereum/repl/repl_darwin.go
+++ /dev/null
@@ -1,123 +0,0 @@
-package ethrepl
-
-// #cgo darwin CFLAGS: -I/usr/local/opt/readline/include
-// #cgo darwin LDFLAGS: -L/usr/local/opt/readline/lib
-// #cgo LDFLAGS: -lreadline
-// #include <stdio.h>
-// #include <stdlib.h>
-// #include <readline/readline.h>
-// #include <readline/history.h>
-import "C"
-import (
- "os"
- "os/signal"
- "strings"
- "syscall"
- "unsafe"
-)
-
-func initReadLine() {
- C.rl_catch_sigwinch = 0
- C.rl_catch_signals = 0
- c := make(chan os.Signal, 1)
- signal.Notify(c, syscall.SIGWINCH)
- signal.Notify(c, os.Interrupt)
- go func() {
- for sig := range c {
- switch sig {
- case syscall.SIGWINCH:
- C.rl_resize_terminal()
-
- case os.Interrupt:
- C.rl_cleanup_after_signal()
- default:
-
- }
- }
- }()
-}
-
-func readLine(prompt *string) *string {
- var p *C.char
-
- //readline allows an empty prompt(NULL)
- if prompt != nil {
- p = C.CString(*prompt)
- }
-
- ret := C.readline(p)
-
- if p != nil {
- C.free(unsafe.Pointer(p))
- }
-
- if ret == nil {
- return nil
- } //EOF
-
- s := C.GoString(ret)
- C.free(unsafe.Pointer(ret))
- return &s
-}
-
-func addHistory(s string) {
- p := C.CString(s)
- C.add_history(p)
- C.free(unsafe.Pointer(p))
-}
-
-var indentCount = 0
-var str = ""
-
-func (self *JSRepl) setIndent() {
- open := strings.Count(str, "{")
- open += strings.Count(str, "(")
- closed := strings.Count(str, "}")
- closed += strings.Count(str, ")")
- indentCount = open - closed
- if indentCount <= 0 {
- self.prompt = "> "
- } else {
- self.prompt = strings.Join(make([]string, indentCount*2), "..")
- self.prompt += " "
- }
-}
-
-func (self *JSRepl) read() {
- initReadLine()
-L:
- for {
- switch result := readLine(&self.prompt); true {
- case result == nil:
- break L
-
- case *result != "":
- str += *result + "\n"
-
- self.setIndent()
-
- if indentCount <= 0 {
- if *result == "exit" {
- self.Stop()
- break L
- }
-
- hist := str[:len(str)-1]
- addHistory(hist) //allow user to recall this line
- self.history.WriteString(str)
-
- self.parseInput(str)
-
- str = ""
- }
- }
- }
-}
-
-func (self *JSRepl) PrintValue(v interface{}) {
- method, _ := self.re.Vm.Get("prettyPrint")
- v, err := self.re.Vm.ToValue(v)
- if err == nil {
- method.Call(method, v)
- }
-}
diff --git a/ethereum/repl/repl_linux.go b/ethereum/repl/repl_linux.go
deleted file mode 120000
index 276f135d7..000000000
--- a/ethereum/repl/repl_linux.go
+++ /dev/null
@@ -1 +0,0 @@
-repl_darwin.go \ No newline at end of file
diff --git a/ethereum/repl/repl_windows.go b/ethereum/repl/repl_windows.go
deleted file mode 100644
index 4106c89bc..000000000
--- a/ethereum/repl/repl_windows.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package ethrepl
-
-import (
- "bufio"
- "fmt"
- "os"
-)
-
-func (self *JSRepl) read() {
- reader := bufio.NewReader(os.Stdin)
- for {
- fmt.Printf(self.prompt)
- str, _, err := reader.ReadLine()
- if err != nil {
- fmt.Println("Error reading input", err)
- } else {
- self.parseInput(string(str))
- }
- }
-}
-
-func (self *JSRepl) PrintValue(value otto.Value) {
- fmt.Println(value)
-}