WikiForme を Rails に放り込んでみる

HParser から始まってパーサを調べていたら WikiForme という俺様用パーサ作成装置を発見しました。これを Rails に導入してみます。
まずは CodeRepos に最新版と思しきソースが公開されているので、そこからソースを拾います。

svn co http://svn.coderepos.org/share/lang/ruby/wikiforme/trunk

ダウンロードが終わったら core ディレクトリ以下一式を Rails アプリの lib ディレクトリにコピーします。本来ならこれでオートロードが使えるのですが WikiForme のファイル名は Rails の lib ディレクトリ以下の命名規則に従っていないため、そのままでは動きません。これを書き換えるのは大変なので config/environment.rb の config.gem が記述されている部分の下あたり(趣味で構いません)に以下のように記述します。

require 'wikiforme'

さて、 WikiForme では自分の作ったルールに従ってパースを行う事ができますが、まずは付属の文法ファイルを使ってテストを行います。
先ほど WikiForme をチェックアウトしたディレクトリに移動し、 bundles ディレクトリから simple.4me ディレクトリをコピーし RAILS_ROOT/lib/wikiforme 以下にペーストします。

続いてパースを行うメソッドを適当なヘルパに記述します。ここでは posts_helper に記述したものとします。

def parse(str)
  WikiForme.process("#{RAILS_ROOT}/lib/wikiforme/simple.4me", :html, str)
end

あとは適当なビューからこのメソッドを呼び出します。下の例では Post モデルの body にパースする文章が入っているものとします。

<%= parse @post.body %>

これで @post.body がシンプルな Wiki フォーマットに変換されたはず。ちなみに変な構文を入れるとエラーになるようです。

詳しい使い方はまだ調べている最中ですが、とりあえず動かしたところまで。