2012-03-19 18 views
13

Speravo che sarebbe stato così semplice comeutilizzando colori in console Scala

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

ma non succede nulla, invece vedo i caratteri di controllo (ad esempio "\033[31m"). Ho provato entrambi da dentro sbt (sbt run) e normale configurazione di esecuzione IDEA eseguire ...

+1

Non sapevo che fosse possibile con Scala, +1 per il cultura. –

+0

Vedere http://stackoverflow.com/questions/27229533/how-to-colorize-the-standard-output-in-scala-with-ansi-codes per un'alternativa a Console.RED e simili. –

risposta

10

Funziona se la console supporta il colore. Ho appena provato su un sistema Linux tramite stucco e ottenuto il risultato atteso.

Modifica: Se si desidera eseguire questa operazione tramite Windows, è possibile utilizzare Ansicon per colorare il prompt dei comandi standard.

+1

Ah ok, sembra essere un problema della console IntelliJ IDEA. Mentre il plugin sbt per IDEA fornisce i colori per lo stesso sbt, sembra che i codici di controllo ANSI di scala.Console non siano supportati. Ho provato a scappare da una normale bash e funziona. –

6

Sì, quanto sopra funziona perfettamente. Inoltre ho trovato che è abbastanza carino per avvolgere chi come metodi ".red" a stringa, come in questa biblioteca https://github.com/ktoso/scala-rainbow

Un sacco di gemme del rubino là fuori che fare questo, ma non tanto per la Scala ancora. .. :-)

1

Se stai usando Scala 2.11+ è possibile utilizzare questa libreria: https://github.com/backuity/ansi-interpolator

Esso utilizza una macro per trasformare le stringhe in fase di compilazione, e supporta la nidificazione:

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