Skip to content

Conversation

@JaredReisinger
Copy link

If the word-thus-far is exactly at the limit and wordwrap.Write() sees a hyphen, it writes the word to the buffer and then writes hyphen, exceeding the limit. This change fixes that behavior by instead adding the hyphen to the word as a normal character, performing the existing "is the word-in-progress too long" check to add a newline, and then writing the word-in-progress (without any length check).

It is still possible to see a hyphen beyond the limit, but that's a specific case of "don't break a word", where the hyphen is considered a part of the test to its left.

Fixes #66

If the word-thus-far is exactly at the limit and `wordwrap.Write` sees a hyphen, it writes the word to the buffer *and the hyphen*, exceeding the limit. This change fixes that behavior by instead adding the byphen to the word "as normal", and *then* checking to see if the word will fit within the limit. If it does, only then will it flush the word to the buffer.

Fix muesli#66
@rwinkhart
Copy link

This fixes a bug I was experiencing when starting lines with hyphens.

I used the following simple program to demonstrate my issue:

func main() {
        fmt.Println(wrap.String(wordwrap.String("- This line wraps incorrectly on upstream reflow due to a silly bug regarding the handling of hyphens", 80), 80))
}

When run with upstream reflow, the line wraps incorrectly:

- This line wraps incorrectly on upstream reflow due to a silly bug regarding th
e
handling of hyphens

When run with this PR, the line wraps correctly:

- This line wraps incorrectly on upstream reflow due to a silly bug regarding
the handling of hyphens

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Hyphens can cause wordwrap to exceed the limit

2 participants