2012/10/19

Jekyllを使っていていつも思うのが、githubの様な ```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/mdo |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のコンバータまでさかのぼって上書きしないといけなくなるので諦めた。
Posted at 22:30 | WriteBacks () | Edit
Edit this entry...

wikieditish message: Ready to edit this entry.






















A quick preview will be rendered here when you click "Preview" button.