From 9974d6bad9c0915198d3b41650a07f3fe3b25041 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 4 Dec 2019 06:37:37 +0100 Subject: [PATCH] Support handling indents with an IndentFunc --- indent.go | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/indent.go b/indent.go index ab4b3f4..9fbc483 100644 --- a/indent.go +++ b/indent.go @@ -1,12 +1,16 @@ package gold import ( + "io" "strings" ) +type IndentFunc = func(w io.Writer) + type IndentWriter struct { - Forward *AnsiWriter - Indent uint + Forward *AnsiWriter + Indent uint + IndentFunc IndentFunc skipIndent bool } @@ -15,12 +19,18 @@ type IndentWriter struct { func (w *IndentWriter) Write(b []byte) (int, error) { for _, c := range string(b) { if !w.skipIndent { - _, err := w.Forward.Write([]byte(strings.Repeat(" ", int(w.Indent)))) - if err != nil { - return 0, err + if w.IndentFunc != nil { + for i := 0; i < int(w.Indent); i++ { + w.IndentFunc(w.Forward) + } + } else { + _, err := w.Forward.Write([]byte(strings.Repeat(" ", int(w.Indent)))) + if err != nil { + return 0, err + } } - w.Forward.RestoreAnsi() + w.Forward.RestoreAnsi() w.skipIndent = true }