diff --git a/indent.go b/indent.go index 91a0924..ab4b3f4 100644 --- a/indent.go +++ b/indent.go @@ -1,39 +1,37 @@ package gold import ( - "io" "strings" ) type IndentWriter struct { + Forward *AnsiWriter Indent uint - Forward io.Writer skipIndent bool } // Write is used to write content to the indent buffer. func (w *IndentWriter) Write(b []byte) (int, error) { - if w.Indent == 0 { - return w.Forward.Write(b) - } - for _, c := range string(b) { if !w.skipIndent { _, err := w.Forward.Write([]byte(strings.Repeat(" ", int(w.Indent)))) if err != nil { return 0, err } + w.Forward.RestoreAnsi() + w.skipIndent = true } - _, err := w.Forward.Write([]byte(string(c))) - if err != nil { - return 0, err - } if c == '\n' { // end of current line w.skipIndent = false + w.Forward.ResetAnsi() + } + _, err := w.Forward.Write([]byte(string(c))) + if err != nil { + return 0, err } }