// Copyright (c) 2013-2014, Jeffrey Wilcke. All rights reserved. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, // MA 02110-1301 USA package ethrepl import ( "bufio" "fmt" "os" "strings" ) 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 { if string(str) == "exit" { self.Stop() break } else { self.parseInput(string(str)) } } } } 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)) } } }