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

Ensure extracting candidates from JS embedded in a PHP string works as expected #17031

Merged
merged 3 commits into from
Mar 7, 2025

Conversation

RobinMalfait
Copy link
Member

@RobinMalfait RobinMalfait commented Mar 7, 2025

This PR fixes an issue where candidates are not properly extractor when they end in \. This can happen if you embed a programming language like JS inside another language like PHP where you need to escape some strings.

Here is an example of Livewire flux:

@php
if ($sidebarIsStashable) {
    $attributes = $attributes->merge([
        'x-init' => '$el.classList.add(\'-translate-x-full\'); $el.classList.add(\'transition-transform\')',
        //                                                ^                                            ^
    ]);
}
@endphp

<div x-data {{ $attributes->class('border-r w-64 p-4 min-h-dvh max-h-dvh top-0 fixed left-0') }}>
    {{ $slot }}
</div>

Where the \' is causing some issues.

Another solution might be to add a custom pre processor for blade files where we drop the escaped characters, but that felt overkill for now because some escapes are still valid.

Fixes: #17023

Test plan

  1. Added a test to cover this case.
  2. Existing tests still pass

@RobinMalfait RobinMalfait requested a review from a team as a code owner March 7, 2025 11:13
@RobinMalfait RobinMalfait merged commit f498e4a into main Mar 7, 2025
5 checks passed
@RobinMalfait RobinMalfait deleted the fix/issue-17023 branch March 7, 2025 11:19
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.

Extractor issues in Livewire Flux
2 participants