4

Redcarpetを Markdown レンダラーとして使用していますが、解析せずに HTML または < と > を含む任意のテキストを表示できるようにしたいと考えています。

以下は、何が起こるべきかを示したものです。

ユーザーの種類

I *want* to write <code>

サーバーから送り返されたときのこのコメントのソースは、

I <em>want</em> to write &lt;code&gt;

問題は、マークダウンの解析時にレンダラーがエスケープされた html を出力するため、次のようになります。

I &lt;em&gt;want&lt;/em&gt; to write &lt;code&gt;

したがって、人々がサーバーに送信する html と Redcarpet レンダラーによって生成される html を区別できません。これを行う.html_safeと、マークダウンは解釈されますが、ユーザーが入力したhtmlも解釈されます。

これを修正する方法について何か考えはありますか? ユーザーがマークダウンで期待されるようにバッククォート ` を使用しなかった場合でも、ユーザーが入力した html を表示する (ただし解析しない) という考えに注意してください。

関連するコードは次のとおりです。

# this is our markdown helper used in our views
def markdown(text, options=nil)
    options = [:no_intra_emphasis => true, ...]

    renderer = MarkdownRenderer.new(:filter_html => false, ...)

    markdown = Redcarpet::Markdown.new(renderer, *options)
    markdown.render(text).html_safe
end
4

1 に答える 1

1

私があなたを正しく理解していれば<code>、HTML要素としてではなく、通常のテキストとして欲しいだけです。

そのためには、<and>をバックスラッシュでエスケープする必要があります。

I *want* to write \<code\>
于 2014-07-20T14:39:22.577 に答える