Processamento personalizado de HTML ao colar no editor?

Percebendo o que acho que é um bug, agora estou me perguntando se é possível personalizar como o HTML é analisado quando colado no editor.

Nosso fórum é dedicado a um site com escrituras antigas traduzidas para idiomas originais. (Por exemplo, inglês com pāli) Então, as pessoas podem colar algo como isso:

<span lang="en">Assim ouvi eu.</span><span lang="pli"><span lang="la">Evaṁ me sutaṁ—</span></span><span lang="en">Em certo tempo, o Buda estava hospedado perto de Sāvatthī, no Bosque de Jeta, mosteiro de Anāthapiṇḍika.</span><span lang="pli"><span lang="la">ekaṁ samayaṁ bhagavā sāvatthiyaṁ viharati jetavane anāthapiṇḍikassa ārāme.</span></span>

No site das escrituras, parece assim:

Antes do novo bug que mencionei acima, colar esse texto produziria isso em nosso fórum:

Assim ouvi eu. Evaṁ me sutaṁ— Em certo tempo, o Buda estava hospedado perto de Sāvatthī, no Bosque de Jeta, mosteiro de Anāthapiṇḍika. ekaṁ samayaṁ bhagavā sāvatthiyaṁ viharati jetavane anāthapiṇḍikassa ārāme.

Não é ideal! Todos os idiomas misturados. Difícil de ler. Um usuário consciente formataria usando markdown assim:

Assim ouvi eu.
*Evaṁ me sutaṁ—* 

Em certo tempo, o Buda estava hospedado perto de Sāvatthī, no Bosque de Jeta, mosteiro de Anāthapiṇḍika. 
*ekaṁ samayaṁ bhagavā sāvatthiyaṁ viharati jetavane anāthapiṇḍikassa ārāme.* 

O que seria renderizado assim:

Basicamente, colocando cada span em uma linha, tornando spans com lang="pli" em itálico com uma linha em branco depois.

Até ver o bug que mencionei no início deste post, eu não tinha pensado no fato de que já existe um processo para converter algum HTML em Markdown. Agora estou me perguntando se é possível usar um componente ou um plugin para adicionar algum código que converteria os spans específicos com atributos lang da maneira que mencionei acima. Idealmente por meio de um componente, mas possivelmente com um plugin.

Para ser mais específico, será ou

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

ou

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

Onde o idioma a e o idioma b variarão.

O link pode ou não estar presente, e sempre terá o mesmo valor de título. Apenas os links com este valor de título devem ser negritados. Uma quebra de linha suave deve ser incluída depois disso.

O idioma b deve estar em itálico e com quebra de linha suave.

O Discourse já está convertendo o <p> conforme esperado.

No caso de repetição do idioma a:
é necessário adicionar um espaço após a primeira instância do span. Isso pode ser adicionado no primeiro caso, já que não seria visível :person_shrugging:

O idioma b é apenas uma seleção de 2 idiomas que poderiam ser fornecidos como uma matriz. Ou pli ou lzh.

Obrigado!

(@delightful e eu estamos trabalhando nisso juntos)