階層を持つ設定ファイルを扱いたいけど、パースしたりするのはメンドイ。 そんなとき Ruby だったら簡単に DSL で作れる。 例えばアニメーションデータみたいなの
anim("test") { |
こんな感じの設定ファイルだとして、読み込むためのルーチンはこんな感じ:
$Temp = [] |
これだけで
parse_anim(File.read("test.anm")) |
てな感じで読み込めて、あとは好きなように加工できる。 設定ファイルで文字列をクォーテーションでくくらないといけないのがアレだけど、それ以外は相当シンプルでよい DSL だと思う。 プログラム書くのも超簡単だし。 実際にはクラスにするのがいいかな。
Rubyは
- 関数の括弧が省略できる
- 関数の後ろに中括弧 { … } で囲ってブロックを渡せる
- 行末にセミコロンとかをつけなくていい
というところがいいね。