3

pandocを使用するフィルターでnanoc3.5.0を使用しようとしていますpandoc-rubyRules具体的には、の最後の呼び出しがPandocRuby.convert()次のようになるように、ファイルからいくつかのオプションを渡すことができません。

PandocRuby.convert(content,
                   {:from => :markdown, :to => :html}, :no_wrap, 
                   :table_of_contents, :mathjax, :standalone,
                   {"template" => Dir.getwd + '/layouts/pandocTemplate.html'})

上記の呼び出しをカスタムフィルターに入れると、すべてが正常に機能します。Rulesただし、オプションのセットごとに特別なフィルターを作成する必要がないように、pandocオプションを指定したいと思います。

デフォルトのpandocフィルターは関数として定義されておりrun(content, params={})、単に。を呼び出しますPandocRuby.convert(content, params)。正しく呼び出されるparamsように設定するにはどうすればよいですか?PandocRuby.convert()の次のディレクティブはRules機能しません。

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にあまり詳しくないので、現在の取り組みは暗闇の中での刺し傷にすぎません。

4

2 に答える 2

5

pandocnanocに付属しているフィルターは、現時点ではそれを適切に行うことができません。フィルタに指定されたパラメータは、次の場所に直接渡されますPandocRuby.convert

def run(content, params={})
  PandocRuby.convert(content, params)
end

ソース

フィルタの呼び出しには3つ以上の引数があり、それがクラッシュする理由です。フィルタは確かに更新する必要があります(どのように呼び出すことができるかについての私の考えはあまりにもナイーブでした)。フィルタの改善に挑戦したい場合は、プルリクエストを送信してください。それまでの間、これを問題として報告しました(リンク)。

(そしてうまくいけば、私はこの答えをすぐに適切な答えで更新することができます!)

于 2013-02-01T13:28:16.410 に答える
3

pandoc-ruby私は:なしでpandocディレクトリを呼び出す基本的なnanocpandocフィルターを作成しました。

# All files in the 'lib' directory will be loaded
# before nanoc starts compiling.
# encoding: utf-8

module Nanoc::Filters

  class PandocSystem < Nanoc::Filter
    identifier :pandoc_system
    type :text => :text

    def run(content, params = {})
      if item[:extension] == 'org'
        `pandoc -f org -t html < #{item.raw_filename}`
      elsif ["md", "markdown"].index(item[:extension])
        `pandoc -f markdown -t html < #{item.raw_filename}`
      end
    end

  end

end

に従って、独自のオプションをpandocに渡すことができますitem[:extension]。それが役に立てば幸い。


更新、nanoc用のpandocフィルターの改良版を提供する新しい要点を作成しました。https ://gist.github.com/xiaohanyu/9866531を確認してください。

于 2014-03-24T13:15:23.790 に答える