[BetterPhpDocParser] Use str_starts_with() and str_ends_with() over str_contains() on DoctrineAnnotationDecorator#6671
Merged
samsonasik merged 2 commits intomainfrom Jan 16, 2025
Merged
Conversation
… str_contains() on DoctrineAnnotationDecorator
Member
Author
|
All checks have passed 🎉 @TomasVotruba I am merging it to have faster feedback to test ;) |
Member
Author
|
@andrewnicols please test latest |
Contributor
|
Alas, it does not. It works for the case where the doc is: * @copyright Example {@link https://example.com}But if there is anything immedaitely after the curly brace, for example a {{.}}: * @copyright Example {@link https://example.com}.Then it no longer works. Changing back to {{str_contains}} gets it back to passing. |
Member
Author
|
@andrewnicols thank you for verify, I will check. |
andrewnicols
added a commit
to andrewnicols/rector-src
that referenced
this pull request
Jan 16, 2025
…or (rectorphp#6671) The Lexer tokenizes at whitespace and certain other characters such as `.`, and `(`, If none of these tokens are present then the tokens are not split. For example in the string here: ``` @copyright Some Value. Something.({@link https://example.com}). ``` This is tokenised into: ``` '@copyright' ' ' 'Some' ' ' 'Value' '.' ' ' 'Something' .({@link' ' ' 'https' ':' '//example.com}).' ``` Both the open, and close, curly braces may be in the middle of a string and therefore the `str_contains` must be used for these cases.
Contributor
|
I've created #6674 with a demo and more tests. |
Member
Author
|
@andrewnicols you're fast, thank you 👍 |
samsonasik
pushed a commit
that referenced
this pull request
Jan 16, 2025
…or (#6671) (#6674) The Lexer tokenizes at whitespace and certain other characters such as `.`, and `(`, If none of these tokens are present then the tokens are not split. For example in the string here: ``` @copyright Some Value. Something.({@link https://example.com}). ``` This is tokenised into: ``` '@copyright' ' ' 'Some' ' ' 'Value' '.' ' ' 'Something' .({@link' ' ' 'https' ':' '//example.com}).' ``` Both the open, and close, curly braces may be in the middle of a string and therefore the `str_contains` must be used for these cases.
Contributor
|
This pull request has been automatically locked because it has been closed for 150 days. Please open a new PR if you want to continue the work. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
@andrewnicols continue of your PR:
I am thinking that
str_ends_with()andstr_starts_with()can be used overstr_contains(), which seems should only cover start and last over the whole token for more precise check, ensuring it not just part of some "string".