Objective-CでYAMLをパースする

ZippedImages Etceteraはメタデータの書式にYAMLを使っています。
XMLは人間による読み書きには適さないとかいった理由はどうでも良いんですが、実装にあたってCocoaから使えるパーサが必要になりました。

残念ながら良さそうな好みにあったObjective-C用のライブラリが無かったので、C言語用のlibYAMLを使いました。
libYAMLはXMLで言う所のSAXのような逐次処理型なのですが、空間も時間も切迫しない用途なので、DOM的に使えるラッパークラスを書きました。

githubに、ビルド方法や使い方も含めて公開しました。

ZippedImages Etceteraに必要な分しか実装していないので、論理型とか、明示型指定なんかは未サポートです。サポートするプリミティブ型の追加は簡単だと思いますけど。
配列とか辞書とか構造体の方は出来ています。
あと、エミッタ側は作ってません。

libYAMLはパースまではやってくれるんですが、型判定なんかは使う側に任されています。
まあ、バインドする言語で型に差異があるので仕方無いような、もっとやりようがあるような。

YAMLのライブラリというとsyckが有名ですが、ソースをみたらyaccを使っていたので敬遠してみました。ビルドで力尽きそうだったので……

カテゴリー: Develop   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">