YAML 1.2 メモ (6) ブロック・シーケンス

ブロック・シーケンスの始まりを示すインジケータはハイフンです。ベア・ドキュメントでは先頭行にいきなりインジケータを置くことができます。それ以外の場合、インジケータの前で改行し、行頭とインジケータの間にインデント・スペースだけを置くことができます。スペースだけで、タブも置けません。ブロック・シーケンス全体にタグまたはアンカー・プロパティをつけるときも、プロパティの後で改行してからインデント・スペースを置き、インジケータを置きます。

- ベア・ドキュメントでは、いきなり先頭行にインジケータを置くことができます。
...
!!seq
- ただし、ベア・ドキュメントであっても、タグ・プロパティかアンカーを
 ブロック・シーケンスにつけるときは、インジケータのある行に改行が必要です。
---
- 明示ドキュメントでは、プロパティをつけないときでも、必ず改行が必要です。
--- !!seq &anchor
- シーケンス自身にプロパティをつけるときは、やはり改行してからインジケータを置きます。
...
!!seq - これはエラーになります。
--- - これもエラーになります。
--- !!seq - これもエラーになります。
!!seq - これもエラーになります。

同じレベルのシーケンスの各エントリは、すべて同じインデント・レベルにしなければなりません。ここで、シーケンスのインデント・レベルは、行頭からのスペースの個数で決まります。シーケンス・エントリのインデント・レベルは、フロー、リテラル入れ子シーケンスで異なります。

  - このシーケンスのインデント・レベルは 2
   シーケンス・エントリがフローの場合、エントリのインデント・レベルはシーケンス足す 1 で、この場合は 3 です。
  -
    - 入れ子のシーケンスのインデント・レベルも行頭からのスペースの個数で決まるので 4
    - 同じインデント・レベル 4 なので、これは入れ子のシーケンスの2番目のエントリになります。
  -
   またもインデント・レベルが 2 なので、これはルートのシーケンスの 3 番目のエントリです。
  - シーケンス・エントリはインジケータ直後スペースの後ろから始まるので、フローの前には改行は不要です。
    このようにインジケータと同じ行からエントリのコンテンツを開始してもかまいません。
  - |
   シーケンス・エントリのインデント・レベルは、ブロック・リテラルとフォールデッドでは
   シーケンス自身のインデント・レベルと同じです。つまり 2 です。

同じ行に入れ子シーケンスを入れることができ、コンパクト形式と呼びます。

  -   -
       コンパクト形式の入れ子シーケンスの最初のエントリです。
       コンパクト形式のインデント・レベルは、親シーケンスのインジケータを含めて
       求めます。この場合は、2 + 1 + 3 = 6 です。
       2 は親シーケンスのインデント・レベルで、1 は親シーケンスのインジケータ分、
       3 は親のインジケータからコンパクト・シーケンスのインジケータまでのスペースの分。
  - - コンパクト形式でも、シーケンス・エントリはインジケータ直後スペースの後ろから
      始まります。
    - コンパクト形式は、ハンギング・インデントします。