yaml
The Official YAML Web Site
YAML - Wikipedia
規格書
https://yaml.org/spec/
/mrsekut-p/yaml
yamlが生まれた背景?
「YAMLの本来の使い方」を仕様から読み取ってみる | Wantedly Engineer Blog
JSONとは違い、Marshallingを表現するためにある
規格書のchapter-3-processes-and-models | YAML Ain’t Markup Language (YAML™) revision 1.2.2に対応してるかなtakker.icon
JSONのスーパーセットになっているのはたまたま
後日JSONとの類似性に開発者が気づき、yaml 1.2でスーパーセットになるよう規格を変更したhttps://yaml.org/spec/1.2.2/#fnref:1-1-spec
JSONと似た位置づけでyamlを使いたいときに抑えておく記法
flow styleは一旦無視する
空白と改行、インデント
yamlではPythonのように、インデントが文法上の意味を持つ
タブは不可。スペースのみ https://yaml.org/spec/1.2.2/#61-indentation-spaces
ルールはhttps://yaml.org/spec/1.2.2/#indentation-spaces を参照
規格書からサンプルコピペ
sequence of scalars
値の配列
code:2.1.yaml
- Mark McGwire
- Sammy Sosa
- Ken Griffey
code:2.1.json
"Mark McGwire", "Sammy Sosa", "Ken Griffey"
mapping scalars to scalars
値から値へのobject
code:2.2.yaml
r: 65 # Home runs
avg: 0.278 # Batting average
rbi: 147 # Runs Batted In
code:2.2.json
{
"r": 65,
"avg": 0.278,
"rbi": 147
}
mapping scalars to sequences
値から配列へのobject
code:2.3.yaml
american:
- Boston Red Sox
- Detroit Tigers
- New York Yankees
national:
- New York Mets
- Chicago Cubs
- Atlanta Braves
code:2.3.json
{
"american": "Boston Red Sox", "Detroit Tigers", "New York Yankees",
"national": "New York Mets", "Chicago Cubs", "Atlanta Braves"
}
sequence of mappings
objectの配列
code:2.4.yaml
-
name: Mark McGwire
hr: 65
avg: 0.278
-
name: Sammy Sosa
hr: 63
avg: 0.288
code:2.4.json
[
{
"name": "Mark McGwire",
"hr": 65,
"avg": 0.278
},
{
"name": "Sammy Sosa",
"hr": 63,
"avg": 0.288
}
]
一つのファイルに複数のyaml documentを埋め込める
---と...で囲んで、一つのyaml documentを表す
https://yaml.org/spec/1.2.2/#example-play-by-play-feed-from-a-game
code:2.8.yaml
---
time: 20:03:20
player: Sammy Sosa
action: strike (miss)
...
---
time: 20:03:47
player: Sammy Sosa
action: grand slam
...
省略のルールは未調査
scalar content
yamlにおけるprimitiveは値
厳密な型は存在しない?
いくつか書き方がある
yaml block scalar styleshttps://yaml.org/spec/1.2.2/#81-block-scalar-styles
|yaml literal stylehttps://yaml.org/spec/1.2.2/#literal-style
いわゆるraw文字列
先頭に|をつける
ただしindentとみなされた空白は削られる
>yaml folded stylehttps://yaml.org/spec/1.2.2/#folded-style
先頭に>をつける
\nが空白として処理される
空行もしくはindentが\n扱いとなる
|,>の次に書いた文字は引数扱いになり、scalarには含まれない
次の行からscalarとして認識される
yaml flow scalar styleshttps://yaml.org/spec/1.2.2/#flow-scalar-styles
他の言語でもおなじみのやつ
改行はすべて空白として処理される
https://yaml.org/spec/1.2.2/#example-multi-line-flow-scalars
code:2.18.yaml
plain:
This unquoted scalar
spans many lines.
quoted: "So does this
quoted scalar.\n"
yaml plain stylehttps://yaml.org/spec/1.2.2/#plain-style
""や''で囲むことなく、任意のscalarsを記述できる
yaml double-quoted stylehttps://yaml.org/spec/1.2.2/#double-quoted-style
""で囲むと、escape sequenceを書ける
これ以外のstyleではescape sequenceを記述できないhttps://yaml.org/spec/1.2.2/#57-escaped-characters
中で"と書きたいときは、\"と書く
yaml single-quoted stylehttps://yaml.org/spec/1.2.2/#single-quoted-style
''で囲むスタイル
"をそのまま書ける
中で'と書きたいときは、''と書く
ルールが複雑な印象を持ったtakker.icon
tags
型のこと?propsのこと?
!で型を明記できる?
comment
#で1行コメントを表す
JSONCの//相当
文字列
改行を含むときは|-を使う
改行を空白に変換したいときは>-を使う
YAMLで複数行テキストを書きたい時のあれこれ #Heredoc - Qiita
https://yaml.org/spec/1.2-old/spec.html#id2760844
#2024-08-22 12:41:09
#2023-02-03 14:19:13