```perl
use strict;
use warnings;
warn "foo";
```
という Triple Backtick が使えない事なんだけど、まぁこれは Markdown の仕様に準拠していない拡張なのでしょうがないと思いつつも、最近 github に慣れすぎていてイライラしてきた。Jekyll Plugin では Markdown の変換をプラグインとして書くことは出来ないので、Jekyll::MarkdownConverter
の convert メソッドを上書きしてやるプラグイン(と呼べるかどうかはあるが)を書いた。
module Jekyll
class MarkdownConverter
alias :old_convert :convert
def convert(content)
content.gsub!(/(?:^|\n)```(\w*)\n(.*?\n)```\n/m) do |text|
cls = $1.empty? ? "prettyprint" : "prettyprint lang-#{$1}"
"\n<pre class=\"#{cls}\"><code>#{CGI.escapeHTML($2)}</code></pre>"
end
old_convert(content)
end
end
end
これを _plugins/triple-backtick.rb
として入れておけば、Google Code Prettify が検知できるクラス名を付けてコード出力してくれ、みんな大好き ```
が使える様になって幸せになれる。ちなみにこの方式を使って、maruku や redcloth で出力させたい場合はLiquidのコンバータまでさかのぼって上書きしないといけなくなるので諦めた。