コンポーザーでのHTMLペーストのカスタム処理は?

私がバグだと思われるものに気づき、コンポジターに貼り付けられた HTML の解析方法をカスタマイズできるかどうか疑問に思い始めました。

私たちのフォーラムは、原語を含む翻訳された古代聖典を扱うサイト専用です。(例:英語とパーリ語)そのため、ユーザーは以下のようなテキストを貼り付けることがあります:

<span lang="en">So I have heard.</span><span lang="pli"><span lang="la">Evaṁ me sutaṁ—</span></span><span lang="en">At one time the Buddha was staying near Sāvatthī in Jeta’s Grove, Anāthapiṇḍika’s monastery.</span><span lang="pli"><span lang="la">ekaṁ samayaṁ bhagavā sāvatthiyaṁ viharati jetavane anāthapiṇḍikassa ārāme.</span></span>

聖典のウェブサイトでは、以下のように表示されます:

上記で言及した新しいバグ以前は、そのテキストを貼り付けると、私たちのフォーラムでは以下のように表示されていました:

So I have heard. Evaṁ me sutaṁ— At one time the Buddha was staying near Sāvatthī in Jeta’s Grove, Anāthapiṇḍika’s monastery. ekaṁ samayaṁ bhagavā sāvatthiyaṁ viharati jetavane anāthapiṇḍikassa ārāme.

理想的ではありません!すべての言語が混ざり合っており、読みにくいです。誠実な投稿者は、以下のようにマークダウンを使用してフォーマットするでしょう:

So I have heard.
*Evaṁ me sutaṁ—* 

At one time the Buddha was staying near Sāvatthī in Jeta’s Grove, Anāthapiṇḍika’s monastery. 
*ekaṁ samayaṁ bhagavā sāvatthiyaṁ viharati jetavane anāthapiṇḍikassa ārāme.* 

これにより、以下のようにレンダリングされます:

基本的には、各 span を1行に配置し、lang="pli" を持つ span をイタリックにし、その後ろに空白行を挿入します。

この投稿の冒頭で言及したバグを見るまで、一部の HTML をマークダウンに変換するプロセスがすでに存在していることには考えていませんでした。今では、コンポーネントまたはプラグインを使用して、上記のように lang 属性を持つ特定の span を変換するコードを追加できるかどうかが気になります。理想的にはコンポーネントを通じてですが、プラグインでも可能です。

具体的には、以下のようになります。

  <!--start repeat-->
<p>
  <!--start repeat-->
  <a href="..." title="same text always here">int</a>
  <span lang="a">...</span>
  <span lang="b">...</span>
   <!-- end repeat-->
</p>
<!-- end repeat-->

または

<p>
  <a href="..." title="same text always here">int</a>
  <span lang="a">...</span><span lang="a">...</span>
</p>
<!-- repeated-->

ここで、言語 a と言語 b は変動します。

リンクは存在する場合としない場合がありますが、title 属性の値は常に同じです。この title 値を持つリンクのみを太字にしてください。その後にはソフトリターン(改行)を含める必要があります。

言語 b はイタリック体にし、ソフトリターン(改行)を付与します。

Discourse はすでに <p> を期待通りに変換しています。

言語 a が繰り返される場合:
最初の <span> の後にスペースを追加する必要があります。これは最初のケースで追加できます。可視的には影響ありません :person_shrugging:

言語 b は、配列として提供できる2つの言語のいずれかです。pli または lzh のどちらかになります。

ありがとうございます!

(@delightful と私が一緒に取り組んでいます)