2012-06-10 33 views
2

所以我有Sinatra設置與Rdiscount呈現帶有HAML佈局的降價文件。這一切都有效,但我希望RDiscount根據我的haml文件中的標題生成目錄表。我試着在sinatra配置中設置它。RDiscount:generate_toc與Sinatra

set :markdown, :generate_toc => true 

但這似乎並不奏效。

我也試過這樣做,當我渲染降價,像這樣:

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

這也不起作用。

這甚至可能嗎?如果是這樣,我做錯了什麼?

回答

0

的解決方案,同時@三個人才的回答對我幫助很大,我想展現一個或許更通用的解決方案:

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

Tilt.register MDWithTOC, 'md' 

這裏我們覆蓋了RDiscount傾斜模板處理的標誌方法將其作爲md格式的處理程序進行管理。

現在您可以一如既往地使用md助手,它會生成TOC。

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創建身體,包括它在你的HAML佈局純HTML。無論阻止toc創造應該以這種方式本地工作。我發現通過https://github.com/mjijackson/markdown/blob/master/app.rb