highlightjs/highlight.js

(PHP Template) A single apostrophe ' breaks php-template highlighting

Open

#4152 aperta il 24 ott 2024

Vedi su GitHub
 (17 commenti) (0 reazioni) (0 assegnatari)JavaScript (3497 fork)batch import
buggood first issuehelp welcomelanguage

Metriche repository

Star
 (22.960 star)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Describe the issue An apostrophe ' that exists on its own without being closed seems to break highlighting of everything that comes after it even if it's in a comment or escaped but only with the language php-template. With php it works fine as it should.

Funnily if anywhere later this ' is "closed" it works again.

Which language seems to have the issue? php-template

Are you using highlight or highlightAuto? Highlight, not auto.

Sample Code to Reproduce Code: See expected behaviour

Not highlighted:

<?php
// This won't be highlighted unless there is another 
// single apostrophe later.
?>
<p>Some HTML <?= '\code' ?></p>

image

Correctly highlighted:

<?php
// This won't be highlighted unless there is another 
// single apostrophe later.
?>
<p>Some HTML <?= '\'code' ?></p>

image

Expected behavior Github highlights the php bits:

<?php
// This won't be highlighted unless there is another 
// single apostrophe later.
?>
<p>Some HTML <?= '\code' ?></p>

I expect it to highlight the code correctly even if not every ' is closed. In a comment for instance, English words allow for shortcuts with ' for instance "don't" or "can't".

Additional observations
Its breaks only if the apostrophe is in PHP code (not HTML) and if it's not in a code block comment /* such as this, that won't cause any troubles */. It's always everything that comes after it that is broken not before so if half the file doesn't contain a ' and then suddenly a php part with a ' either in a // comment ' or in a string 'string \' with an apostrophe' the bottom half of the file is not highlighted.

Guida contributor