Zum Inhalt springen

TOML in YAML umwandeln — Numio

Wandelt ein TOML-Dokument in YAML um. Tabellen werden zu verschachtelten Mappings, [[array of tables]] zu Listen von Mappings, und Anführungszeichen werden nur dort gesetzt, wo YAML sie braucht (z. B. bleibt "2021" ein String).

Einstellungen aus einer TOML-Konfiguration (Cargo, pyproject, Hugo) in ein YAML-basiertes Tool wie einen CI-Workflow oder ein Kubernetes-Manifest übernehmen.

TOML

YAML

Wann sie hilft

  • Einstellungen aus einer TOML-Konfiguration (Cargo, pyproject, Hugo) in ein YAML-basiertes Tool wie einen CI-Workflow oder ein Kubernetes-Manifest übernehmen.
  • Eine lange TOML-Datei mit gepunkteten und verschachtelten Tabellen als eingerückten Baum lesen.

Anwendung

  1. Füge das TOML-Dokument in den linken Editor ein oder öffne über die Schaltfläche zum Laden einer Datei eine UTF-8-Datei.
  2. Erscheint ein Fehler, finde mit der gemeldeten Zeile und Spalte doppelte Schlüssel oder Syntaxprobleme.
  3. Prüfe Datum-Uhrzeit-Werte und Werte in Anführungszeichen im YAML und kopiere es dann.

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

Details und Einschränkungen

Kommentare entfallen. Datum-Uhrzeit-Werte mit Offset werden nach UTC umgerechnet (2024-01-05T10:00:00+09:00 wird zu 2024-01-05T01:00:00.000Z), und Millisekunden werden ergänzt.

Die Ausgabe folgt YAML 1.2, daher werden Strings wie yes und on ohne Anführungszeichen geschrieben. YAML-1.1-Parser (z. B. PyYAML) lesen sie möglicherweise als Booleans; setze sie bei Bedarf von Hand in Anführungszeichen.

Lokale Uhrzeiten wie 09:00:00 werden mit Millisekunden geschrieben (09:00:00.000); lokale Datums- und Datum-Uhrzeit-Werte erhalten keine Zeitzone.

Läuft im Browser (@iarna/toml, yaml, Prettier); inf und nan werden zu .inf und .nan.

FAQ

Bleiben Kommentare erhalten?

Nein. TOML wird zuerst in Daten geparst, daher gehen Kommentare und Leerzeilen verloren. Übertrage wichtige Kommentare von Hand.

Wie werden [[array of tables]] umgewandelt?

Jeder [[bin]]-Block wird zu einem Eintrag in einer YAML-Liste unter bin, wie im Beispiel gezeigt.

Warum erhalte ich "Can't redefine existing key"?

Derselbe Schlüssel oder dieselbe Tabelle ist zweimal definiert, was TOML verbietet. Der Fehler nennt Zeile und Spalte der zweiten Definition.

Spezifikationen und Referenzen