100 % lokal — Ihre Daten verlassen nie Ihren Browser

TOML in YAML — von jedem Leser gleich gelesen

Eine TOML-Konfiguration in YAML umwandeln. Mehrdeutige Skalare kommen zitiert heraus, sodass alter PyYAML und moderner Leser dieselben Werte liefern.

Sofort Privat Null Cookies
Einrückung

TOML-Eingabe

YAML-Ausgabe

Was dieses Werkzeug tut

Aus einer TOML-Konfiguration wird YAML. Tabellen werden verschachtelte Zuordnungen, [[Tabellenfelder]] werden Sequenzen.

title = "Demo"

[server]
host = "localhost"
port = 8080
title: Demo
server:
  host: localhost
  port: 8080

Die Einrückung ist eine Option; zwei Leerzeichen sind die Vorgabe und das, was die meisten YAML-Linter erwarten.

Zitiert, wo es zählt, blank überall sonst

country = "NO"
answer = "yes"
start = "12:30"
country: "NO"
answer: "yes"
start: "12:30"

Blank gelassen läse jeder YAML-1.1-Leser diese drei als false, true und die Zahl 750 — PyYAML, also Ansible, also sehr viele Pipelines. Das ist das Norwegen-Problem: ein Länderkürzel, das zum Wahrheitswert wird, ohne dass die Datei warnt. Der Schreiber zitiert genau die mehrdeutigen Skalare und lässt den Rest in Ruhe: die Datei bleibt lesbar, und beide YAML-Versionen sind sich einig, was darin steht.

Große Ganzzahlen behalten ihre Ziffern

snowflake = 1096285471735640155
snowflake: 1096285471735640155

TOML schreibt vorzeichenbehaftete 64-Bit-Ganzzahlen vor, und der Parser wies das ganze Dokument ab, sobald eine über das hinausging, was eine JavaScript-Zahl exakt fasst. Eine einzige Kennung machte eine legale Konfiguration unkonvertierbar. Die Ziffern gehen jetzt unverändert hindurch — ein echter Fehler, beim Schreiben dieser Seite gefunden und behoben.

Was der Umweg über JSON kostet

Diese Umwandlung geht über JSON, wie jede zusammengesetzte Umwandlung auf dieser Seite: beide Hälften sind schon geprüft, und ihre Fehlermeldungen schon genau.

  • inf, -inf und nan werden abgelehnt, mit genanntem Schlüssel. JSON hat keinen der drei und schriebe sie als null: aus einer unendlichen Rate würde eine fehlende. YAML könnte .inf tragen; der Umweg nicht, und er sagt es, statt den Wert fallen zu lassen.
  • Datumsangaben werden zitierte Zeichenketten. Ein TOML-Datum hat kein Gegenstück in JSON. Direkt bliebe es ein Datum, aber eine lokale Zeit wie 07:32:00 bekäme ein ganzes erfundenes Kalenderdatum darum herum.
  • Kommentare überleben nicht. Sie gehören zur Datei, nicht zu den Daten.

Eine Datei, die mit der unsichtbaren Bytereihenfolge-Marke eines Windows-Editors beginnt, wird nun normal gelesen, statt mit einer Meldung über erlaubte Zeichen in Schlüsseln abgewiesen zu werden.

Datenschutz ab Werk

Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.

Häufige Fragen

Warum ist dieser Wert zitiert und die anderen nicht?
Weil er für die halbe YAML-Welt etwas anderes hieße. Das Paket `yaml` schreibt YAML 1.2, wo `NO`, `yes` und `12:30` Zeichenketten sind. PyYAML — der am weitesten verbreitete YAML-Leser überhaupt — wendet YAML 1.1 an, wo sie falsch, wahr und die Sexagesimalzahl 750 sind. Genau diese Skalare zu zitieren und sonst nichts, gibt beiden Lesern dieselben Werte aus derselben Datei.
Was ist aus meinen Datumsangaben geworden?
Sie kommen als zitierte Zeichenketten an, etwa `"1979-05-27"`. Die Umwandlung geht über JSON, das keinen Datumstyp hat: ein TOML-Datum wird also Text, und Text, der wie ein Datum aussieht, muss zitiert werden, sonst machte ein YAML-1.1-Leser daraus wieder einen Zeitstempel eigener Wahl.
Warum wird `inf` abgelehnt, wenn YAML doch `.inf` schreiben kann?
Weil JSON in der Mitte steht. Alle zusammengesetzten Umwandlungen dieser Seite gehen über JSON, das keine Unendlichkeit kennt: der Wert wird mit genanntem Schlüssel abgelehnt statt still genullt. Direkt von TOML nach YAML würde die Unendlichkeit retten, aber eine lokale Zeit wie `07:32:00` in einen vollen Zeitstempel verwandeln, mit einem darum herum erfundenen Datum. Der Umweg verliert weniger, und was er nicht tragen kann, benennt er.

Ähnliche Konverter