최근 제 자체 Discourse 포럼을 설정했습니다: https://crucible.hubbe.net/ 전반적으로 매우 만족하고 있습니다. 이 커뮤니티는 주로 프로 모델러들이 사용하는 아두이노 계열 보드에 대한 것입니다. 그래서 템플릿 기반 C++ 코드를 많이 사용하게 됩니다. 특히, 조명 표시 방식을 설정하는 "style"이라는 것을 사용합니다. 스타일은 복잡할 수 있어서 온라인 미리보기/편집기를 작성했고, discourse-linkify 테마 컴포넌트를 사용하여 스타일이 자동으로 편집기에 링크되도록 했습니다. URL 문자를 인용하는 등 discorse-linkify 테마 컴포넌트에 몇 가지 사소한 변경이 필요했는데, 이는 비교적 쉬웠으며 관심이 있다면 해당 변경 사항에 대한 PR을 만들 수 있습니다.
하지만 문제가 있습니다…
템플릿 코드의 일부는 < 와 > 문자가 많아 HTML처럼 보일 수 있고, 어느 시점에서 Discourse가 일부 "태그"를 제거합니다. 기본적으로 < > 안에 있는 모든 알려지지 않은 단어는 제거되는 것 같습니다. 이 게시물의 다음 줄은 공백 없이 < foo > 형태가 되어야 합니다:
< - foo가 여기에 있습니다
처음에는 linkify 컴포넌트가 무언가 잘못되고 있다고 생각했지만, 조사해 본 결과 linkify가 실행될 때쯤에는 이미 해당 내용이 사라져 있었습니다. 따라서 추가 태그들이 조리(cooking) 과정의 어딘가에서 증발한 것 같습니다.
코드 블록(세 개의 백틱 등)에서는 태그가 유지되는 것을 확인했지만, 제 목적에 항상 유지되는 것이 더 좋습니다.
일段时间 동안 discourse/lib/utilities.cs:CODE_BLOCKS_REGEXP를 수정하면 이 문제를 해결할 수 있다고 생각했지만, inCodeBlock은 많은 곳에서 사용되지 않으므로 이것이 잘못된 접근일 수 있습니다. 또한, 플러그인이나 테마 컴포넌트에서 CODE_BLOCKS_REGEXP를 실제로 수정하는 방법도 아직 찾지 못했습니다.
이 태그들을 제거하는 데 실제로 책임이 있는 코드는 무엇인가요?
이를 비활성화하는 가장 좋은(지원이 가장 잘 되는) 방법은 무엇인가요?
고양이를 뛰어넘는 것보다 더 좋은 일이 많으니까요?
어떤 일을 쉽고 올바른 방법으로 할 수 있다면, 사람들은 항상 쉬운 방법을 선택할 겁니다. 만약 StylePtr<> 템플릿이 사전 형식화된 텍스트 밖에 놓이는 것을 실제로 막을 수 있다면, 사람들은 올바른 방법을 따를 수밖에 없겠지만, 어떻게 그렇게 할 수 있을까요? (또한, 이는 StylePtr<> 템플릿에 대해 이야기하는 완전히 유효한 방법들도 차단할 수 있으므로 매우 강압적인 해결책처럼 느껴집니다.)
현재 링크파이를 사용해 StylePtr<> 템플릿에 링크를 걸기 위한 제 해결책도 DOM이 매우 다르기 때문에 사전 형식화된 텍스트에서는 작동하지 않지만, 이는 코딩을 조금만 하면 수정할 수 있는 사소한 문제입니다.
아마도 그렇겠죠. 저는 백틱이 없다면 이 패턴을 사용해 자동으로 백틱을 추가하고, 링크를 걸기 위해 후처리(post-cooking) 콜백을 사용하는 방식을 취할 것 같습니다. 제가 착각하고 있지 않다면, 다른 방법으로 사전 형식화된 텍스트 중간에 링크를 추가하는 방법은 없습니다.