yaml

ここでは,yaml の仕様を調査する.

機能ごとの書き方

配列

配列は行頭に - (ハイフン) を付けて表現する.

例1. 単純な配列
input

- a - b - c

output

[a, b, c]

例2. ネストした配列
input

- a1 - - b1 - b2 - - c1 - c2 - a2

output

[a1, [b1, b2, [c1, c2]], a2]

例3. 解釈できない記法(エラー).(この場合,Ruby の処理系だと文字列として解釈されるらしい)
input

- a1 - b1 - b2 - c1 - c2 - a2

output

["a1 - b1 - b2 - c1 - c2", a2]

ハッシュテーブル(辞書)

例1. 単純なハッシュテーブル
input

key1: value1 key2: value2

output

{key1: value1, key2: value2}

例2. ネストしたハッシュテーブル
input

keyA1: keyB1: valueB1 keyB2: valueB2 keyA2: valueA2

output

{keyA1: {keyB1: valueB1, keyB2: valueB2}, keyA2: valueA2}

例3. 解釈できない記法(エラー)
input

keyA1: valueA1 keyB1: valueB1 keyB2: valueB2 keyA2: valueA2

output

配列にハッシュを埋め込む

input

- user_name: abc email: abc@example.mail.com - user_name: def email: def@example.mail.com

output

[{user_name: abc, email: abc@example.mail.com}, {user_name: def, def@example.mail.com}]

ハッシュに配列を埋め込む

input

coffee: - water - coffee beans cafe latte: - water - coffee beans - milk

output

[{coffee: [water, coffee beans], cafe latte: [water, coffee beans, milk]}]

ハッシュと配列を混ぜた応用例

input

user: - name: abc - abc@example.mail.com - user_name: def email: def@example.mail.com

output

[{user_name: abc, email: abc@example.mail.com}, {user_name: def, def@example.mail.com}]

マルチライン

改行を伴う文字列を一つのデータとして表す

input

data: | A '|' represent a string containing line breaks as one piece of data.

output

改行をスペースに,空行を改行として表現する

input

data: > Begin first paragraph ~~~. A '>' represent newlines as spaces and empty lines as newlines. Begin second paragraph ~~~.

output

アンカーとエイリアス

コメント

コメントは # で表現する.# 以降の文字列をコメントとして扱う.

input

# commnet

output

範囲コメントを表現する方法はない.ただし,「...」だけの行を,yamlファイルの終端 (EOF) としてをで表現することができる.このため,「...」だけの行があると,それ以降の行は読み込まれない.

input

- a - b - c ... - d # 読み込まれない

output

[a, b, c]

References