如何配置Haml的:markdown过滤器以使用带选项的Redcarpet?

4
我正在使用Rails 3.2.11,Haml 4.0和Redcarpet 2.2.2。
我想要配置Haml的:markdown过滤器来使用带有with_toc_data: true的Redcarpet。在ApplicationHelper中,我尝试定义:
def markdown(text)
  markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(with_toc_data: true))
  raw markdown.render(text.to_s)
end

虽然 :markdown 内容会被渲染,但是没有目录数据。我该如何改变 :markdown 的解析方式?

1个回答

8

目前在Haml中无法通过选项传递给过滤引擎。 现在最好的解决方案可能是用具有所需选项的新过滤器替换现有的:markdown过滤器。

尝试在初始化程序中添加类似以下内容:

module Haml::Filters

  remove_filter("Markdown") #remove the existing Markdown filter

  module Markdown

    include Haml::Filters::Base

    def render(text)
      Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(with_toc_data: true)).render(text)
    end

  end
end

这应该是有效的,autolink: true 是有效的,但是 with_toc_data: true 不是。我要在 Redcarpet 上提出一个问题,看看问题是否真的存在。 - silvenon
好的,with_toc_data是创建渲染器的选项,我把它放错了位置。这实际上是正确的答案。现在怎么办?即使它在技术上不起作用(是我的错),我是否将其标记为正确或者您是否纠正我应该是 Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(with_toc_data: true)).render(text),然后我再批准它? - silvenon
@matija 我已经更新了答案。我刚刚自己查看了一下,然后回来更新它并看到了你的第二条评论。 - matt
@matija,你应该更新你的问题,这样未来的访问者就不会感到困惑了。 - matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接