RailsでMarkdownを使ってみる

Tsukasa OISHI

このブログは2006年の年末に開発し始めてから、ずっとはてな記法のような独自記法を採用してきました。でもいい加減独自記法もないよね、ということでMarkdownを使えるようにしてみました。

まず既存の記事の独自記法をMarkdownに変換しなければなりません。直接変換するのは厳しいので、いったんHTMLに変換してからMarkdownに変換することにします。
HTMLからMarkdownに変換するには、reverse_markdownというgemを使います。ちょこちょこと以下のような点で問題があったので、いろいろとパッチをあてました。

  • preタグの中の複数のスペースをひとつのスペースに変換しちゃう
    • この変換処理自体を行わないようにした
  • brタグの前にスペースを入れてしまう
    • スペースを入れないようにした
  • preタグの中の < の記号をタグの始まりだと勘違いしちゃう
    • htmlの時点で、preタグの中身にCGI.escapeHTMLをかける

変換スクリプトはここにあります。

MarkdownをHTMLに変換するライブラリはいくつかありますが、今回はredcarpetを使うことにしました。Githubでも使われているようです。
シンプルにHTML変換するコードは以下になります。コードのsyntaxに色をつけるために、Pygmentsを使用しています。
https://github.com/tsukasaoishi/kaeruspoon/blob/e15911a49c3e486616ed9987684b9eaef0a6ff3c/lib/text_decorator.rb

始める前はすごく大変かと思っていたのですが、以外と簡単にMarkdownに変更することができました。