Redcarpet不会在HTML标记内呈现降价。这是正常的,是否可以被覆盖?

时间:2017-06-03 16:41:11

标签: ruby-on-rails markdown redcarpet

我已经编写了一个简单的Rails助手来使用Redcarpet转换Markdown。这是代码:

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的正常行为吗?如果是这样,它可以被覆盖吗?

1 个答案:

答案 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