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

76 lines
1.5 KiB
Go
Raw Normal View History

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 {
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) {
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))
}
}
2014-05-19 14:32:45 +00:00
}