YAMLからTOML形式への変換 — Numio
1 つの YAML ドキュメントを TOML に変換します。ネストしたマッピングは [table.sub] セクション、マッピングのリストは [[array of tables]] になり、値が null(~)のキーは削除されます。
プロジェクトが pyproject.toml、Cargo、Hugo、Netlify の TOML 設定に移行する際に、YAML の設定を TOML に書き換える。
YAML
TOML
こんなときに使えます
- プロジェクトが pyproject.toml、Cargo、Hugo、Netlify の TOML 設定に移行する際に、YAML の設定を TOML に書き換える。
- 設定フォーマットを決める前に、ネストした YAML の構造が TOML のテーブルではどうなるかを確認する。
使い方
- トップレベルがマッピングの YAML ドキュメントを 1 つ、左側のエディターに貼り付けるか、ファイル読み込みボタンで UTF-8 のファイルを開きます。
- YAML のエラー(インデント、複数ドキュメント、トップレベルのリスト)が表示されたら修正します。
- TOML の日付、null、リストを確認してからコピーします。
YAML
# docker-compose style
version: "3.9"
services:
web:
image: nginx:1.27
ports:
- "8080:80"
environment:
DEBUG: false
WORKERS: 4
db:
image: postgres:16TOML
version = "3.9" [services.web] image = "nginx:1.27" ports = [ "8080:80" ] [services.web.environment] DEBUG = false WORKERS = 4 [services.db] image = "postgres:16"
仕様と制限
YAML は YAML 1.2 として読み込まれます。yes は文字列 "yes" のまま、0o17 は 15 になり、2024-01-05 のようなクォートなしの日付は TOML の日付ではなく文字列になります。
コメントとアンカーはそのままの形では保持されません。エイリアス(*name)と <<: *anchor のマージキーは、参照先の値に展開されます。
受け付けるドキュメントは 1 つだけで、--- 区切りを含む入力は複数ドキュメントのエラーになります。トップレベルがリストの場合や、マッピングと単純な値が混在するリストは、説明付きで拒否されます。
ブラウザ内で動作します(yaml + @iarna/toml)。[services.web.environment] のようなサブテーブルは 2 スペースでインデントされますが、TOML はこのインデントを無視します。
FAQ
docker-compose.yml を TOML に変換できますか?
例のように構造は変換できますが、Docker Compose が読むのは YAML だけです。データの確認や再利用に使い、Compose ファイルとしては使わないでください。
null 値はどうなりますか?
TOML には null 型がないため、値が ~ または null のキーは省略されます。
YAML のアンカーとマージキーに対応していますか?
はい。エイリアス(*name)は展開され、<<: *base は base のキーをそのマッピングにコピーします。並べて書いたキーが優先されます。TOML にはマージ後の値が出力されます。