From 0c2b0a9c62a9e9bc0762f1fc477642d7de7a7e05 Mon Sep 17 00:00:00 2001 From: Eoin McAfee Date: Mon, 8 Nov 2021 11:47:17 +0000 Subject: [PATCH] update logic to use ansi escape characters --- livelog/extractor/writer.go | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/livelog/extractor/writer.go b/livelog/extractor/writer.go index 6170af6..55780d6 100644 --- a/livelog/extractor/writer.go +++ b/livelog/extractor/writer.go @@ -7,7 +7,12 @@ import ( "regexp" ) -var re = regexp.MustCompile("#((.*?)#)") +const Esc = "\u001B" + +var ( + prefix = Esc + "]1338;" + re = regexp.MustCompilePOSIX("\u001B]1338;((.*?)\u001B]0m)") +) type Writer struct { base io.Writer @@ -19,16 +24,18 @@ func New(w io.Writer) *Writer { } 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) } card := re.FindStringSubmatch(string(p)) - data, err := base64.StdEncoding.DecodeString(card[len(card)-1:][0]) - if err == nil { - e.file = data + if len(card) != 0 { + data, err := base64.StdEncoding.DecodeString(card[len(card)-1:][0]) + if err == nil { + e.file = data + } + return e.base.Write([]byte("")) } - // remove encoded string for logs - return e.base.Write([]byte("")) + return e.base.Write(p) } func (e *Writer) File() ([]byte, bool) {