update logic to use ansi escape characters

pull/16/head
Eoin McAfee 3 years ago
parent 39ece7e74a
commit 0c2b0a9c62

@ -7,7 +7,12 @@ import (
"regexp" "regexp"
) )
var re = regexp.MustCompile("#((.*?)#)") const Esc = "\u001B"
var (
prefix = Esc + "]1338;"
re = regexp.MustCompilePOSIX("\u001B]1338;((.*?)\u001B]0m)")
)
type Writer struct { type Writer struct {
base io.Writer base io.Writer
@ -19,16 +24,18 @@ func New(w io.Writer) *Writer {
} }
func (e *Writer) Write(p []byte) (n int, err error) { func (e *Writer) Write(p []byte) (n int, err error) {
if bytes.HasPrefix(p, []byte("#")) == false { if bytes.HasPrefix(p, []byte(prefix)) == false {
return e.base.Write(p) return e.base.Write(p)
} }
card := re.FindStringSubmatch(string(p)) card := re.FindStringSubmatch(string(p))
data, err := base64.StdEncoding.DecodeString(card[len(card)-1:][0]) if len(card) != 0 {
if err == nil { data, err := base64.StdEncoding.DecodeString(card[len(card)-1:][0])
e.file = data if err == nil {
e.file = data
}
return e.base.Write([]byte(""))
} }
// remove encoded string for logs return e.base.Write(p)
return e.base.Write([]byte(""))
} }
func (e *Writer) File() ([]byte, bool) { func (e *Writer) File() ([]byte, bool) {

Loading…
Cancel
Save