erigon-pulse/cmd/ethereum/repl/repl_windows.go

93 lines
2.2 KiB
Go
Raw Normal View History

2014-10-23 13:48:53 +00:00
// 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
2014-07-15 18:34:25 +00:00
package ethrepl
2014-05-17 13:15:46 +00:00
import (
"bufio"
"fmt"
"os"
"strings"
2014-05-17 13:15:46 +00:00
)
func (self *JSRepl) read() {
reader := bufio.NewReader(os.Stdin)
for {
2014-05-19 11:04:31 +00:00
fmt.Printf(self.prompt)
2014-05-17 13:15:46 +00:00
str, _, err := reader.ReadLine()
if err != nil {
fmt.Println("Error reading input", err)
} else {
2014-11-16 02:21:03 +00:00
if string(str) == "exit" {
self.Stop()
break
} else {
self.parseInput(string(str))
}
2014-05-17 13:15:46 +00:00
}
}
}
2014-05-19 14:32:45 +00:00
func addHistory(s string) {
}
func printColored(outputVal string) {
2014-11-16 02:21:03 +00:00
for outputVal != "" {
codePart := ""
2014-11-16 02:21:03 +00:00
if strings.HasPrefix(outputVal, "\033[32m") {
codePart = "\033[32m"
changeColor(2)
}
2014-11-16 02:21:03 +00:00
if strings.HasPrefix(outputVal, "\033[1m\033[30m") {
codePart = "\033[1m\033[30m"
changeColor(8)
}
2014-11-16 02:21:03 +00:00
if strings.HasPrefix(outputVal, "\033[31m") {
codePart = "\033[31m"
changeColor(red)
}
2014-11-16 02:21:03 +00:00
if strings.HasPrefix(outputVal, "\033[35m") {
codePart = "\033[35m"
changeColor(5)
}
2014-11-16 02:21:03 +00:00
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))
}
}
2014-05-19 14:32:45 +00:00
}