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では上手く動いていない様な気がします…。