virtualTerm is created to simulate a terminal,handle the special character such as '\r','\b'. Write a string into VirtualTerm, you will know what would your string be like if you output it to stdout.
- ASCII
- UTF-8
\b
backspace\r
carriage return\n
feed lineESC[#A
moves cursor up # linesESC[#B
moves cursor down # linesESC[#C
moves cursor right # columnsESC[#D
moves cursor left # columnsESC[H
moves cursor to home position
WARNING: if you try to write not supported ESC to it, the output may can not be predicted
you need go mod to use it. Just always use the latest version.
go get -u github.com/chengxilo/virtualterm
example
package main
import (
"fmt"
"github.com/chengxilo/virtualterm"
"log"
)
func main() {
str := "hello\rvirtuaa\bl-terminal"
vt := virtualterm.NewDefault()
vt.Write([]byte(str))
fmt.Println(str == "virtual-terminal")
str,err := vt.String()
if err != nil {
log.Fatal(err)
}
fmt.Println(str == "virtual-terminal")
// Output:
// false
// true
}
Use virtualterm.Process
function. You will not need to create a virtual terminal and input on your own.
package main
import (
"fmt"
"github.com/chengxilo/virtualterm"
)
func main() {
str := "hello\rvirtuaa\bl-terminal"
newS,_ := virtualterm.Process(str)
fmt.Println(str == "virtual-terminal")
fmt.Println(newS == "virtual-terminal")
// Output:
// false
// true
}
go test. This is why I want to create this repository. If you don't use this,just use the str, all of them will fail.
package test
import (
"fmt"
"github.com/chengxilo/virtualterm"
"github.com/stretchr/testify/assert"
"testing"
)
func TestVirtualTerm(t *testing.T) {
str := "hello\rvirtuaa\bl-terminal"
ns,_ := virtualterm.Process(str)
assert.Equal(t, ns, "virtual-terminal")
}
func ExampleVirtualTerm() {
str := "hello\rvirtuaa\bl-terminal"
ns,_ := virtualterm.Process(str)
fmt.Print(ns)
// Output:
// virtual-terminal
}
Pull requests are welcome. Feel free to...
- Revise documentation
- Add new features
- Fix bugs
- Suggest improvements
- or whatever you want...