2012-03-19 27 views
13

Yo esperaba que sería tan sencilloel uso de colores en Scala consola

Console.out.println("Test " + Console.RED + " RED " + Console.RESET) 

como pero no pasa nada, en lugar de eso ver los caracteres de control (por ejemplo "\033[31m"). Intenté ambos desde dentro de sbt (sbt run) y la configuración de ejecución normal de IDEA ejecuta ...

+1

No sabía que era posible con Scala, +1 para el cultura. –

+0

Consulte http://stackoverflow.com/questions/27229533/how-to-colorize-the-standard-output-in-scala-with-ansi-codes para obtener una alternativa a Console.RED y tal. –

Respuesta

10

Funciona si la consola admite color. Acabo de probarlo en un sistema Linux a través de masilla y obtuve el resultado esperado.

Editar: Si está buscando hacer esto a través de Windows, puede usar Ansicon para dar color a su símbolo del sistema estándar.

+1

Ah bien, parece ser un problema de IntelliJ IDEA Console. Si bien el plugin sbt para IDEA proporciona colores para sbt, parece que los códigos de control ANSI de scala.Console no son compatibles. Traté de ejecutar desde un bash normal y funciona. –

6

Sí, lo anterior funciona bien. También he descubierto que es bastante limpio para envolver los de arriba como los métodos ".red" en la cadena, como en esta biblioteca https://github.com/ktoso/scala-rainbow

Las porciones de las gemas de rubí que hay que hacer esto, pero no tanto para Scala todavía. .. :-)

1

Si está utilizando Scala 2.11+ puede utilizar esta biblioteca: https://github.com/backuity/ansi-interpolator

se utiliza una macro para transformar sus cadenas en tiempo de compilación, y apoya la anidación:

ansi"Text containing ansi tags such as %bold{bold text} or %underline{can be %yellow{nested}}" 

// you can also use string interpolation: 
val someMsg = "hey" 
ansi"My msg %bold{in bold: $someMsg}" 
Cuestiones relacionadas