これは備忘録。
こんなことをやりたかった。
- テキストファイルにテストデータを書いておき、テストアプリに流し込む。
- 1ファイルに1テストデータ。
- テストデータは非構造的。
- テストデータだけでなく、ちょっとした設定情報もテキストファイルに含めたい。
- ついでにコメントも書けるようにしたい。
テストアプリの実装と実行はWindows上で行っているので、最初はINIファイルを使うことを考えた。しかし非構造的なテストデータの扱いに困りそうだし、将来的にUnix環境に移植する可能性を視野にいれるとINIファイルの使用は微妙だったので、10秒で却下。別のフォーマットを探してみることに。
少し悩んでから『The Art of UNIX Programming』を眺めて、RFC 822風のオレオレフォーマットをこしらえることにした。で、何しろテスト用に自分で作って自分しか使わないので、フォーマットをガチガチに固めてしまうことにした。この辺り、どうしてもパーサをC89の範囲で書かないとマズイ事情があったことも影響している。
大体こんな感じ。
Config-Name: Config-Value # Comment Config-Name: Config-Value-First;Config-Value-Rest Config-Name: Config-Value Test-Data... Test-Data...
- ファイル先頭から最初の空行までに設定情報を書く。
- 設定情報(Config-Name: Config-Value)は以下のようなフォーマットで書く。
/^[-a-zA-Z0-9]+: ([-a-zA-Z0-9_]+)(;\1)*[ \t]*$/