nanoc: pandoc-ruby にオプションを渡すにはどうすればよいですか?
概要
pandoc-ruby を使用する pandoc フィルターで nanoc 3.5.0 を使用しようとしています。具体的には、PandocRuby.convert() への最終呼び出しが次のようになるよう、ルール ファイルからいくつかのオプションを渡すことができません。
PandocRuby.convert(content,
{:from => :markdown, :to => :html}, :no_wrap,
:table_of_contents, :mathjax, :standalone,
{"template" => Dir.getwd + '/layouts/pandocTemplate.html'})
上記の呼び出しをカスタム フィルターに配置すると、すべてが正常に機能します。ただし、オプションのセットごとに特別なフィルターを作成する必要がないように、ルールで Pandoc オプションを指定したいと考えています。
デフォルトの Pandoc フィルターは関数 run(content, params={}) として定義されており、単に PandocRuby.convert(content, params) を呼び出します。 PandocRuby.convert() が正しく呼び出されるようにパラメータを設定するにはどうすればよいですか?ルール内の次のディレクティブは機能しません。
filter :pandoc, :params => { :from => :markdown, :to => :html, :no_wrap, :table_of_contents, :mathjax, :standalone, "template" => Dir.getwd + '/layouts/pandocTemplate.html' }
filter :pandoc, :params => { :from => :markdown, :to => :html, :no_wrap => true, :table_of_contents => true, :mathjax => true, :standalone => true, "template" => Dir.getwd + '/layouts/pandocTemplate.html' }
最初のディレクティブでは Ruby エラーが発生し、2 番目のディレクティブは実行されますが、空白のページが表示され、pandoc が正しく呼び出されなかったことを示します。 Ruby についてはあまり詳しくないので、今の取り組みは暗中模索です。
解決策
nanoc に付属の Pandoc フィルターは、現時点ではこれを適切に行うことができません。フィルターに指定されたパラメータは、PandocRuby.convert に直接渡されます。
def run(content, params={})
PandocRuby.convert(content, params)
end
(ソース)
フィルターの呼び出しには 3 つ以上の引数があるため、フィルターがクラッシュします。フィルターは確かに更新する必要があります (フィルターを呼び出す方法についての私の考えが甘すぎました)。フィルターの改善に挑戦したい場合は、プル リクエストを送信することを歓迎します。当面の間、これを問題として報告しました (リンク)。
(そして、この回答をすぐに適切な回答で更新できることを願っています!)