when wrapping, omit leading whitespace created if the wrap occurs at a space char

This commit is contained in:
R. Aidan Campbell 2022-02-08 20:47:16 -07:00
parent 070f7eb6ba
commit 1bef2e51a1
No known key found for this signature in database
GPG Key ID: 0985399E9CD6A99B
2 changed files with 28 additions and 9 deletions

View File

@ -142,6 +142,10 @@ func (p *Page) WrapContent(width, maxWidth int, color bool) {
if counter+(j-i) <= width+1 && !(j == i && counter == width+1) { if counter+(j-i) <= width+1 && !(j == i && counter == width+1) {
content.WriteRune(ch) content.WriteRune(ch)
counter++ counter++
} else if ch == ' ' || ch == '\t' {
// we want to wrap and write this char, but it's a space. eat it to prevent the next line from
// having a leading whitespace because of our wrapping
counter++
} else { } else {
content.WriteRune('\n') content.WriteRune('\n')
counter = 0 counter = 0

View File

@ -65,7 +65,7 @@ func Test_WrapContent_Wrapped_Line_Length(t *testing.T) {
}, },
}, },
{ {
"Long line wrapped to 10 columns", "Long line wrapped to 10 columns, leading spaces omitted when wrapping",
"0123456789 123456789 123456789 123456789 123456789\n", "0123456789 123456789 123456789 123456789 123456789\n",
[]string{ []string{
"0123456789", "0123456789",
@ -81,6 +81,21 @@ func Test_WrapContent_Wrapped_Line_Length(t *testing.T) {
false, false,
}, },
}, },
{
"Intentional leading spaces aren't trimmed",
"01 345\n 789 123456789\n",
[]string{
"01 345",
" 789 ",
"123456789",
"",
},
args{
10,
10,
false,
},
},
{ {
"Unicode line endings that should not wrap", "Unicode line endings that should not wrap",
"LF\u000A" + "LF\u000A" +