YAMLについてもう少し調べてみた

以前PHPを使ってYAMLを扱う方法についてメモをしていましたが、もう少しYAMLについて調べてみました。

基本的な記述

配列とハッシュ

YAMLは配列かハッシュによってデータを表現することが出来ます。
頭に「-」を付けた場合は配列、「キー: 値」の様に「:」で区切った場合にハッシュとなります。

- foo
- bar
hoge: fuga  

階層化

半角スペースでインデントをすることで、配列・ハッシュを階層化することが出来ます。
また、インデントを行う際にタブ文字は使えません。

-
  - foo
  - bar
hoge:  
  - fuga
  - piyo

コメントアウト

前回も何も説明せずに使っていましたが、コメントアウトは「#」です。

「#」を付けた後ろを行末までコメントアウトします。範囲指定は無いようなので、複数行コメントアウト指定場合は何度も記述する必要があります。

- foo
- var
# ここはコメントアウト
hoge: fuga  

改行

YAMLの特性として改行すると次のデータになってしまうため、改行を行う時は下記の様に記述する必要があります。

foo: bar  
break : |  
  Lorem Ipsum is simply dummy text
  of the printing and typesetting industry.

特殊なモノとして、改行をスペースに、空白行があった場合は改行に変換する記述もあります。

break : >  
  Lorem Ipsum is simply dummy text
  of the printing and typesetting industry.

  Lorem Ipsum has been the industry's standard dummy text ever since the 1500s,...

インライン

全て改行をして記述するのではなく、一行にまとめて記述することも可能です。

normal :  
  - foo
  - bar
inline : [hoge, fuga]  

連想配列の場合は下記の通り。

-
  type : normal
  data : hash
- {type: inline, data: hash}

ちょっと応用的な記述

アンカーとエイリアス

「&」で印をつけて、「*」で読み込むことが出来ます。

- &mark
  - hoge
  - fuga
- *mark

…のはずなんですが、PHPのspycでは上手く動いていない様な気がします…。

参考