Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move whitespace in front of verbatim block in Blade templates #51195

Merged
merged 1 commit into from
Apr 24, 2024

Conversation

Sjord
Copy link
Contributor

@Sjord Sjord commented Apr 24, 2024

Closes #51146

If a PHP end tag ?> is followed by a newline, that newline is not shown in the output. To counteract this, CompilesEchos detects whether an echo is followed by a newline and then doubles that newline. However, if the newline is part of a verbatim block, it is already replaced by a placeholder and CompilesEchos won't detect it correctly.

This change moves the whitespace in front of the verbatim block. The whitespace remains outside of the placeholder and CompilesEchos can correctly detect it.

This assumes that whitespace is not modified by Blade in a manner that it would be necessary to put whitespace in a verbatim block to change its meaning.

Only the final assertion in the testNewlinesAreInsertedCorrectlyAfterEcho test actually tests for what we want. The first two are more of an introduction for the reader, to show that what we test in the last assertion really makes sense. It first tests a verbatim block, then an echo statement, and then the combination of the two, what is what we are really interested in.

Closes laravel#51146

If a PHP end tag `?>` is followed by a newline, that newline is not shown in
the output. To counteract this, CompilesEchos detects whether an echo is
followed by a newline and then doubles that newline. However, if the newline is
part of a verbatim block, it is already replaced by a placeholder and
CompilesEchos won't detect it correctly.

This change moves the whitespace in front of the verbatim block. The whitespace
remains outside of the placeholder and CompilesEchos can correctly detect it.

This assumes that whitespace is not modified by Blade in a manner that it would
be necessary to put whitespace in a verbatim block to change its meaning.

Only the final assertion in the testNewlinesAreInsertedCorrectlyAfterEcho test
actually tests for what we want. The first two are more of an introduction for
the reader, to show that what we test in the last assertion really makes sense.
It first tests a verbatim block, then an echo statement, and then the
combination of the two, what is what we are really interested in.
@Sjord Sjord force-pushed the blade-verbatim-move-whitespace branch from 94e6877 to 3f2b7e0 Compare April 24, 2024 09:50
@taylorotwell taylorotwell merged commit 410e9df into laravel:11.x Apr 24, 2024
28 checks passed
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.

Unexpected newline behavior in blade template with echo followed by verbatim
2 participants