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

Formattatore YAML — commenti e ancore restano

Reindenta YAML senza toccare quello che dice. I tuoi commenti e le tue ancore passano interi: il file resta quello che volevi committare.

Istantaneo Privato Zero cookie
Indentazione

Input YAML

Output YAML

Che cosa fa questo strumento

Reindenta. Non riscrive.

# Database di produzione — avvisare la reperibilità prima di toccare
db:
    host: db.example.com   # commutazione manuale
    port: 5432

Indentazione a due spazi, e tutto il resto esattamente come l’hai scritto: il commento sopra db, quello dopo host, lo stile di virgolette di ogni scalare.

La via ovvia perde i tuoi commenti

Il modo ovvio di scrivere un formattatore YAML è analizzare il file come valore e serializzare quel valore. È anche sbagliato, in due modi che non lasciano traccia.

Tutti i commenti spariscono. Un valore non ha commenti: vivono nel documento, non nei dati. Un file di configurazione che qualcuno ha documentato — perché quel timeout, chi chiamare, cosa si rompe se lo cambi — torna muto, e l’uscita è YAML valido, quindi nulla dice che cosa si è perso.

Le ancore vengono espanse. Questo:

base: &defaults
  restart: always
  logging: json
web:
  <<: *defaults
worker:
  <<: *defaults

diventa tre copie dello stesso blocco, più lungo dell’ingresso, con il legame tra loro svanito. Chi cambierà restart la prossima volta dovrà trovarle tutte e tre.

Questo formattatore conserva il documento e cambia solo la disposizione.

I valori ambigui restano intatti

country: NO resta country: NO.

Un lettore YAML 1.2 vede la stringa NO; uno YAML 1.1 — PyYAML — vede il booleano falso. Mettere le virgolette scioglierebbe la questione, e scioglierla spetta all’autore, non a un formattatore: un file scritto per PyYAML poteva benissimo intendere falso.

Gli strumenti di conversione le virgolette le mettono, e fanno bene: partono da un valore che sanno essere una stringa. Un formattatore parte da un file, e un file non lo dice.

Più documenti in un file

--- separa i documenti YAML, e un file può contenerne quanti vuole. Ognuno è formattato sul posto e i separatori restano. È la forma della maggior parte dei manifesti Kubernetes: un flusso, non un errore.

Le opzioni

Indentazione — due spazi di default, o quello che scegli.

Ordinare le chiavi — alfabeticamente, in modo ricorsivo, con ogni commento che segue la voce a cui era attaccato. Utile per confrontare due file divergenti; lascialo spento se l’ordine delle tue chiavi significa qualcosa, cosa che in un file di configurazione capita spesso.

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

I miei commenti sopravvivono?
Sì, ed è il punto di questa pagina. Un formattatore che legge il documento come valore e riscrive quel valore **cancella ogni commento**, e il risultato è YAML valido, quindi nulla ti avverte. Questo conserva il documento stesso e cambia solo la disposizione.
Che fine fanno le mie ancore e le chiavi di merge?
Restano come scritte. `base: &defaults` e `<<: *defaults` tornano immutate, ancora collegate. Espanderle copierebbe il blocco in ogni utilizzo, allungando il file e lasciandoti due punti da modificare invece di uno.
Posso formattare un file con più documenti?
Sì. `---` li separa, ognuno è formattato sul posto e i separatori restano. Conta perché un manifesto Kubernetes è di solito esattamente questo, e finora veniva rifiutato di netto.

Convertitori correlati