2

だから私はHAMLレイアウトでマークダウンファイルをレンダリングするためにRdiscountでsinatraをセットアップしました。これはすべて機能しますが、RDiscountでhamlファイルのヘッダーに基づいて目次を生成する必要があります。sinatra構成で設定してみました。

set :markdown, :generate_toc => true

しかし、それはうまくいかないようです。

私はまた、次のようにマークダウンをレンダリングするときにそれを試してみました:

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

これも機能しません。

これも可能ですか?もしそうなら、私は何を間違っているのですか?

4

2 に答える 2

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 に答える
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で解決策を見つけました

于 2012-06-16T12:21:21.423 に答える