Qué hace esta herramienta
Reindenta. No reescribe.
# Base de datos de producción — avisar a guardia antes de tocar
db:
host: db.example.com # conmutación manual
port: 5432
Indentación de dos espacios, y todo lo demás exactamente como lo escribiste: el comentario sobre db, el de después de host, el estilo de comillas de cada escalar.
La vía obvia pierde tus comentarios
La forma obvia de escribir un formateador de YAML es analizar el archivo como valor y serializar ese valor. También es equivocada, de dos maneras que no dejan rastro.
Todos los comentarios desaparecen. Un valor no tiene comentarios: viven en el documento, no en los datos. Un archivo de configuración que alguien documentó —por qué ese tiempo de espera, a quién llamar, qué se rompe si lo cambias— vuelve mudo, y la salida es YAML válido, así que nada dice qué se perdió.
Las anclas se despliegan. Esto:
base: &defaults
restart: always
logging: json
web:
<<: *defaults
worker:
<<: *defaults
se convierte en tres copias del mismo bloque, más largo que la entrada, con el enlace entre ellas desaparecido. Quien cambie restart la próxima vez tendrá que encontrarlas todas.
Este formateador conserva el documento y solo cambia su disposición.
Los valores ambiguos se dejan intactos
country: NO sigue siendo country: NO.
Un lector de YAML 1.2 ve la cadena NO; uno de YAML 1.1 —PyYAML— ve el booleano falso. Poner comillas zanjaría la cuestión, y zanjarla le toca al autor, no a un formateador: un archivo escrito para PyYAML bien pudo querer decir falso.
Las herramientas de conversión sí ponen comillas, y hacen bien: parten de un valor que saben que es una cadena. Un formateador parte de un archivo, y un archivo no lo dice.
Varios documentos en un archivo
--- separa documentos YAML, y un archivo puede tener tantos como quiera. Cada uno se formatea en su sitio y los separadores se quedan. Esa es la forma de la mayoría de los manifiestos de Kubernetes: un flujo, no un error.
Los ajustes
Indentación — dos espacios por defecto, o lo que elijas.
Ordenar claves — alfabéticamente, de forma recursiva, con cada comentario siguiendo a la entrada a la que estaba unido. Útil para comparar dos archivos que se separaron; déjalo apagado si el orden de tus claves significa algo, que en un archivo de configuración suele ser el caso.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.