Question Utilisation des couleurs dans Scala Console


J'espérais que ce serait aussi simple que

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

mais rien ne se passe, au lieu de cela je vois les caractères de contrôle (par ex. "\033[31m"). J'ai essayé les deux de sbt (sbt run) et une exécution normale de la configuration d'IDEA ...


13
2018-03-19 15:08


origine


Réponses:


Cela fonctionne si votre console prend en charge la couleur. Je viens de l'essayer sur un système Linux via un mastic et j'ai obtenu le résultat attendu.

Edit: Si vous cherchez à le faire via Windows, vous pouvez utiliser Ansicon pour fournir des couleurs dans votre invite de commande standard.


10
2018-03-19 15:12



Ouais, ce qui précède fonctionne très bien. Aussi, j’ai trouvé que c’était très chouette de les envelopper comme des méthodes ".red" sur String, comme dans cette bibliothèque. https://github.com/ktoso/scala-rainbow

Beaucoup de gemmes Ruby font ça, mais pas tellement pour Scala ... :-)


6
2017-09-26 21:28



Si vous utilisez scala 2.11+, vous pouvez utiliser cette bibliothèque: https://github.com/backuity/ansi-interpolator

Il utilise une macro pour transformer vos chaînes au moment de la compilation et prend en charge l'imbrication:

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}"

1
2017-12-01 13:25