Benutzerdefinierte HTML-Verarbeitung beim Einfügen in Composer?

Da ich was ich für einen Bug halte bemerkt habe, frage ich mich nun, ob es möglich ist, die HTML-Parsing-Verarbeitung beim Einfügen in den Composer anzupassen.

Unser Forum widmet sich einer Website mit übersetzten antiken Schriften und ihren Ursprungssprachen. (Z. B. Englisch mit Pāḷi) Daher könnten Nutzer Text wie diesen einfügen:

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

Auf der Skript-Website sieht es so aus:

Vor dem oben erwähnten neuen Bug würde das Einfügen dieses Textes auf unserem Forum folgendes Ergebnis liefern:

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.

Nicht ideal! Alle Sprachen laufen ineinander. Schwer lesbar. Ein gewissenhafter Poster würde den Text mit Markdown wie folgt formatieren:

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

Was so dargestellt werden würde:

Im Grunde genommen wird jeder Span in eine eigene Zeile gesetzt, und Spans mit lang="pli" werden kursiv mit einem Leerzeichen danach formatiert.

Bevor ich den oben erwähnten Bug gesehen habe, hatte ich nicht darüber nachgedacht, dass es bereits einen Prozess gibt, um einiges HTML in Markdown umzuwandeln. Nun frage ich mich, ob es möglich ist, entweder über ein Component oder ein Plugin Code hinzuzufügen, der die spezifischen Spans mit lang-Attributen auf die oben beschriebene Weise umwandelt. Idealerweise über ein Component, aber möglicherweise auch mit einem Plugin.

Um genau zu sein, wird es entweder so aussehen:

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

oder so:

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

Dabei können Sprache A und Sprache B variieren.

Der Link kann vorhanden sein oder nicht und wird immer denselben Titelwert haben. Nur Links mit diesem Titelwert sollten fett formatiert werden. Danach sollte ein weicher Zeilenumbruch eingefügt werden.

Sprache B sollte kursiv formatiert und mit einem weichen Zeilenumbruch versehen werden.

Discourse wandelt das <p> bereits wie erwartet um.

Im Fall, in dem Sprache A sich wiederholt:
Nach dem ersten Vorkommen des Spans muss ein Leerzeichen eingefügt werden. Dies kann im ersten Fall hinzugefügt werden, da es nicht sichtbar wäre :person_shrugging:

Sprache B ist nur eine Auswahl aus zwei Sprachen, die als Array bereitgestellt werden könnten. Entweder pli oder lzh.

Danke!

(@delightful und ich arbeiten gemeinsam daran)