def markdown(text)
render_options = {
filter_html: false,
hard_wrap: true,
link_attributes: { rel: 'nofollow' }
}
renderer = HTML.new(render_options)
extensions = {
autolink: true,
fenced_code_blocks: true,
lax_spacing: true,
no_intra_emphasis: true,
strikethrough: true,
superscript: true
}
Redcarpet::Markdown.new(renderer, extensions).render(text).html_safe
end
以下传入文字按预期呈现,强调""粗体:
This is **emphasized** text.
但是,以下文字未按预期呈现:
<div>
This is **emphasized** text.
</div>
div内的所有内容都保持不变。这是Redcarpet / Markdown的正常行为吗?如果是这样,它可以被覆盖吗?
答案 0 :(得分:0)
此问题被报告为Redcarpet issue #13,并且到目前为止,开发人员的建议是使用支持Markdown的“非标准”扩展的Markdown处理器,例如{{3} }:
如果您正在寻找带有Markdown扩展名的Markdown处理器,我强烈建议您查看另一个Markdown处理器,例如Kramdown,它确实允许这种混合,而Markdown处理器可以解析HTML块中的Markdown。 (Kramdown)
如果您想沿着那条路线走,可以像这样使用Kramdown:
require 'kramdown'
text = "<div>Wow! Markdown _inside_ HTML!</div>"
options = { input: "Kramdown", parse_block_html: true }
Kramdown::Document.new(text, options).to_html
有关parse_block_html
选项的官方文档,source。