YAMLの書き方にブロックスカラーというのがある。
|
(パイプ記号、縦棒記号) または >
(大なり記号) に、 +
や -
を組み合わせた、複数行に渡った値の書き方だ。1
毎回書き方のサンプルをGoogle先生に聞いているような気がするので、ここにメモります。2
|
|
は複数行を改行コードで繋げる。
単純な複数行
- |
hoge
fuga
# ["hoge\nfuga\n"]
途中のインデント(段下げ)のスペースは反映される
- |
hoge
fuga
boo
poo
piyo
piyo
# ["hoge\nfuga\n boo\n poo\npiyo\npiyo\n"]
ブロックの最後の複数改行は1つの改行にまとめられる
- |
hoge
fuga
# ["hoge\nfuga\n"]
|+
単純な複数行は"|"と同じ
- |+
hoge
fuga
# ["hoge\nfuga\n"]
ブロックの最後の複数改行は保持される
- |+
hoge
fuga
# ["hoge\nfuga\n\n"]
|-
単純な複数行ではブロック最後の改行は削除される
- |-
hoge
fuga
# ["hoge\nfuga"]
ブロックの最後に複数改行がある場合も全て削除される
- |-
hoge
fuga
# ["hoge\nfuga"]
>
>
は改行をスペースに変換する。
単純な複数行では改行はスペースに置き換わり、ブロックの最後の改行は残る
- >
hoge
fuga
# ["hoge fuga\n"]
ただしインデント(段下げ)が変わると改行で分けられ、段下げ分のスペースも活かされる
- >
hoge
fuga
boo
poo
piyo
piyo
# ["hoge fuga\n boo\n poo\npiyo piyo\n"]
ブロックの最後の複数改行は1つの改行にまとめられる
- >
hoge
fuga
# ["hoge fuga\n"]
>+
単純な複数行は">"と同じ
- >+
hoge
fuga
# ["hoge fuga\n"]
ブロックの最後の複数改行は保持される
- >+
hoge
fuga
# ["hoge fuga\n\n"]
>-
単純な複数行では改行はスペースに置き換わり、ブロック最後の改行は削除される
- >-
hoge
fuga
# ["hoge fuga"]
改行はスペースに置き換わり、ブロックの最後の複数改行も削除される
- >-
hoge
fuga
# ["hoge fuga"]
その他
YAMLのブロックスカラーの動作確認をできるページがあるようなので共有です。
-
|
と>
をブロックスタイルインジケータ(Block Style Indicator)、+
と-
をブロックチョンピングインジケータ(Block Chomping Indicator)というらしい。日本語だとなんだろう、ブロック型指定子、ブロック末改行指定子、といったところか。 ↩ -
パーサにはRubyのYAMLライブラリを使いました。 ↩