🕌

YAMLの複数行文字列値の書き方

2023/01/18に公開

毎回調べているのでまとめてみました。

YAMLの複数行文字列値の書き方だいたい知っている人向け

そもそも書き方わからんという人は後述の内容を確認してください。

  • 記号: 最初の行に書いた値
  • 改行: 2 行目以降の文字列の末尾改行が何の文字に変換されるか
  • 末尾: 最終行に追加される文字
記号 改行 末尾
なし 空白 なし
| 改行 改行
|- 改行 なし
> 空白 改行
>- 空白 なし

+ 記号は末尾の空行がそのまま改行になります。

記号 改行
|+ 改行
>+ 空白

YAMLの複数行文字列値の説明

YAML で複数行の文字列値を記述する場合、以下のような記述ができます。

a: 
  aaa
  bbb
  ccc

b: |
  aaa
  bbb
  ccc
c: |-
  aaa
  bbb
  ccc
d: |+
  aaa
  bbb
  ccc

e: >
  aaa
  bbb
  ccc
f: >-
  aaa
  bbb
  ccc
g: >+
  aaa
  bbb
  ccc

これらは単一行文字列値にすると以下のような値になります。

a: "aaa bbb ccc"
b: "aaa\nbbb\nccc\n"
c: "aaa\nbbb\nccc"
d: "aaa\nbbb\nccc\n\n"
e: "aaa bbb ccc\n"
f: "aaa bbb ccc"
g: "aaa bbb ccc\n\n"

まとめ

  • 最初の行の先頭の記号
    • | の場合は次行以降の改行は改行の値となります。
    • > の場合は次行以降の改行は空白の値となります。
  • 最初の行の 2 つめの記号
    • 未指定の場合は最終行の後に改行が挿入されます。
    • - の場合は最終行の後には何も挿入されません。
    • + の場合は最終行以降の空行の数 +1 だけ改行が挿入されます。

参考ページ

https://magazine.rubyist.net/articles/0009/0009-YAML.html

Discussion