사용자 선택의 원본(raw) 가져오기 (Markdown 제외)

quoteState.buffer는 사용자가 인용할 때 하이라이트한 마크다운 텍스트를 가져오며, quote-share-buttons-before 플러그인 아울렛에 전달되는 항목 중 하나입니다(this.args.data.quoteState.buffer로 접근). 마크다운으로 변환되기 전에 사용자가 하이라이트한 원본(파싱되지 않은) 텍스트를 가져오는 방법은 무엇인가요? 게시물을 “데마크다운(de-Markdown)” 처리하는 것이 가능한가요? 이것이 아예 불가능한가요?

파일:

감사합니다.

테스트:

  • 이 불릿 포인트는 별표가 아니라 플러스 기호입니다

생각할 수 있는 임시 해결책은 원본 게시물을 마크다운으로 변환한 후(방법은 불분명), 변환된 텍스트에서 선택 범위의 시작과 끝 인덱스를 확인하고, 이를 이용해 원본 텍스트에서 해당 섹션을 추출하는 것입니다. 문제는 문자가 변경되지 않는다는 가정, 즉 마크다운이 문자를 1:1로 대체한다는 가정이 필요하다는 점입니다. 분명히 더 좋은 방법이 있을 텐데 :thinking:?

편집과 인용 복기가 이 문제를 어떻게 처리하는지 확인해 보셨나요? 거기서 텍스트를 선택하면 어떻게 되나요?

이 경우, 인용을 복사하면 인용된 내용에서 항목 기호가 *로 변환되는데, 실제로는 +를 사용했습니다. 별(*) 대신 더하기(+)를 표시하는 방법을 찾고 있습니다.

네, 이건 정말 어렵습니다. 아마 난이도 20 정도일 거예요.

선택된 내용에서 가져오는 것은 바로 HTML을 가져오는 것입니다.

<ul>
<li>some text</li> 
</ul>

여기에는 *와 +에 대한 정보가 없습니다.

복잡함을 더하자면, 긴 목록에서 몇 가지 항목만 선택하면 다음과 같은 결과가 나옵니다:

<li>some text</li>
<li>some other text</li>

이것은 ulol조차 구분해 주지 않습니다.

우리가 인용을 위해 수행하는 작업은 다음과 같습니다:

HTML → Markdown

이것은 손실이 있는 과정이며, 버그가 발생하기 쉬운 과정이기도 합니다. 변환 전에 HTML을 정리하기 위해 여러 가지 우회 방법을 사용하고 있습니다.

다음으로 변경하려면:

HTML → 원본 Markdown

이것은 HTML 행/열 → 마크다운에 대한 역 매핑(reverse map)이 필요합니다. 현재 markdown.it에서는 이것이 지원되지 않습니다.

아, 그렇다면 꽤 어려운 작업이겠네요. 아무튼, 설명해 주셔서 감사합니다!