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

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

基本的な記述

配列とハッシュ

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

1
2
3
- foo
- bar
hoge: fuga

階層化

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

1
2
3
4
5
6
-
- foo
- bar
hoge:
- fuga
- piyo

コメントアウト

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

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

1
2
3
4
- foo
- var
# ここはコメントアウト
hoge: fuga

改行

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

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

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

1
2
3
4
5
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,...

インライン

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

1
2
3
4
normal :
- foo
- bar
inline : [hoge, fuga]

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

1
2
3
4
-
type : normal
data : hash
- {type: inline, data: hash}

ちょっと応用的な記述

アンカーとエイリアス

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

1
2
3
4
- &mark
- hoge
- fuga
- *mark

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

参考

Author: SUSH
Link: http://blog.sus-happy.net/yaml/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.