diff options
author | Michael Muré <batolettre@gmail.com> | 2018-08-09 14:35:55 +0200 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2018-08-09 14:35:55 +0200 |
commit | 0da2bea132ee57820572c2636ae52ccd39171345 (patch) | |
tree | f7f61ea876f8959d049db1fe956d2d4fea75d06e | |
parent | ca31258cd24d7f7951f14644fe592724579a53b8 (diff) | |
download | git-bug-0da2bea132ee57820572c2636ae52ccd39171345.tar.gz |
TextWrap: add a version with a left padding
-rw-r--r-- | util/text.go | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/util/text.go b/util/text.go index 8f762c08..cc652cc6 100644 --- a/util/text.go +++ b/util/text.go @@ -29,10 +29,15 @@ func WordWrap(text string, lineWidth int) (string, int) { } func TextWrap(text string, lineWidth int) (string, int) { + return TextWrapPadded(text, lineWidth, 0) +} + +func TextWrapPadded(text string, lineWidth int, leftPad int) (string, int) { var textBuffer bytes.Buffer var lineBuffer bytes.Buffer nbLine := 1 firstLine := true + pad := strings.Repeat(" ", leftPad) // tabs are formatted as 4 spaces text = strings.Replace(text, "\t", " ", 4) @@ -40,7 +45,7 @@ func TextWrap(text string, lineWidth int) (string, int) { re := regexp.MustCompile(`(\x1b\[\d+m)?([^\x1b]*)(\x1b\[\d+m)?`) for _, line := range strings.Split(text, "\n") { - spaceLeft := lineWidth + spaceLeft := lineWidth - leftPad if !firstLine { textBuffer.WriteString("\n") @@ -78,6 +83,7 @@ func TextWrap(text string, lineWidth int) (string, int) { word = word[l:] lineBuffer.WriteString(part) + textBuffer.WriteString(pad) textBuffer.Write(lineBuffer.Bytes()) lineBuffer.Reset() @@ -86,10 +92,10 @@ func TextWrap(text string, lineWidth int) (string, int) { nbLine++ } - spaceLeft = lineWidth + spaceLeft = lineWidth - leftPad } } else { - textBuffer.WriteString(strings.TrimRight(lineBuffer.String(), " ")) + textBuffer.WriteString(pad + strings.TrimRight(lineBuffer.String(), " ")) textBuffer.WriteString("\n") lineBuffer.Reset() lineBuffer.WriteString(prefix + word + suffix) @@ -99,7 +105,7 @@ func TextWrap(text string, lineWidth int) (string, int) { } } } - textBuffer.WriteString(strings.TrimRight(lineBuffer.String(), " ")) + textBuffer.WriteString(pad + strings.TrimRight(lineBuffer.String(), " ")) lineBuffer.Reset() firstLine = false } |