fix: better handling of hyperlinks with parentheses #6391
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
I noticed there're a few cases where hyperlinks aren't handled correctly (see added unit tests). The root cause is that
)
is a confusing character in the context of URL and we should probably add more checks while doing the regex matching.Also the example explicit link isn't clickable.
Approach
Instead of handle the exhaustive list of cases of
)
(which is inefficient and complicated), I decided to focus on the case where there's a terminating)
. Particularly, I split the original regex into two: 1) match a URL with an explicit terminating)
2) mach a URL with other "safe" terminating characters.I also added
_
to the safe terminating character list.Also added unit tests.
Test Plan
Unit test.
cargo build
and ran through a few examples.I didn't explicitly attempt to fix the explicit hyperlink example. But after this regex change,
printf '\e]8;;http://example.com\e\\This is a link\e]8;;\e\\\n'
will actually generate a clickable link.