Les surlignages de code empêchent l'affichage de la valeur du placeholder dans un bloc de code

J’ai lutté avec ce problème pendant les derniers jours avant de comprendre ce qui n’allait pas. Il a été signalé ici : Placeholder Forms - #48 by jericson.

Le problème ne semble pas se produire (plus ?) sur l’exemple donné dans le post lié, je vais donc en faire ma propre reproduction ici :

[wrap=placeholder key=TABLE description="table name" default="users"][/wrap]

```
SELECT * FROM =TABLE=;
```

fait :

SELECT * FROM =TABLE=;

La variable n’est pas reconnue à cause de la coloration du bloc de code, qui est automatiquement définie sur SQL.

Le HTML de sortie est :

<code class="hljs language-sql" data-highlighted="yes">
  <span class="hljs-keyword">SELECT</span>
  <span class="hljs-operator">*</span>
  <span class="hljs-keyword">FROM</span>
  <span class="hljs-operator">=</span>
  <span class="hljs-keyword">TABLE</span>
  <span class="hljs-operator">=</span>
  ;
</code>

Si je spécifie txt dans le bloc de code, alors la valeur est correctement affichée :

SELECT * FROM =TABLE=;

Le comportement attendu serait d’afficher la valeur quelle que soit la coloration du code.

Je ne sais pas pourquoi le bloc de code n’est pas automatiquement défini sur SQL comme c’était le cas hier. Cela rend mon repro inefficace, mais cela fonctionne sur try.discourse.org, voici donc une capture d’écran :

Indépendamment de la détection automatique de la langue, le fait est que certaines mises en évidence de langue casseront la chaîne =VALUE= et la valeur ne sera pas rendue, ce qui est indésirable.

Une correction ici va être assez compliquée, si les marqueurs de remplacement sont analysés comme des sections mises en évidence par la syntaxe, lorsque nous allons remplacer, nous ne les trouvons pas.

La bonne façon de résoudre ce problème est de refaire le pipeline et de ne faire la mise en évidence qu’après le remplacement.

Pour l’instant, je dirais que cela relève du département des demandes de fonctionnalités, cela ne me dérange pas d’y mettre un pr-welcome au cas où quelqu’un pourrait trouver un moyen peu coûteux et simple de résoudre ce problème.

1 « J'aime »