Yet-Another YAML parser for PHP

php_yaml-0.0.1devel.tgz
Yet-Another っていうか LibYAML のラッパに過ぎないわけですが。
しかも emitter は未実装で、parser も基本型のみで、複合キーやユーザ定義タグにも非対応。
さらに対応している libyaml バージョン 0.0.1 と svn ではずいぶん中身が変わっていて、将来は全面的な書き換えが必要になるかもしれないという不安要素もあります。
それでも libyaml の出来が良いおかげで、YAML 公式サイトからコピペしたサンプルデータ examples/example[01-28].yaml 程度の簡単な構造なら、(複合キーの example11 を除いて) 期待通りにパースできているようです。日付型が文字列のままという点も含めて。


インストール方法はいつもの通りですが、libyaml が /usr /usr/local 以外にインストールされているときは ./configure --with-yaml=/path/to/yaml-install-dir としてください。


いまのところ実装している関数は 3つあり、いずれも YAML をパースして多次元配列として返すものです。
返り値の第一階層は YAML の各ドキュメントで、その配下に各ノードが収められています。

yam_parse(strng $input[, int $pos[, int &$ndocs]])
YAML データ文字列をパース
yam_parse_file(strng $filename[, int $pos[, int &$ndocs]])
ローカルにある YAML ファイルをパース
yam_parse_url(strng $url[, int $pos[, int &$ndocs]])
URL で指定された YAML ストリームをパース。対応する URL スキームは利用可能な PHP のストリームラッパによる


5/16 追記:
ちょっとだけ更新。
php_yaml-0.0.1devel2.tgz
第二引数で取得する YAML ドキュメントのオフセットを指定できるようにしました。最初のドキュメントだけが必要ときは 0 を指定します。負の数が与えられた場合は、第二引数が指定されなかった場合同様にすべてのドキュメントを返します。
第三引数が与えられた場合、総ドキュメント数が代入されるようにしました。