컴포저에 HTML 붙여넣기 시 커스텀 처리가 가능한가요?

위에서 언급한 버그라고 생각되는 문제를 발견하면서, 이제 코미저(composer)에 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)을 한 줄씩 배치하고 lang="pli" 속성이 있는 스팬은 이탤릭체로 표시한 뒤 공백을 넣는 방식입니다.

이 게시물의 상단에서 언급한 버그를 발견하기 전까지는, 일부 HTML을 마크다운으로 변환하는 프로세스가 이미 존재한다는 사실에 대해 생각해보지 않았습니다. 이제 컴포넌트 또는 플러그인을 사용하여 위와 같은 방식으로 lang 속성이 있는 특정 스팬을 변환하는 코드를 추가할 수 있는지 궁금합니다. 가능하면 컴포넌트를 통해, 아니면 플러그인을 통해 구현하고 싶습니다.

구체적으로 말하면, 다음과 같은 두 가지 형태 중 하나가 될 것입니다.

  <--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와 저 둘이서 함께 작업하고 있어요)