Merge pull request #1513 from abitrolly/patch-1

wrap: Avoid trailing whitespace for empty lines
This commit is contained in:
dearchap 2022-10-05 08:33:35 -04:00 committed by GitHub
commit 8335f5435f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 11 deletions

19
help.go
View File

@ -468,25 +468,28 @@ func nindent(spaces int, v string) string {
} }
func wrap(input string, offset int, wrapAt int) string { func wrap(input string, offset int, wrapAt int) string {
var sb strings.Builder var ss []string
lines := strings.Split(input, "\n") lines := strings.Split(input, "\n")
padding := strings.Repeat(" ", offset) padding := strings.Repeat(" ", offset)
for i, line := range lines { for i, line := range lines {
if i != 0 { if line == "" {
sb.WriteString(padding) ss = append(ss, line)
} } else {
wrapped := wrapLine(line, offset, wrapAt, padding)
if i == 0 {
ss = append(ss, wrapped)
} else {
ss = append(ss, padding+wrapped)
sb.WriteString(wrapLine(line, offset, wrapAt, padding)) }
if i != len(lines)-1 {
sb.WriteString("\n")
} }
} }
return sb.String() return strings.Join(ss, "\n")
} }
func wrapLine(input string, offset int, wrapAt int, padding string) string { func wrapLine(input string, offset int, wrapAt int, padding string) string {

View File

@ -1213,6 +1213,13 @@ func TestDefaultCompleteWithFlags(t *testing.T) {
} }
} }
func TestWrap(t *testing.T) {
emptywrap := wrap("", 4, 16)
if emptywrap != "" {
t.Errorf("Wrapping empty line should return empty line. Got '%s'.", emptywrap)
}
}
func TestWrappedHelp(t *testing.T) { func TestWrappedHelp(t *testing.T) {
// Reset HelpPrinter after this test. // Reset HelpPrinter after this test.
@ -1276,7 +1283,7 @@ DESCRIPTION:
App.Description string long App.Description string long
enough that it should be enough that it should be
wrapped in this test wrapped in this test
with a newline with a newline
and an indented line and an indented line
@ -1294,8 +1301,8 @@ COPYRIGHT:
that it should be wrapped. that it should be wrapped.
Including newlines. Including newlines.
And also indented lines. And also indented lines.
And then another long line. And then another long line.
Blah blah blah does anybody Blah blah blah does anybody
ever read these things? ever read these things?