2

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

set :markdown, :generate_toc => true

但这似乎不起作用。

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

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

这也行不通。

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

4

2 回答 2

0

这应该有效:

get '/' do
  text = File.read('README.md')
  markdown = RDiscount.new(text, :generate_toc)
  body = markdown.to_html
  haml :home, :layout => true, :locals => {:body => body}
end

您可以通过 RDiscount 直接创建正文,并将其作为纯 HTML 包含在您的 HAML 布局中。无论什么阻止创建目录,都应该以这种方式本机工作。我通过https://github.com/mjijackson/markdown/blob/master/app.rb找到了解决方案

于 2012-06-16T12:21:21.423 回答
0

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

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

Tilt.register MDWithTOC, 'md'

在这里,我们重写了 RDiscount Tilt 模板处理程序的 flags 方法,并将其重新设置为md格式的处理程序。

现在您可以md像往常一样使用帮助程序,它将生成 TOC。

于 2012-09-24T20:05:49.757 回答