YAML は Docker Compose, Kubernetes, CI/CD パイプライン, Ansible のデフォルト設定フォーマットで, YAML フォーマッタが解決するのはこれらのファイルをもう一度読みやすくすることです. 任意の YAML ドキュメントを貼り付け, 2 つのモードのどちらかを選び, ツールはブラウザ内でドキュメント全体を一貫した間隔で再出力します. 何も保存され, アップロードもされず, パーサーとシリアライザはどちらもあなたのマシン上で動きます.
YAML を貼り付けてモードを選ぶ
ライブ再整形はありません. ボタンを押したときだけドキュメントが処理されます. フォーマットは既定のモードで, ドキュメントをブロックスタイル, つまり 1 行 1 キーのレイアウトで再構築します. ミニファイは別の目標を向いており, パーサーが読める最もコンパクトな表現を生成します. 小さなインデントセレクタでフォーマットは 2 スペースと 4 スペースを切り替えられます. ミニファイは常に 2 スペースなので, このセレクタはフォーマットモードでのみ表示されます.
フォーマットがすること: きれいな 1 つのブロックスタイル・ドキュメント
フォーマットはドキュメントのすべてのレベルをあなたが選んだインデントに揃えます. 入れ子になったマッピングとシーケンスは固定オフセットに整列し, 行末のスペースは消え, 1 レベルは常に 1 ステップのインデントになります. 長い値は決して折り返されません. 400 文字の値も 1 行のままで, 設定ファイルでは構造の可読性が行長より重要だからです.
ミニファイがすること: ブロックのトップレベルより下の flow スタイル
ミニファイはドキュメントを 1 行に圧縮しません. これは多くの人の予想を裏切ります. トップレベルはブロックスタイルのままですが, トップレベルのキーの下にある各値は flow 形式で書かれます. 文字列のリストは items: [a, b] のようになり, 入れ子のマッピングは a: {b: [1, 2]} のようになります. トップレベルのマップのリストは 1 行 1 つの flow マップになり, ダッシュと開き括弧で始まります. flow では誤読されかねない値, たとえば y という名のキーは, 意味を正確に保つためにクォートされます.
フォーマッタが捨て, 書き換えるもの
出力を diff する前に知っておくべきは 3 つのことです. コメントは捨てられます. パーサーはまずドキュメントをデータ構造に変換し, コメントはその工程を生き残れません. アンカーとエイリアスは解析時に理解されますが, シリアライザは参照を出力しないよう設定されており, すべてのエイリアスは指す値の完全なコピーとして戻ります. 数値も正規化されます. 3.0 は 3 に, 1e5 は 100000 に, 0x10 は 16 になり, 空の値, チルダ, null はどれも null と出力され, 空の文字列はクォート付きの空の文字列のままです.
キーの順序: 維持, 例外は 1 つ
フォーマッタはキーをソートしません. 文字列キーはドキュメント内の順序をそのまま保ち, zebra, ant, m の順に並んだファイルは同じ順で戻ってきます. ソートのように見える例外が 1 つあります. 整数のように見えるキー, たとえば 123 は, マッピングの先頭に移動します. これはフォーマッタが順序を選んだのではなく, 解析済みドキュメントを保持する JavaScript オブジェクトのプロパティ列挙の仕方で, 整数風のキーは常に先頭に来ます.
行番号と列番号付きエラーメッセージ
不正な YAML は曖昧な失敗を返しません. パーサーは行番号と列番号 (どちらも 1 始まり) で問題を報告し, 壊れた場所へ直接ジャンプできます. 重複キーも同じ方法で拒否され, コピーしたブロックがうっかり 2 回入ったときに役立ちます. 1 つだけ違う場合があります. 入力に 2 つ目のドキュメントマーカーがあることもエラーですが, そのメッセージには位置がなく, パーサーがストリームレベルで止まるためです. 何も貼り付けると, 専用のメッセージが表示されます.
入れ替え, クリア, 次のステップ
2 つの小さなコントロールがワークフローを締めます. 入れ替えボタンは出力があるときに表示され, 出力を入力へコピーして出力をクリアします. 段階的な修正が速くなります: フォーマット, 直したい値を見つける, 入れ替え, 編集, もう一度フォーマット. クリアは両側とエラー行を空にします. ページのデータは保存されないため, 機密の設定内容はブラウザの外へ出ません. データが JSON として始まる場合は, まず JSON フォーマッタを走らせてから, JSON/YAML 変換でそのまま変換できます. XML 設定は XML フォーマッタで同じ扱いを受け, マークアップファイルは HTML フォーマットの解説記事で, 保護スクリプトブロック付きの同じフォーマットとミニファイの仕組みを学べます.