100 % locale — i tuoi dati non lasciano mai il tuo browser

TOML in YAML — una config letta uguale ovunque

Converti una configurazione TOML in YAML. Gli scalari ambigui escono tra virgolette: un vecchio lettore PyYAML e uno moderno danno gli stessi valori.

Istantaneo Privato Zero cookie
Indentazione

Input TOML

Output YAML

Che cosa fa questo strumento

Una configurazione TOML diventa YAML. Le tabelle diventano mappe annidate, e gli [[array di tabelle]] sequenze.

title = "Demo"

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

L’indentazione è un’opzione; due spazi per impostazione predefinita, che è quanto si aspettano quasi tutti i linter YAML.

Citato dove conta, nudo in tutto il resto

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

Lasciati nudi, quei tre verrebbero letti false, true e il numero 750 da qualsiasi lettore YAML 1.1 — PyYAML, quindi Ansible, quindi moltissime catene di rilascio. È il problema norvegese: un codice di paese che diventa un booleano, senza nulla nel file che avverta. Il serializzatore cita esattamente gli scalari ambigui e lascia stare il resto: il file resta leggibile e le due versioni di YAML concordano su che cosa contiene.

Gli interi grandi tengono le loro cifre

snowflake = 1096285471735640155
snowflake: 1096285471735640155

TOML impone interi con segno a 64 bit, e l’analizzatore rifiutava l’intero documento appena uno superava ciò che un numero JavaScript tiene esatto. Un solo identificatore rendeva inconvertibile una configurazione legale. Ora le cifre passano senza cambiare: era un difetto vero, trovato scrivendo questa pagina e corretto.

Che cosa costa il passaggio per JSON

Questa conversione passa per JSON, come ogni conversione composta di questo sito: le due metà sono già collaudate e i loro messaggi d’errore già precisi.

  • inf, -inf e nan vengono rifiutati, con la chiave nominata. JSON non ha nessuno dei tre e li scriverebbe come null: una portata infinita arriverebbe come portata assente. YAML potrebbe portare .inf; il passaggio no, e lo dice invece di lasciar cadere il valore.
  • Le date diventano stringhe citate. Una data TOML non ha corrispettivo in JSON. In diretta resterebbe una data, ma un’ora locale come 07:32:00 si ritroverebbe attorno un’intera data inventata.
  • I commenti non sopravvivono. Appartengono al file, non ai dati.

Un file che comincia con l’invisibile indicatore dell’ordine dei byte aggiunto dagli editor Windows ora viene letto normalmente, invece di essere rifiutato con un messaggio sui caratteri ammessi in una chiave.

Privato per progettazione

Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.

Domande frequenti

Perché quel valore è tra virgolette e gli altri no?
Perché per metà del mondo YAML vorrebbe dire un’altra cosa. Il pacchetto `yaml` scrive YAML 1.2, dove `NO`, `yes` e `12:30` sono stringhe. PyYAML — il lettore YAML più diffuso che esista — applica YAML 1.1, dove sono falso, vero e il sessagesimale 750. Citare esattamente quegli scalari, e nient’altro, dà ai due lettori gli stessi valori a partire dallo stesso file.
Che fine hanno fatto le mie date?
Arrivano come stringhe tra virgolette, per esempio `"1979-05-27"`. La conversione passa per JSON, che non ha un tipo data: una data TOML diventa testo, e un testo che somiglia a una data va citato, altrimenti un lettore YAML 1.1 ne rifarebbe una marca temporale a modo suo.
Perché `inf` viene rifiutato se YAML sa scrivere `.inf`?
Perché in mezzo c’è JSON. Tutte le conversioni composte di questo sito passano per JSON, che non ha l’infinito: il valore viene rifiutato nominando la sua chiave invece di essere annullato in silenzio. Andare da TOML a YAML in diretta salverebbe l’infinito, ma trasformerebbe un’ora locale come `07:32:00` in una marca temporale completa, con una data inventata attorno. Il passaggio per JSON perde meno, e ciò che non può portare lo nomina.

Convertitori correlati