Подтвердить что ты не робот

Использование цветов в консоли Scala

Я надеялся, что это будет так же прямо, как

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

но ничего не происходит, вместо этого я вижу управляющие символы (например, "\033[31m"). Я пробовал как изнутри sbt (sbt run), так и в обычную конфигурацию запуска IDEA...

4b9b3361

Ответ 1

Он работает, если ваша консоль поддерживает цвет. Я просто попробовал это на linux-системе через шпатлевку и получил ожидаемый результат.

Изменить: если вы хотите сделать это через окна, вы можете использовать Ansicon, чтобы обеспечить раскраску в стандартной командной строке.

Ответ 2

Yup, вышеизложенное работает отлично. Также я нашел, что это довольно аккуратно, чтобы обернуть их как методы ".red" на String, как в этой библиотеке https://github.com/ktoso/scala-rainbow

Много камней Ruby, которые делают это, но не столько для Scala еще...: -)

Ответ 3

Если вы используете scala 2.11+, вы можете использовать эту библиотеку: https://github.com/backuity/ansi-interpolator

Он использует макрос, чтобы преобразовать ваши строки во время компиляции и поддерживает вложенность:

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