Prettier para Ruby alcanza la versión 1.0 🎉
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Tras 1500 commits y 50 lanzamientos desde julio de 2018, nos complace anunciar que acabamos de publicar la versión 1.0 de Prettier para Ruby. En esta entrada del blog, ofreceremos una breve descripción de cómo funciona el plugin, su filosofía y lo que se puede esperar en el futuro.
¿Cómo funciona?
Prettier para Ruby funciona mediante la API de plugins de Prettier. Su función parse opera iniciando un proceso de Ruby y utilizando el propio analizador sintáctico de Ruby (conocido como Ripper). Tras rastrear todos los tipos de nodos, comentarios, información de ubicación y otros metadatos, devuelve un árbol de sintaxis abstracta (AST) construido al proceso de Prettier. Finalmente, convierte ese AST en la representación intermedia de Prettier (conocida como Doc) antes de permitir que Prettier maneje su impresión.
Filosofía
El plugin de Ruby busca ser compatible con la mayor variedad de código posible. Por ejemplo, si decides llamar a un método con o sin paréntesis, el plugin permitirá esto y respetará tu elección. Para algunos casos donde la comunidad Ruby tiene opiniones muy arraigadas, se proporcionan opciones como:
-
rubyArrayLiteral- Por defecto, el plugin convertirá arrays de cadenas y símbolos simples a su sintaxis literal equivalente (%wy%i, respectivamente). Si desactivas esta opción, los dejará sin modificar. -
rubyHashLabel- Esta opción es para los fans del hash rocket (=>). Por defecto, el plugin imprimirá las claves de hash consistentemente: usará etiquetas cuando sea posible para cada clave, de lo contrario usará hash rockets para todas. Si desactivas el comportamiento predeterminado, cada clave en los hashes siempre usará hash rockets. -
rubyModifier- Para usuarios que prefieren evitar la forma modificadora deif,unless,whileyuntil. -
rubySingleQuote- El comportamiento predeterminado usa comillas simples donde corresponde, y dobles en otros casos. Con esta opción puedes invertir ese comportamiento. -
rubyToProc- Permite a Prettier convertir expresiones comoarray.map { |elem| elem.to_s }enarray.map(&:to_s). Está desactivada por defecto porque técnicamente cambia la aridad del bloque, lo que podría romper código de reflexión.
Además, el plugin soporta varias opciones principales de Prettier:
-
printWidth- Por defecto es 80 caracteres, pero puedes alargar la línea si lo prefieres. -
tabWidth- Por defecto es 2 caracteres. -
trailingComma- Por defecto es"none", pero puedes elegir"all"para añadir comas finales en arrays literales, hashes literales y listas de argumentos que abarcan múltiples líneas.
En general, el estilo de Prettier coincide con la guía de estilo Ruby, es decir, la configuración predeterminada de Rubocop. Sin embargo, al usar Prettier quizás quieras desactivar las reglas Formatting/* de Rubocop para acelerar tus ejecuciones de linter.
Próximos pasos
En el futuro inmediato, trabajaremos en:
-
Soporte para la nueva sintaxis de Ruby 3, incluyendo asignación derecha y más coincidencia de patrones.
-
Mejoras de rendimiento, como en estos experimentos.
-
Soporte para Ruby en el playground de Prettier.
-
Soporte para plantillas HTML ERB como otro plugin, como en este experimento.
Hoy puedes probar el plugin desde la línea de comandos siguiendo las instrucciones en el README. Por favor reporta cualquier error que encuentres; estamos trabajando diligentemente para solucionarlos tan pronto aparezcan. También puedes empezar a contribuir al proyecto si estás interesado.
