私はSinatraを使用しており、SinatraはテンプレートのレンダリングにTiltを使用しています。
デフォルトでは、Redcarpetには多くのレンダリング拡張機能があります。#render
Sinatraの方法でこれらの拡張機能の一部を使用するにはどうすればよいですか?
:gh_codeblock
拡張子が付いたマークダウンファイルをレンダリングする必要があります。
Sinatra では、通常、render
メソッドを直接使用するのではなく、適切なテンプレート言語(この場合は ) に対応するメソッドを使用しますmarkdown
。
必要なオプションをこのメソッドにハッシュとして渡すことができるはずであり、Sinatra (および Tilt) はそれらをテンプレート エンジンに渡します。ただし、最新のリリースされた Tilt gem (1.3.3) は、マークダウンのすべてのオプションを渡すわけではなく、 と のみを渡す:filter_html
ため:smart
、これは機能しません。これは現在の Tilt ヘッドで修正されていますが、リリースされた gem にはまだ反映されていません。
Bundlerを使用している場合は、 Bundler の Git サポートを使用してこれを回避できます。
gem 'tilt', :git => 'git://github.com/rtomayko/tilt.git'
または、Tilt の最新バージョンをダウンロードlib
し、そのディレクトリがアプリのロード パス上にあることを確認して、ディレクトリに配置することもできますvendor
。
sinatra、tilt、redcarpet のソース コードを正しく読めば、次のようなことができるはずです。
render('your_view', {:gh_codeblock => true}, {HASH_OF_YOUR_LOCAL_VARIABLES})
レンダリングする 2 番目のパラメーターは、テンプレート エンジンに渡されるオプション ハッシュです。見る:
def markdown(template, options={}, locals={})
render :markdown, template, options, locals
end