Evidenziazioni del codice impediscono la visualizzazione del valore segnaposto in un blocco di codice

Ho riscontrato questo problema negli ultimi giorni prima di capire qual era. È stato segnalato qui: Placeholder Forms - #48 by jericson.

Il problema non sembra verificarsi (più?) nell’esempio fornito nel post collegato, quindi ne fornirò uno mio qui:

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

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

fa:

SELECT * FROM =TABLE=;

La variabile non viene riconosciuta a causa dell’evidenziazione del blocco di codice, che è impostata automaticamente su SQL.

L’HTML di output è:

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

Se specifico txt nel blocco di codice, il valore viene visualizzato correttamente:

SELECT * FROM =TABLE=;

Il comportamento previsto sarebbe quello di visualizzare il valore indipendentemente dall’evidenziazione del codice.

Non so perché il blocco di codice non sia impostato automaticamente su SQL come lo era ieri. Rende il mio repro inefficace, ma funziona su try.discourse.org, quindi ecco uno screenshot:

Indipendentemente dal rilevamento automatico della lingua, il fatto è che alcuni highlight di lingua interromperanno la stringa =VALORE= e il valore non verrà renderizzato, il che non è desiderato.

Una correzione qui sarà piuttosto complicata, se i segnaposto vengono analizzati come sezioni evidenziate dalla sintassi, quando andremo a sostituire non li troveremo.

Il modo corretto per risolvere questo problema è rifare la pipeline ed eseguire l’evidenziazione solo dopo aver effettuato la sostituzione.

Per ora direi che questo rientra nel reparto delle richieste di funzionalità, non mi dispiacerebbe aggiungere un pr-welcome a questo nel caso qualcuno possa trovare un modo economico e semplice per risolvere questo problema.

1 Mi Piace