本文へスキップ

TOMLからYAML形式への変換 — Numio

TOML ドキュメントを YAML に変換します。テーブルはネストしたマッピングに、[[array of tables]] はマッピングのリストになります。クォートは YAML で必要な箇所にだけ付きます(たとえば "2021" は文字列のまま)。

TOML の設定(Cargo、pyproject、Hugo)の内容を、CI ワークフローや Kubernetes マニフェストなど YAML ベースのツールに移す。

TOML

YAML

こんなときに使えます

  • TOML の設定(Cargo、pyproject、Hugo)の内容を、CI ワークフローや Kubernetes マニフェストなど YAML ベースのツールに移す。
  • ドット付きキーやネストしたテーブルを含む長い TOML ファイルを、インデントされたツリーとして読む。

使い方

  1. TOML ドキュメントを左側のエディターに貼り付けるか、ファイル読み込みボタンで UTF-8 のファイルを開きます。
  2. エラーが出たら、表示された行と列をもとに重複キーや構文の問題を探します。
  3. YAML の日時とクォート付きの値を確認してからコピーします。

TOML

# Cargo-style manifest
[package]
name = "demo"
version = "0.1.0"
edition = "2021"

[dependencies]
serde = { version = "1.0", features = ["derive"] }

[[bin]]
name = "cli"
path = "src/main.rs"

YAML

package:
  name: demo
  version: 0.1.0
  edition: "2021"
dependencies:
  serde:
    version: "1.0"
    features:
      - derive
bin:
  - name: cli
    path: src/main.rs

仕様と制限

コメントは削除されます。オフセット付きの日時は UTC に変換され(2024-01-05T10:00:00+09:00 は 2024-01-05T01:00:00.000Z)、ミリ秒が付加されます。

出力は YAML 1.2 に従うため、yes や on のような文字列はクォートなしで書き出されます。YAML 1.1 のパーサー(PyYAML など)は真偽値として読む場合があるので、必要なら手動でクォートしてください。

09:00:00 のようなローカル時刻はミリ秒付き(09:00:00.000)で書き出されます。ローカルの日付と日時にはタイムゾーンが付きません。

ブラウザ内で動作します(@iarna/toml、yaml、Prettier)。inf と nan は .inf と .nan になります。

FAQ

コメントは保持されますか?

いいえ。TOML はまずデータとして解析されるため、コメントと空行は失われます。重要なコメントは手動で移してください。

[[array of tables]] はどう変換されますか?

例のように、各 [[bin]] ブロックが bin の下の YAML リストの 1 項目になります。

"Can't redefine existing key" と表示されるのはなぜですか?

同じキーやテーブルが 2 回定義されており、TOML ではこれが禁止されています。エラーには 2 回目の定義の行と列が示されます。

仕様を確認する