수행 할 수있는 몇 가지 방법이 있습니다. 선택한 라이브러리는 사용하는 라이브러리 (특정 도구가 StackOverflow에서 주제와 관련이 없다고 제안함)와 찾고자하는 동작에 따라 다릅니다. 아래의 각 방법에 대한 요약을 볼 수 있습니다.
Markdown 파서를 수정하십시오.
일부 파서는 사용자가 동작을 수정할 수있게 해주는 API를 제공합니다. 테이블, 헤더 등을 파싱하고 나머지는 그대로 두는 부분을 제거 할 수 있습니다. 그런 다음 최종 출력물은 해당 기능에 대한 Markdown 구문을 유지합니다. 예를 들어 저자가 헤더를 입력하면 해시로 시작하는 단락을 얻습니다.
사용자 지정 렌더러를 만듭니다.
일부 Markdown 파서는 두 단계로 작동합니다. 1 단계에서 파서는 Markdown 텍스트를 가져 와서 AST (Abstract Syntax Tree)를 출력하고 2 단계에서 렌더러는 AST를 받아 HTML을 출력합니다. 기본 렌더러를 수정하거나 원하는대로 각 요소를 처리하는 사용자 정의 렌더러를 빌드 할 수 있습니다. 예를 들어, "헤더"렌더러 메소드에 헤더가 아닌 단락을 출력하도록 알리고 해당 단락에 원래 해시가 포함되는지 여부를 선택할 수 있습니다.
HTML 소독기를 사용하십시오.
Markdown 파서를 사용하여 텍스트를 전달하고 수정하지 않고 출력합니다. 그런 다음 HTML 출력을 HTML 새 니타 이저로 전달하면 허용 목록에없는 태그는 제거됩니다. 이 시나리오에서는 헤더를 헤더로 사용한다는 단서가 없습니다. 최종 결과물에서는 보통 단락처럼 보일 것입니다.
일반적으로 이것은 HTML 새 니타이저를 사용하여 수행됩니다. 모든 기능을 갖춘 Markdown 구문 분석기를 사용하고 HTML 이외의 모든 HTML 태그를 제거하는 HTML 살균기로 출력을 전달하십시오. – Waylan
@Waylan, 답변으로 의견을 추가 할 수 있습니다. –
@ Hal9k 몇 가지 다른 접근 방식을 제안하는 답변을 추가했습니다. – Waylan