diff options
Diffstat (limited to 'ethereum/repl/repl_windows.go')
-rw-r--r-- | ethereum/repl/repl_windows.go | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/ethereum/repl/repl_windows.go b/ethereum/repl/repl_windows.go index 4106c89bc..bfae57088 100644 --- a/ethereum/repl/repl_windows.go +++ b/ethereum/repl/repl_windows.go @@ -4,6 +4,7 @@ import ( "bufio" "fmt" "os" + "strings" ) func (self *JSRepl) read() { @@ -14,11 +15,61 @@ func (self *JSRepl) read() { if err != nil { fmt.Println("Error reading input", err) } else { - self.parseInput(string(str)) + if (string(str) == "exit") { + self.Stop() + break + } else { + self.parseInput(string(str)) + } } } } -func (self *JSRepl) PrintValue(value otto.Value) { - fmt.Println(value) +func addHistory(s string) { +} + +func printColored(outputVal string) { + for ; outputVal != "" ; { + codePart := "" + if (strings.HasPrefix(outputVal, "\033[32m")) { + codePart = "\033[32m" + changeColor(2) + } + if (strings.HasPrefix(outputVal, "\033[1m\033[30m")) { + codePart = "\033[1m\033[30m" + changeColor(8) + } + if (strings.HasPrefix(outputVal, "\033[31m")) { + codePart = "\033[31m" + changeColor(red) + } + if (strings.HasPrefix(outputVal, "\033[35m")) { + codePart = "\033[35m" + changeColor(5) + } + if (strings.HasPrefix(outputVal, "\033[0m")) { + codePart = "\033[0m" + resetColorful() + } + textPart := outputVal[len(codePart):len(outputVal)] + index := strings.Index(textPart, "\033") + if index == -1 { + outputVal = "" + } else { + outputVal = textPart[index:len(textPart)] + textPart = textPart[0:index] + } + fmt.Printf("%v", textPart) + } +} + +func (self *JSRepl) PrintValue(v interface{}) { + method, _ := self.re.Vm.Get("prettyPrint") + v, err := self.re.Vm.ToValue(v) + if err == nil { + val, err := method.Call(method, v) + if err == nil { + printColored(fmt.Sprintf("%v", val)) + } + } } |