2012-03-19 26 views
13

miałem nadzieję, że będzie tak proste jakKorzystanie kolory w Scala konsoli

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

ale nic się nie dzieje, a nie widzę znaków sterujących (np "\033[31m"). Próbowałem zarówno z sbt (sbt run) i normalnego uruchomienia IDEA uruchomić bieg ...

+1

Nie wiedziałem, że to możliwe ze Scala, +1 dla kultura. –

+0

Zobacz http://stackoverflow.com/questions/27229533/how-to-colorize-the-standard-output-in-scala-with-ansi-codes alternatywy dla Console.RED i takie. –

Odpowiedz

10

Działa, jeśli konsola obsługuje kolor. Po prostu wypróbowałem to na systemie Linux za pomocą szpachlówki i uzyskałem oczekiwany wynik.

Edycja: Jeśli szukasz to zrobić za pośrednictwem systemu Windows można użyć Ansicon zapewnić zabarwienie w standardowym wierszu poleceń.

+1

Ach, wydaje się, że jest to problem z IntelliJ IDEA Console. Podczas gdy wtyczka sbt dla IDEA zapewnia kolory dla samego sbt, wydaje się, że kody kontrolne ANSI scala.Console nie są obsługiwane. Próbowałem uruchomić od normalnego basha i to działa. –

6

Tak, powyższe działa dobrze. Również odkryłem, że to całkiem zgrabny zawinąć te jako metody „.red” na ciąg, jak w tej bibliotece https://github.com/ktoso/scala-rainbow

Dużo Ruby klejnotów tam, że to zrobić, ale nie tyle dla Scala jeszcze. .. :-)

1

Jeśli używasz Scala 2.11+ można użyć tej biblioteki: https://github.com/backuity/ansi-interpolator

używa makra, aby przekształcić swoje struny w czasie kompilacji, a obsługuje zagnieżdżanie:

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}" 
Powiązane problemy