Zum Inhalt springen

YAML in TOML umwandeln — Numio

Wandelt ein YAML-Dokument in TOML um. Verschachtelte Mappings werden zu [table.sub]-Abschnitten, Listen von Mappings zu [[array of tables]], und Schlüssel mit null-Werten (~) entfallen.

Eine YAML-Konfiguration als TOML neu schreiben, wenn ein Projekt auf pyproject.toml, Cargo, Hugo oder Netlify-TOML-Einstellungen umsteigt.

YAML

TOML

Wann sie hilft

  • Eine YAML-Konfiguration als TOML neu schreiben, wenn ein Projekt auf pyproject.toml, Cargo, Hugo oder Netlify-TOML-Einstellungen umsteigt.
  • Vor der Wahl eines Konfigurationsformats prüfen, wie eine verschachtelte YAML-Struktur als TOML-Tabellen aussähe.

Anwendung

  1. Füge ein einzelnes YAML-Dokument mit einem Mapping auf oberster Ebene in den linken Editor ein oder öffne über die Schaltfläche zum Laden einer Datei eine UTF-8-Datei.
  2. Behebe gemeldete YAML-Fehler (Einrückung, mehrere Dokumente oder eine Liste auf oberster Ebene).
  3. Prüfe Datumswerte, null-Werte und Listen im TOML und kopiere es dann.

YAML

# docker-compose style
version: "3.9"
services:
  web:
    image: nginx:1.27
    ports:
      - "8080:80"
    environment:
      DEBUG: false
      WORKERS: 4
  db:
    image: postgres:16

TOML

version = "3.9"

[services.web]
image = "nginx:1.27"
ports = [ "8080:80" ]

  [services.web.environment]
  DEBUG = false
  WORKERS = 4

[services.db]
image = "postgres:16"

Details und Einschränkungen

YAML wird als YAML 1.2 gelesen: yes bleibt der String "yes", 0o17 wird zu 15, und Datumswerte ohne Anführungszeichen wie 2024-01-05 werden zu TOML-Strings, nicht zu TOML-Datumswerten.

Kommentare und Anker bleiben nicht als solche erhalten: Aliase (*name) und Merge-Keys <<: *anchor werden zu den Werten expandiert, auf die sie verweisen.

Es wird nur ein Dokument akzeptiert; Eingaben mit Trennern --- schlagen mit einem Fehler wegen mehrerer Dokumente fehl. Eine Liste auf oberster Ebene oder eine Liste, die Mappings mit einfachen Werten mischt, wird mit einer Erklärung abgelehnt.

Läuft im Browser (yaml + @iarna/toml). Untertabellen wie [services.web.environment] werden um zwei Leerzeichen eingerückt; TOML ignoriert diese Einrückung.

FAQ

Kann ich eine docker-compose.yml in TOML umwandeln?

Die Struktur lässt sich wie im Beispiel umwandeln, aber Docker Compose liest nur YAML. Nutze das, um die Daten zu untersuchen oder wiederzuverwenden, nicht als Compose-Datei.

Was passiert mit null-Werten?

Schlüssel mit dem Wert ~ oder null werden weggelassen, da TOML keinen null-Typ hat.

Werden YAML-Anker und Merge-Keys unterstützt?

Ja. Aliase (*name) werden expandiert, und <<: *base kopiert die Schlüssel von base in das Mapping, wobei daneben geschriebene Schlüssel Vorrang haben. Das TOML zeigt die zusammengeführten Werte.

Spezifikationen und Referenzen