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 フォーマットに変換されたはず。ちなみに変な構文を入れるとエラーになるようです。
詳しい使い方はまだ調べている最中ですが、とりあえず動かしたところまで。