Converters(コンバータ)

サイトで使用したい新しいマークアップ言語がある場合は、あなた自身のコンバータを実施することで含めることができます。MarkdownとTextileのマークアップ言語は共にこのメソッドを実施しています。

Front Matterを忘れないでください

JekyllはYAMLヘッダ最初にあるファイルだけを変換します。それはプラグインで追加したコンバータの場合も同様です。

以下は.upcaseで終わる全てのポストを取得して、UpcaseConverterを使用して変換するコンバータです。

module Jekyll
  class UpcaseConverter < Converter
    safe true
    priority :low

    def matches(ext)
      ext =~ /^\.upcase$/i
    end

    def output_ext(ext)
      ".html"
    end

    def convert(content)
      content.upcase
    end
  end
end

コンバータは最低3つのメソッドが必要です。

メソッド 説明

matches

このコンバータで使用する拡張子のリストと一致するかどうか。(ドットを含む)ファイルの拡張子の引数をとる。一致する場合はtrue、そうでなければfalseを返す必要がある。

output_ext

(ドットを含む)出力ファイルの拡張子。 通常は".html"

convert

コンテンツの変換ロジック。(front matterを含まない)ファイルのコンテンツを引数としてとります。文字列を返す必要があります。

先ほどの例では、UpcaseConverter#matchesでファイル名の拡張子が.upcaseかを確認し、そうであるならコンバータでレンダリングします。コンテンツを処理するためにUpcaseConverter#convertを呼ぶということです。先ほどのシンプルなコンバータは、単純にコンテンツの文字列を大文字に変換します。最後に、ページをして保存するときに.html拡張子を使用します。