YAML
ymlを継承した時などparseしてくれる。
参考URL
ymlデータ型
YAMLでは、以下のデータ型を表現できる。
- スカラー値 (Scalar value): 文字列、整数、浮動小数点数、真偽値、null
- シーケンス (Sequence): 配列、リスト
- マッピング (Mapping): オブジェクト、連想配列、ハッシュ
また、YAMLは自己記述型言語であり、自由度が高いため、オリジナルのデータ型を作成することもできる。
ただし、YAMLの処理系がそのデータ型を解釈できるように、対応する処理を記述する必要があります。
Online YAML Parser
ymlから以下にparseできる
yml→json yml→python
jsonからymlへ変更する 参考URL
基本的な書き方
コメント
行頭に #
はコメント
リスト(配列)
- ハイフン
-
は配列の開始 - 同一インデントは同じ配列に入る。
ハッシュ(連想配列)
- キー名はスペースを含むことができる
- キーはコロン「:」の後にスペースか、改行が必要です。
- インデントが同じ場合は「兄弟」、異なる場合は「親子」になります。
記述
リストをShort syntax オブジェクトをLong syntax と呼ぶのは結構慣例
Short syntax(リスト)
depends_on:
- service_a
Long syntax(オブジェクト)
depends_on:
service_a:
condition: service_started
これ
継承
JSONと違ってYAMLは継承ができる(つまりDRYに書ける)
&(anchor)と呼ぶ。これを使用しextendsできるようにする
# 参照できるようになる
foo: &foo
a: 1
b: 2
c: 3
extend
<<
はextendの意味
anchorを継承したい時は <<: *アンカー名
のようにする。
※なお後述した重複プロパティは上書 きされる。この例ではcプロパティを上書きしている。
foo: &foo
a: 1
b: 2
c: 3
bar:
<<: *foo
c: "changed"
d: 4
JSON変換するとこうなる
{
"foo": {
"a": 1,
"c": 3,
"b": 2
},
"bar": {
"a": 1,
"c": "changed",
"b": 2,
"d": 4
}
}
extend inline
オブジェクトの中の単一のプロパティだけ継承元にしたいときは
<<: &アンカー名
とする。
ymlフロントマター
YAMLフロントマター(Front Matter)は、マークダウンや他のテキストファイルの最初の部分に配置される、YAMLのブロック。
この部分はファイルのメタデータや設定を持つことができる。
フロントマターは3つのハイフン (---
) で開始され、3つのハイフンで閉じられます。その間にYAML形式でのキーと値のペアが含まれる。
例:
---
title: "My Blog Post"
date: 2022-01-01
author: "John Doe"
---
This is the content of my blog post.
この例では、マークダウンファイルに3つのメタデータ(title
, date
, author
)が追加されています。
とくに、静的サイトジェネレーター(例: Jekyll, Hugo) でよく使用されます。これらのツールはフロントマターの情報を使用して、ページや投稿の属性を定義し、適切にサイトを生成します。
GitHubのIssueやPull Requestのテンプレートにおいて、YAMLフロントマターはテンプレートの名前や説明、デフォルトのラベルなど、テンプレートに関するメタ情報を提供するのに使用されます。