【问题标题】:How to configure Haml's :markdown filter to use Redcarpet with options?如何配置 Haml 的 :markdown 过滤器以使用带有选项的 Redcarpet?
【发布时间】:2013-04-05 15:38:26
【问题描述】:

我正在使用 Rails 3.2.11、Haml 4.0 和 Redcarpet 2.2.2。

我想将 Haml 的 :markdown 过滤器配置为将 Redcarpet 与 with_toc_data: true 一起使用。在ApplicationHelper 我尝试定义:

def markdown(text)
  markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(with_toc_data: true))
  raw markdown.render(text.to_s)
end

虽然:markdown 中的内容被渲染,但没有 TOC 数据。如何更改 :markdown 的解析方式?

【问题讨论】:

    标签: ruby-on-rails haml redcarpet


    【解决方案1】:

    目前无法将选项传递给 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 上提出一个问题,看看问题是否真的存在。
    • 好的,with_toc_data 是创建渲染器的一个选项,我把它插错了地方。这实际上是正确的答案。现在怎么办?我是否将其标记为正确,即使它在技术上不起作用(我的错),还是您纠正我应该是 Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(with_toc_data: true)).render(text)然后我批准它?
    • @matija 我已经更新了答案。我自己只是在调查它,然后回来更新它并看到你的第二条评论。
    • @matija 你可能也应该更新你的问题,所以未来的访问者不会感到困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2022-10-07
    • 2019-11-04
    相关资源
    最近更新 更多