😕

YAMLを覚えたい

2022/10/24に公開

yaml,ymlは、結構よく使われる記述方式です。ちゃんと覚えときたいなぁと思って自分用にメモ書きです。

https://ja.wikipedia.org/wiki/YAML

基本

リスト

よくある配列は-を利用します。

# ブロック形式
- 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