コードブロックでプレースホルダー値が表示されないようにコードハイライトを修正

この問題には数日間悩まされましたが、原因を突き止めました。問題はここで報告されていました: Placeholder Forms - #48 by jericson.

リンクされた投稿の例では(もう?)問題は発生しないようなので、ここで独自の再現を行います。

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

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

は次のようになります:

SELECT * FROM =TABLE=;

コードブロックのハイライトが自動的にSQLに設定されているため、変数が認識されません。

出力されるHTMLは次のとおりです。

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

コードブロックで txt を指定すると、値が正しく表示されます。

SELECT * FROM =TABLE=;

期待される動作は、コードのハイライトに関係なく値が表示されることです。

コードブロックが昨日までのように自動的にSQLに設定されない理由がわかりません。これにより、私のリプロは効果がなくなりますが、try.discourse.orgでは機能するため、ここにスクリーンショットを示します。

自動言語検出に関係なく、文字列=VALUE=が壊れて値が表示されなくなる言語のハイライトがあるという事実があります。これは望ましくありません。

ここでの修正は非常に複雑になります。プレースホルダーマーカーが構文ハイライトされたセクションとして解析されると、置換時にそれらが見つからなくなります。

これを正しく処理するには、パイプラインをやり直し、置換後にのみハイライトを行う必要があります。

今のところ、これは機能リクエストの部門にあると言えます。誰かがこれを安価かつ簡単に解決する方法を思いつく場合に備えて、pr-welcomeを付けることは気にしません。

「いいね!」 1