|
|
|
@ -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) {
|
|
|
|
|