YAML覚書
- YAML(ヤムル)とは
- 構造化されたデータの表記仕様、xmlに比べてわかりやすい、書きやすいが実現されている
- データ構造
- インデントを使い階層構造を表現する。ただし、インデントにはタブが使えずスペースのみが使える。スペース2個単位でインデントすることが多い
表記方法
シーケンス(配列)
行頭に - をつけると配列を表現
- alpha
- bravo
- charlie
解釈→ ['alpha', 'bravo', 'charlie']
半角スペースでのネスト表記
- alpha
-
- bravo1
- bravo2
-
- bravo2_1
- bravo2_2
- charlie
解釈→ ['alpha', 'bravo1', 'brabo2', ['brabo2_1', 'brabo2_2'], 'charlie']
箇条書き表記はできない
- alpha
- alpha1
- alpha2
- alpha3
解釈→ ['alpha - alpha1 - alpha2 - alpha3']
マッピング(ハッシュ)
ハッシュは キー: 値 で表す。:の後に半角スペースを1つ以上入れること
a: alpha
b: bravo
c: charlie
解釈→ {'a' => 'alpha', 'b' => 'bravo', 'c' => 'charlie'}
ネスト表記
a: alpha
b:
b1: bravo1
b2: bravo2
c: charlie
解釈
{
'a' => 'alpha',
'b' => {
'b1' => 'bravo1',
'b2' => 'bravo2'
},
'c' => 'charlie'
}
解釈できない
b: bravo
b1: bravo1
b2: bravo2
配列とハッシュ
- name: Hoge
email: hoge@hoge.com
- name: Foo
email: foo@foo.com
解釈
[
{
name: Hoge
email: hoge@hoge.com
},
{
name: Foo
email: foo@foo.com
}
]
データ型
! を使うとデータの型を明示的に指定する
- !str 123
- !pairs
- A: alpha
- B: bravo
解釈
['123', [['A' => 'alpha'], ['B' => 'bravo']]]
複数行の文字列
各行の改行を保存
text: |
alpha
bravo
charlie
{"text" => "alpha\nbrabo\ncharlie\n"}
インデント幅指定
- |2
alpha
bravo
charlie
[" alpha\n", " brabo\n", " charlie\n"]