O que esta ferramenta faz
Ela reindenta. Não reescreve.
# Banco de produção — avisar o plantão antes de mexer
db:
host: db.example.com # troca manual
port: 5432
Indentação de dois espaços, e todo o resto exatamente como você escreveu: o comentário acima de db, o depois de host, o estilo de aspas de cada escalar.
O jeito óbvio perde os seus comentários
O jeito óbvio de escrever um formatador YAML é analisar o arquivo como valor e serializar esse valor. Também é errado, de duas maneiras que não deixam rastro.
Todos os comentários somem. Um valor não tem comentários: eles vivem no documento, não nos dados. Um arquivo de configuração que alguém documentou — por que esse tempo limite, quem chamar, o que quebra se mudar — volta mudo, e a saída é YAML válido, então nada diz o que se perdeu.
As âncoras são expandidas. Isto:
base: &defaults
restart: always
logging: json
web:
<<: *defaults
worker:
<<: *defaults
vira três cópias do mesmo bloco, mais longo que a entrada, com o vínculo entre elas desfeito. Quem mudar restart na próxima vez terá de achar as três.
Este formatador conserva o documento e só muda a disposição.
Os valores ambíguos ficam intactos
country: NO continua country: NO.
Um leitor de YAML 1.2 vê a string NO; um de YAML 1.1 — o PyYAML — vê o booleano falso. Pôr aspas resolveria a questão, e resolvê-la cabe ao autor, não a um formatador: um arquivo escrito para o PyYAML bem pode ter querido dizer falso.
As ferramentas de conversão põem aspas, e fazem bem: partem de um valor que sabem ser uma string. Um formatador parte de um arquivo, e um arquivo não diz.
Vários documentos num arquivo
--- separa documentos YAML, e um arquivo pode ter quantos quiser. Cada um é formatado no lugar e os separadores ficam. Essa é a forma da maioria dos manifestos Kubernetes: um fluxo, não um erro.
As opções
Indentação — dois espaços por padrão, ou o que você escolher.
Ordenar chaves — em ordem alfabética, recursivamente, com cada comentário seguindo a entrada à qual estava preso. Útil para comparar dois arquivos que divergiram; deixe desligado se a ordem das suas chaves significa algo, o que num arquivo de configuração costuma ser o caso.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.