2017-03-23 5 views
0

사용자가 텍스트의 서식을 지정할 수있는 방법을 찾고 있습니다. Markdown을 Java 변환기의/bold/italic 밑줄로 제한

  • 기울임

    • 밑줄
    • 굵은
    • 열거

    나는 서버 측에 HTML로 마크 다운을 사용하여 마크 다운을 변환하고 싶습니다 : 서식은 제한됩니다.

    내 문제는 Markdown이 허용하고 싶은 것보다 더 많은 서식을 지원한다는 것입니다 (표제, 표, ..).

    밑줄/기울임 꼴/굵게/..를 허용 목록으로 만들 수있는 Markdown 라이브러리를 알고 있습니까?

    화이트리스트가 없으면 JSOUP으로 결과 HTML을 정리하는 방법을 생각했습니다. 그게 선호되는 방법인가요?

    감사합니다.

  • +0

    일반적으로 이것은 HTML 새 니타이저를 사용하여 수행됩니다. 모든 기능을 갖춘 Markdown 구문 분석기를 사용하고 HTML 이외의 모든 HTML 태그를 제거하는 HTML 살균기로 출력을 전달하십시오. – Waylan

    +0

    @Waylan, 답변으로 의견을 추가 할 수 있습니다. –

    +0

    @ Hal9k 몇 가지 다른 접근 방식을 제안하는 답변을 추가했습니다. – Waylan

    답변

    0

    수행 할 수있는 몇 가지 방법이 있습니다. 선택한 라이브러리는 사용하는 라이브러리 (특정 도구가 StackOverflow에서 주제와 관련이 없다고 제안함)와 찾고자하는 동작에 따라 다릅니다. 아래의 각 방법에 대한 요약을 볼 수 있습니다.

    Markdown 파서를 수정하십시오.

    일부 파서는 사용자가 동작을 수정할 수있게 해주는 API를 제공합니다. 테이블, 헤더 등을 파싱하고 나머지는 그대로 두는 부분을 제거 할 수 있습니다. 그런 다음 최종 출력물은 해당 기능에 대한 Markdown 구문을 유지합니다. 예를 들어 저자가 헤더를 입력하면 해시로 시작하는 단락을 얻습니다.

    사용자 지정 렌더러를 만듭니다.

    일부 Markdown 파서는 두 단계로 작동합니다. 1 단계에서 파서는 Markdown 텍스트를 가져 와서 AST (Abstract Syntax Tree)를 출력하고 2 단계에서 렌더러는 AST를 받아 HTML을 출력합니다. 기본 렌더러를 수정하거나 원하는대로 각 요소를 처리하는 사용자 정의 렌더러를 빌드 할 수 있습니다. 예를 들어, "헤더"렌더러 메소드에 헤더가 아닌 단락을 출력하도록 알리고 해당 단락에 원래 해시가 포함되는지 여부를 선택할 수 있습니다.

    HTML 소독기를 사용하십시오.

    Markdown 파서를 사용하여 텍스트를 전달하고 수정하지 않고 출력합니다. 그런 다음 HTML 출력을 HTML 새 니타 이저로 전달하면 허용 목록에없는 태그는 제거됩니다. 이 시나리오에서는 헤더를 헤더로 사용한다는 단서가 없습니다. 최종 결과물에서는 보통 단락처럼 보일 것입니다.