Redcarpet Markdown gem:仅实例化一次 Markdown 对象并在解析之间重用它



我在阅读红地毯的文档时发现了这样一句话:

The Markdown object is encouraged to be instantiated once with the required settings, and reused between parses.

Rails应用程序中,最好的方法是什么?

我在红地毯上观看了Ryan Bates的railscast,他在application_helper.rb中有一个辅助方法,其中每个方法调用都实例化一个新的Redcarpet对象,如下所示:

def markdown(text)
  options = [:hard_wrap, :filter_html, :autolink, :no_intraemphasis, :fenced_code, :gh_blockcode]
  Redcarpet.new(text, *options).to_html.html_safe
end

这不是最好的方法吗?谢谢你的建议。

不确定这是否是rails做事的方式,但它似乎很好,并且没有违反POLA或类似规定,所以希望它能满足您的需求。

config/initializers/文件夹中创建一个markdown.rb文件,并使用以下代码片段的一些变体:

class MultiRenderer < Redcarpet::Render::HTML
  include Redcarpet::Render::SmartyPants
end
module Paradox
  Markdown = Redcarpet::Markdown.new(MultiRenderer)
end

Paradox替换为应用程序的名称。您可以向渲染器或markdown实例添加各种选项,如自述文件中所述。我创建的渲染器(MultiRenderer)内置了smartypants,因此您可以舍入引号和其他

要使用Markdown,只需调用YourApp::Markdown.render(text),就可以返回html。您可能需要在此基础上运行html_safe。

相关内容

  • 没有找到相关文章

最新更新