Rubyで文書
RubyでDSLって話が、巷でようやく騒がれてきた。 なんかいいDSLないかなぁと考えていた時に、文章をRubyで書いたらどうなるかと思って こんな記法で書けるか試してみた。
title "てすと" ch "はじめに" do sec "なぜ世界はこうなったのか?" do p "世界が現在のようになったのは、人間が不完全である証拠である。" p "人間が#{ref "不完全", "http://hoge.com"}であることを受け入れない限り、世界に明日はない。" pre <<-END hoge hoge hoge END end sec "なにをすべきか?" do p "今迄の価値観をふりかえり、新たな価値観を創造すること以外に有効な方法はないのだ。" end end
文書構造はまぁいけそうなんだが、やはりインラインのマークアップが難しい。現状だとダブルクォート文字列の中にメソッドを展開する 方法でやってみたが、文字列の評価の時点でインライン展開されてしまうため、評価順がおかしくなる。上記の例で言うと、pの中にある refが先に評価されてしまう。シングルクォート文字列からダブルクォート文字列に変換ってできるんだっけ?
あとは、やはり文字列のためのクォートは面倒だ。コードを書くように文章も書けたら面白いんだけどね。リファクタリングもできるしね。
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)