Rainbowはコードのシンタックス・ハイライトをやってくれるJavaScriptライブラリ。拡張の仕組みが凄く書きやすそうで良さそう。名前は悪い。しかもリダイレクト先のURLはrainbowsだし……。まぁとにかく乗り換えようかなとちょっと思った理由をちょっと書いておく。「ちょっと」なのでまだあんまり乗り換える気ない。

書きやすいといっても所詮は正規表現なので、定義フォーマットがGoogle Code Prettifyの黒魔術的なアレよりもちょっとシンプルだとかそういう意味にすぎない。なのでこの点だけでは既存の様々なシンタックス・ハイライトしてくれるライブラリから乗り換えるという程のパワーがあるわけではないと思う。他にもpre要素の子ではないそこらのcode要素のハイライトにも対応している所とかすごいと思うんだけど、おまけ機能的な感じでこれも乗り換えの動機にはならなそう。

僕が乗り換えようかなと思ったのは、Rainbowがシンタックス・ハイライトできる言語であるかどうかHTML側からは気にする必要がないように使うことができる点。Rainbow.color()に要素を渡すとその子をシンタックス・ハイライトしてくれるので、これをうまく使えば良い。そうすると何が良いかというと、例えばRainbowでサポートされていない言語パターンのコードを書く時にも以下のように書くだけ。

<pre><code class="language-vim">
...
</code></pre>

あとはクラスを見て対応しているかいないかを確認し、対応しているものだけRainbow.color()に通せば良い。実際にはかなり追加でJavaScriptを書かないとならなかった(data-language属性を追加したりとか色々)のでイマイチだったんだけど、Google Code Prettifyで「あとで言語ハンドラー追加した!」とかそういう時に昔のエントリーのHTMLを修正する必要があるのとくらべるとマシな気はする。

Google Code Prettifyのシンタックス・ハイライトを実行する前にゴニョゴニョする方が簡単そうに思えてきたところ。