1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-11-10 06:16:27 -05:00
OpenDiablo2/d2core/d2term/terminal_logger.go

47 lines
780 B
Go
Raw Normal View History

2020-06-28 21:40:52 -04:00
package d2term
import (
"bufio"
"bytes"
"io"
"strings"
)
type terminalLogger struct {
terminal *terminal
buffer bytes.Buffer
writer io.Writer
2020-06-28 21:40:52 -04:00
}
func (tl *terminalLogger) Write(p []byte) (int, error) {
n, err := tl.buffer.Write(p)
if err != nil {
return n, err
}
reader := bufio.NewReader(&tl.buffer)
termBytes, _, err := reader.ReadLine()
2020-06-28 21:40:52 -04:00
if err != nil {
return n, err
}
line := string(termBytes)
2020-06-28 21:40:52 -04:00
lineLower := strings.ToLower(line)
switch {
case strings.Index(lineLower, "error") > 0:
tl.terminal.OutputErrorf(line)
case strings.Index(lineLower, "warning") > 0:
tl.terminal.OutputWarningf(line)
default:
tl.terminal.Outputf(line)
2020-06-28 21:40:52 -04:00
}
return tl.writer.Write(p)
}
func (tl *terminalLogger) BindToTerminal(t *terminal) {
tl.terminal = t
}