😕
YAMLを覚えたい
yaml,ymlは、結構よく使われる記述方式です。ちゃんと覚えときたいなぁと思って自分用にメモ書きです。
基本
リスト
よくある配列は-
を利用します。
# ブロック形式
- aaa
- bbb
- ccc
-
ddd # これでも[ddd]として扱われるよ。明示的にリストを定義したいときとか
# インライン形式
[aaa, bbb, ccc, ddd]
連想配列
# ブロック形式
name: aaa
age: 100
# インライン形式
{name: aaa, age: 100}
コメント
先程から書いているが、
コメントは#
をつけるとコメントになる
組み合わせ
リストにハッシュ
- {name: aaa, age: 100}
- name: bbb
age: 10
# [{"name": "aaa", "age": 100}, {"name": "bbb", "age": 10}]
-
name: aaa
age: 100
-
name: bbb
age: 10
# 上記のように書けばよりアイテムのリストのように書ける
ハッシュにリスト
men: [aaa, bbb]
women:
- ccc
- ddd
# {"men": ["aaa", "bbb"], "women": ["ccc", "ddd"]}
インデントは基本的には2つ。まあインデントは2つ以上あっても大丈夫。たまにこれでわからなくなったりする。
なぜかこの場合、インデントは0でも問題なく認識されたりする、意味がわからん
women:
- ccc
- ddd
# {"women": ["ccc", "ddd"]}
women:
- ccc
- ddd
# {"women": ["ccc", "ddd"]}
ハッシュのハッシュ
ハッシュから始まった場合は、ハッシュかリスト、またはテキストが来るかもしれない。
foo:
bar: baz
# {"foo" : {"bar": "baz"}}
aaa:
bbb:
ccc: ddd
# {"aaa": {"bbb": {"ccc": "ddd"}}}
リストのリスト
正直使うときは少なそうだが。valueの無いリストを最初に書いて入れ子にする
-
- aaa
- bbb
-
-
- ccc
# [["aaa"], "bbb", [["ccc"]]]
テキスト
複数行テキスト
いくつか書き方がある。
text: |
aaaa
bbbb
# {"text": "aaaa\nbbbb\n"}
text: |-
aaaa
bbbb
# {"text": "aaaa\nbbbb"}
# -をつければ最後の改行は無くなる
text: |+
aaaa
bbbb
foo: ccc
# {"text": "aaaa\nbbbb\n\n", "foo": "ccc"}
# +をつけることで改行をそのまま維持する
text: >
aaaa
bbbb
# {"text": "aaaa bbbb\n"}
# >は改行がスペースになる。-と+は同じ意味。
text: "\
aaa\
bbb\
"
# {"text": "aaabbb"}
# マルチバイト文字もいけるパターン。
たくさんありますが、実際に使うときってコマンドを叩いたりするときだと思うので|
や>-
や""
が使われやすそうな感じします。
Discussion