YAMLのファイル構造の構成要素
YAMLの簡単な例を見たところで、次はYAMLのファイル構造でよく使用する構成要素として、ハッシュ、リスト、ブロックリテラルの3つを見ていきましょう。
ハッシュ
インデントした子で、キーと値をコロン(:
)で区切って表記すると、ハッシュを作成できます。次に例を示します。
JFrame: defaultCloseOperation: JFrame.EXIT_ON_CLOSE title: Test Frame width: 800 height: 400
また、中かっこ({}
)を使用したJSON風の表記によるハッシュ作成も可能です。キーと値の各ペアはカンマで区切ります。
JFrame: {defaultCloseOperation: JFrame.EXIT_ON_CLOSE, title: Test, Frame, width: 800, height: 400}
リスト
YAMLの基礎となる機能です。リストを作成するには、リストの各要素の先頭にマイナス記号(-)を付け、スペースのインデントと組み合わせて記述します。
components: - JTextArea - JButton
また、角かっこ([]
)を使用したJSON風の表記によるリスト作成も可能です。
components: [JTextArea, JButton]
ブロックリテラル
YAMLの特徴がキラリと光る機能です。XMLや、その中でCDATAを使ったときの見にくい表記とは一線を画しています。ブロックリテラルでは、YAMLファイルの中に大量のテキストを簡単に記述できます。縦棒(|
)のディレクティブを使った場合、テキスト内の改行は保持されます。
text: | This is a really long text that spans multiple lines (but preserves new lines). It does not need to be escaped with special brackets, CDATA tags, or anything like that
YAMLプロセッサは、最初の行の先頭文字から後をテキストとみなし(その前のインデントのスペースは無視)、テキスト内の改行をすべて保持します。
一方、大なり記号(>
)のディレクティブを使った場合、改行はすべて無視され、1行の長いテキストとみなされます。
text: > This is a really long text that spans multiple lines (but preserves new lines). It does not need to be escaped with special brackets, CDATA tags, or anything like that
この2つの他に、縦棒とプラス記号(|+
)のディレクティブ(先行するスペースは削除し、改行と後続のスペースは保持)や、大なり記号とマイナス記号(>-
)のディレクティブ(すべてのスペースを削除)などがあります。