Code-Hervorhebungen verhindern, dass der Platzhalterwert in einem Codeblock angezeigt wird

Ich habe in den letzten Tagen mit diesem Problem gekämpft, bevor ich herausfand, was das Problem war. Es wurde hier gemeldet: Placeholder Forms - #48 by jericson.

Das Problem scheint (nicht mehr?) bei dem im verlinkten Beitrag gegebenen Beispiel nicht aufzutreten, daher werde ich hier meine eigene Reproduktion durchführen:

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

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

macht:

SELECT * FROM =TABLE=;

Die Variable wird wegen der Codeblockhervorhebung nicht erkannt, die automatisch auf SQL gesetzt ist.

Der resultierende HTML-Code ist:

<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>

Wenn ich txt im Codeblock angebe, wird der Wert korrekt angezeigt:

SELECT * FROM =TABLE=;

Das erwartete Verhalten wäre, dass der Wert unabhängig von der Codehervorhebung angezeigt wird.

Ich weiß nicht, warum der Codeblock nicht automatisch auf SQL gesetzt wird, wie es gestern der Fall war. Es macht meine Reproduktion unwirksam, aber auf try.discourse.org funktioniert es, hier ist also ein Screenshot:

Unabhängig von der automatischen Spracherkennung ist die Tatsache, dass einige Sprachhervorhebungen den String =VALUE= unterbrechen und der Wert nicht gerendert wird, was unerwünscht ist.

Eine Korrektur hier wird ziemlich kompliziert sein, wenn Platzhalter als syntaxhervorgehobene Abschnitte interpretiert werden. Wenn wir dann zum Ersetzen übergehen, finden wir sie nicht.

Der richtige Weg, dies zu lösen, ist, die Pipeline neu zu gestalten und die Hervorhebung erst nach dem Ersetzen durchzuführen.

Vorerst würde ich sagen, dass dies in die Abteilung für Funktionswünsche fällt. Es macht mir nichts aus, dies mit “pr-welcome” zu versehen, falls jemand eine günstige und einfache Lösung dafür findet.

1 „Gefällt mir“