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) {
content.WriteRune(ch)
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 {
content.WriteRune('\n')
counter = 0

View File

@ -52,10 +52,10 @@ func Test_WrapContent_Wrapped_Line_Length(t *testing.T) {
"01 345 789 123456789 123456789 123456789 123456789\n",
[]string{
"01 345 789",
" 123456789",
" 123456789",
" 123456789",
" 123456789",
"123456789 ",
"123456789 ",
"123456789 ",
"123456789",
"",
},
args{
@ -65,14 +65,29 @@ 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",
[]string{
"0123456789",
" 123456789",
" 123456789",
" 123456789",
" 123456789",
"123456789 ",
"123456789 ",
"123456789 ",
"123456789",
"",
},
args{
10,
10,
false,
},
},
{
"Intentional leading spaces aren't trimmed",
"01 345\n 789 123456789\n",
[]string{
"01 345",
" 789 ",
"123456789",
"",
},
args{