diff --git a/indent.go b/indent.go index 213ff19..5a5d2b7 100644 --- a/indent.go +++ b/indent.go @@ -3,37 +3,29 @@ package gold import ( "io" "strings" - "sync" ) type IndentWriter struct { Indent uint Forward io.Writer - initialWrite sync.Once + skipIndent bool } -// Write is used to write more content to the reflow buffer. +// Write is used to write content to the indent buffer. func (w *IndentWriter) Write(b []byte) (int, error) { - w.initialWrite.Do(func() { - w.Forward.Write([]byte(strings.Repeat(" ", int(w.Indent)))) - }) - for _, c := range string(b) { + if !w.skipIndent { + w.Forward.Write([]byte(strings.Repeat(" ", int(w.Indent)))) + w.skipIndent = true + } + w.Forward.Write([]byte{byte(c)}) if c == '\n' { // end of current line - w.Forward.Write([]byte(strings.Repeat(" ", int(w.Indent)))) - } else { - // any other character + w.skipIndent = false } } return len(b), nil } - -// Close will finish the reflow operation. Always call it before trying to -// retrieve the final result. -func (w *IndentWriter) Close() error { - return nil -}