2017-03-23 8 views
0

私は、ユーザーがテキストを書式設定できるようにする方法を模索しています。私はマークダウンを使用し、サーバーサイドでHTMLにマークダウンを変換したいMarkdownをJavaコンバーターの/ bold/italicに制限する

  • 下線
  • イタリック
  • 大胆
  • 列挙

:フォーマットはに制限されています。

私の問題は、Markdownは、私が許可したいよりも多くの書式設定をサポートしていることです(見出し、表など)。

アンダーライン/斜体/太字/ ..のホワイトリストを作成できるMarkdownライブラリがありますか?

ホワイトリストがない場合は、結果のHTMLをJSOUPでクリーンアップすることを考えました。それは好ましい方法ですか?

ありがとうございます。

+0

一般に、これはHTMLサニタイザで実現されます。フル装備のMarkdownパーサを使用して、ホワイトリストにないHTMLタグをすべて取り除くHTMLサニタイザで出力を渡します。 – Waylan

+0

@Waylan、あなたは答えとしてあなたのコメントを追加することができます。 –

+0

@ Hal9k私はいくつかの異なるアプローチを示唆する答えを追加しました。 – Waylan

答えて

0

これにはいくつかの方法があります。あなたが選んだのは、使用しているライブラリ(StackOverflowで特定のツールが話題になっていないことを示唆している)と、あなたが探している動作がまったく異なることです。以下の各アプローチの概要を見つけることができます。

Markdownパーサーを変更します。

一部のパーサーでは、動作を変更できるようにするAPIが用意されています。おそらく、テーブル、ヘッダーなどを解析し、残りの部分をそのまま残すビットと部分を削除することができます。最終的な出力は、それらのフィーチャのMarkdown構文をそのまま残します。たとえば、著者がヘッダーを入力すると、ハッシュで始まる段落が得られます。

カスタムレンダラーを作成します。

一部のMarkdownパーサーは2つのステップで動作します。ステップ1で、パーサーはMarkdownテキストを取り、抽象構文ツリー(AST)を出力し、ステップ2でレンダラーはASTを受け入れてHTMLを出力します。既定のレンダラーを変更するか、必要に応じて各要素を処理するカスタムレンダラーを作成することができます。たとえば、ヘッダーレンダラーメソッドに(ヘッダーではなく)段落を出力するように指示し、その段落に元のハッシュが含まれるかどうかを選択できます。

HTMLサニタイザーを使用します。

選択したMarkdownパーサーを使用して、テキストを渡して、そのまま出力します。その後、HTML出力をHTMLサニタイザに渡します。これにより、ホワイトリストにないタグは除外されます。このシナリオでは、ヘッダーをヘッダーに使用するというヒントはありません。最終的な出力では、単純に通常の段落のように見えます。

関連する問題