YAMLでは、複数行の文章やコードを書く場面がたくさんあります。例えば、以下のような場面です。
- 長文の説明を書きたいとき
- SQL / HTML / Shell Script をそのまま記述したいとき
- 改行をそのまま残したい / 消したいとき
- 改行をスペースに変換して1行にまとめたいとき
そんなときに使うのが|、|-、|+、>、>-、>+の6種類の「ブロックスカラー」です。
この記事では、|、|-、|+、>、>-、>+の特徴と出力例をわかりやすく解説します。
|(改行をそのまま保持する)
複数行テキストの改行をそのまま残したいときに使います。コードや説明文を書きたいときに便利です。
foo: |
line1
line2上記Yamlはこう解釈されます。
{ "foo": "line1\nline2\n" }|-(末尾改行を削除)
|と同じく改行を保持しますが、末尾の改行だけ削除します。
foo: |-
line1
line2上記Yamlはこう解釈されます。
{ "foo": "line1\nline2" }|+(空行をすべて保持)
|と同じだが、空行を含めてすべて保持します。以下のサンプルコードの場合、line2の後に空行が2つありますが、その空行を保持しています。
foo: |+
line1
line2
bar: line3上記Yamlはこう解釈されます。
{ "foo": "line1\nline2\n\n\n", "bar": "line3" }>(改行をスペースに変換する)
行末の改行がスペースに変換されて1行に折り畳まれるのが特徴です。通常の文章をYAMLに書きたいときに便利です。
foo: >
line1
line2上記Yamlはこう解釈されます。
{ "foo": "line1 line2\n" }>-(末尾改行を削除)
>と同じく改行をスペースに変換しますが、末尾の改行だけ削除します。
foo: >-
line1
line2上記Yamlはこう解釈されます。
{ "foo": "line1 line2" }>+(末尾改行を残す)
>と同じく改行をスペースに変換しますが、空行を含めてすべて保持します。以下のサンプルコードの場合、line2の後に空行が2つありますが、その空行を保持しています。
foo: >+
line1
line2
bar: line3上記Yamlはこう解釈されます。
{ "foo": "line1 line2\n\n\n", "bar": "line3" }|、|-、|+、>、>-、>+のまとめ
|、|-、|+、>、>-、>+の6種類の「ブロックスカラー」の違いを一目で理解できるように表で整理しました。
foo: <記号>
line1
line2
bar: line3| 記号 | 行末の改行 | 末尾 改行 | 空行 | 出力 |
| なし | スペースに変換 | 削除 | 削除 | { "foo": "line1 line2", "bar": "line3" } |
| | 改行 | 保持 | 削除 | { "foo": "line1\nline2\n", "bar": "line3" } |
|- | 改行 | 削除 | 削除 | { "foo": "line1\nline2", "bar": "line3" } |
|+ | 改行 | 保持 | 保持 | { "foo": "line1\nline2\n\n\n", "bar": "line3" } |
> | スペースに変換 | 保持 | 削除 | { "foo": "line1 line2\n", "bar": "line3" } |
>- | スペースに変換 | 削除 | 削除 | { "foo": "line1 line2", "bar": "line3" } |
>+ | スペースに変換 | 保持 | 保持 | { "foo": "line1 line2\n\n\n", "bar": "line3" } |
- 先頭の記号は、「行末の改行」の扱いを決めます。
|の場合:改行をそのまま保持>の場合:改行をスペースに変換する
- 2つめの記号は、「末尾改行」と「末尾改行以降の空行」の扱いを決めます。
- 未指定の場合:「末尾改行:保持」「末尾改行以降の空行:削除」
-の場合:「末尾改行:削除」「末尾改行以降の空行:削除」+の場合:「末尾改行:保持」「末尾改行以降の空行:保持」