ruby - RDiscount :generate_toc with Sinatra

标签 ruby sinatra markdown tilt rdiscount

因此,我使用 Rdiscount 设置了 sinatra,以呈现具有 HAML 布局的 Markdown 文件。这一切都有效,但我希望 RDiscount 根据我的 haml 文件中的标题生成目录。我试过在 sinatra 配置中设置它。

set :markdown, :generate_toc => true

但这似乎行不通。

当我像这样渲染 Markdown 时,我也尝试过这样做:

markdown :PAGENAMEHERE, :layout => :'layouts/PAGENAMEHERE', :generate_toc => true

这也行不通。

这可能吗?如果是,我做错了什么?

最佳答案

虽然@three 的回答对我帮助很大,但我想展示一个可能更通用的解决方案:

class MDWithTOC < ::Tilt::RDiscountTemplate
  def flags
    [:generate_toc]
  end
end

Tilt.register MDWithTOC, 'md'

在这里,我们覆盖了 RDiscount Tilt 模板处理程序的标志方法,并将其注册为 md 格式的处理程序。

现在您可以像往常一样使用 md 助手,它会生成 TOC。

关于ruby - RDiscount :generate_toc with Sinatra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10965644/

相关文章:

ruby-on-rails - 使用 ruby​​/rails 将文件上传到网站

ruby-on-rails - sidekiq 重试参数耗尽

variables - 如何在 sinatra 中的处理程序(路由)之间传递变量(没有 flash、 session 、@@class_variable 或 $global_variable)?

ruby - 在使用 Ruby 2.0.0 的 Windows 7 上安装 sinatra-contrib 时出错

编织到单词时,Rmarkdown 无法找到 lua 过滤器

image - Vue markdown 图片不显示

javascript - Ruby on Rails : Validate a user has selected a checkbox

rubysdl 与 ruby​​-sdl-ffi

ruby - 采用 Sinatra 的可靠快速排队系统

r - 如何在 Rmd 报告中指定 toc 将在哪个级别展开?