Console

object Console extends AnsiColor

Implements functionality for printing Scala values on the terminal. For reading values use StdIn. Also defines constants for marking up text on ANSI terminals.

Console Output

Use the print methods to output text.

scala> Console.printf(
  "Today the outside temperature is a balmy %.1f°C. %<.1f°C beats the previous record of %.1f°C.\n",
  -137.0,
  -135.05)
Today the outside temperature is a balmy -137.0°C. -137.0°C beats the previous record of -135.1°C.

ANSI escape codes

Use the ANSI escape codes for colorizing console output either to STDOUT or STDERR.

import Console.{GREEN, RED, RESET, YELLOW_B, UNDERLINED}

object PrimeTest {

  def isPrime(): Unit = {

    val candidate = io.StdIn.readInt().ensuring(_ > 1)

    val prime = (2 to candidate - 1).forall(candidate % _ != 0)

    if (prime)
      Console.println(s"${RESET}${GREEN}yes${RESET}")
    else
      Console.err.println(s"${RESET}${YELLOW_B}${RED}${UNDERLINED}NO!${RESET}")
  }

  def main(args: Array[String]): Unit = isPrime()

}

$ scala PrimeTest
1234567891
yes
$ scala PrimeTest
56474
NO!

IO redefinition

Use IO redefinition to temporarily swap in a different set of input and/or output streams. In this example the stream based method above is wrapped into a function.

import java.io.{ByteArrayOutputStream, StringReader}

object FunctionalPrimeTest {

  def isPrime(candidate: Int): Boolean = {

    val input = new StringReader(s"$candidate\n")
    val outCapture = new ByteArrayOutputStream
    val errCapture = new ByteArrayOutputStream

    Console.withIn(input) {
      Console.withOut(outCapture) {
        Console.withErr(errCapture) {
          PrimeTest.isPrime()
        }
      }
    }

    if (outCapture.toByteArray.nonEmpty) // "yes"
      true
    else if (errCapture.toByteArray.nonEmpty) // "NO!"
      false
    else throw new IllegalArgumentException(candidate.toString)
  }

  def main(args: Array[String]): Unit = {
    val primes = (2 to 50) filter (isPrime)
    println(s"First primes: $primes")
  }

}

$ scala FunctionalPrimeTest
First primes: Vector(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47)

Source
Console.scala
trait AnsiColor
class Object
trait Matchable
class Any

Console Output

These methods provide output via the console.

def flush(): Unit

Flushes the output stream.

Flushes the output stream. This function is required when partial output (i.e. output not terminated by a newline character) has to be made visible on the terminal.

Source
Console.scala
def printf(text: String, args: Any*): Unit

Prints its arguments as a formatted string to the default output, based on a string pattern (in a fashion similar to printf in C).

Prints its arguments as a formatted string to the default output, based on a string pattern (in a fashion similar to printf in C).

The interpretation of the formatting patterns is described in java.util.Formatter.

Value Params
args

the arguments used to instantiating the pattern.

text

the pattern for formatting the arguments.

Throws
java.lang.IllegalArgumentException

if there was a problem with the format string or arguments

Source
Console.scala
def println(): Unit

Prints a newline character on the default output.

Prints a newline character on the default output.

Source
Console.scala
def println(x: Any): Unit

Prints out an object to the default output, followed by a newline character.

Prints out an object to the default output, followed by a newline character.

Value Params
x

the object to print.

Source
Console.scala

IO Defaults

These values provide direct access to the standard IO channels

The default error, can be overridden by withErr

The default error, can be overridden by withErr

Source
Console.scala

The default input, can be overridden by withIn

The default input, can be overridden by withIn

Source
Console.scala

The default output, can be overridden by withOut

The default output, can be overridden by withOut

Source
Console.scala

IO Redefinition

These methods allow substituting alternative streams for the duration of a body of code. Threadsafe by virtue of scala.util.DynamicVariable.

def withErr[T](err: PrintStream)(thunk: => T): T

Set the default error stream for the duration of execution of one thunk.

Set the default error stream for the duration of execution of one thunk.

Value Params
err

the new error stream.

thunk

the code to execute with the new error stream active

Returns

the results of thunk

See also

withErr[T](err:OutputStream)(thunk: => T)

Example

withErr(Console.out) { err.println("This goes to default _out_") }
Source
Console.scala
def withErr[T](err: OutputStream)(thunk: => T): T

Sets the default error stream for the duration of execution of one thunk.

Sets the default error stream for the duration of execution of one thunk.

Value Params
err

the new error stream.

thunk

the code to execute with the new error stream active

Returns

the results of thunk

See also

withErr[T](err:PrintStream)(thunk: => T)

Source
Console.scala
def withIn[T](reader: Reader)(thunk: => T): T

Sets the default input stream for the duration of execution of one thunk.

Sets the default input stream for the duration of execution of one thunk.

Value Params
thunk

the code to execute with the new input stream active

Returns

the results of thunk

See also

withIn[T](in:InputStream)(thunk: => T)

Example

val someFile:Reader = openFile("file.txt")
withIn(someFile) {
  // Reads a line from file.txt instead of default input
  println(readLine)
}
Source
Console.scala
def withIn[T](in: InputStream)(thunk: => T): T

Sets the default input stream for the duration of execution of one thunk.

Sets the default input stream for the duration of execution of one thunk.

Value Params
in

the new input stream.

thunk

the code to execute with the new input stream active

Returns

the results of thunk

See also

withIn[T](reader:Reader)(thunk: => T)

Source
Console.scala
def withOut[T](out: PrintStream)(thunk: => T): T

Sets the default output stream for the duration of execution of one thunk.

Sets the default output stream for the duration of execution of one thunk.

Value Params
out

the new output stream.

thunk

the code to execute with the new output stream active

Returns

the results of thunk

See also

withOut[T](out:OutputStream)(thunk: => T)

Example

withOut(Console.err) { println("This goes to default _error_") }
Source
Console.scala
def withOut[T](out: OutputStream)(thunk: => T): T

Sets the default output stream for the duration of execution of one thunk.

Sets the default output stream for the duration of execution of one thunk.

Value Params
out

the new output stream.

thunk

the code to execute with the new output stream active

Returns

the results of thunk

See also

withOut[T](out:PrintStream)(thunk: => T)

Source
Console.scala

color-magenta

final val MAGENTA: "\033[35m"

Foreground color for ANSI magenta

Foreground color for ANSI magenta

Inherited from
AnsiColor
Source
AnsiColor.scala
final val MAGENTA_B: "\033[45m"

Background color for ANSI magenta

Background color for ANSI magenta

Inherited from
AnsiColor
Source
AnsiColor.scala

color-blue

final val BLUE: "\033[34m"

Foreground color for ANSI blue

Foreground color for ANSI blue

Inherited from
AnsiColor
Source
AnsiColor.scala
final val BLUE_B: "\033[44m"

Background color for ANSI blue

Background color for ANSI blue

Inherited from
AnsiColor
Source
AnsiColor.scala

color-red

final val RED: "\033[31m"

Foreground color for ANSI red

Foreground color for ANSI red

Inherited from
AnsiColor
Source
AnsiColor.scala
final val RED_B: "\033[41m"

Background color for ANSI red

Background color for ANSI red

Inherited from
AnsiColor
Source
AnsiColor.scala

color-cyan

final val CYAN: "\033[36m"

Foreground color for ANSI cyan

Foreground color for ANSI cyan

Inherited from
AnsiColor
Source
AnsiColor.scala
final val CYAN_B: "\033[46m"

Background color for ANSI cyan

Background color for ANSI cyan

Inherited from
AnsiColor
Source
AnsiColor.scala

style-control

final val BOLD: "\033[1m"

ANSI bold

ANSI bold

Inherited from
AnsiColor
Source
AnsiColor.scala
final val INVISIBLE: "\033[8m"

ANSI invisible

ANSI invisible

Inherited from
AnsiColor
Source
AnsiColor.scala
final val RESET: "\033[0m"

Reset ANSI styles

Reset ANSI styles

Inherited from
AnsiColor
Source
AnsiColor.scala
final val REVERSED: "\033[7m"

ANSI reversed

ANSI reversed

Inherited from
AnsiColor
Source
AnsiColor.scala
final val UNDERLINED: "\033[4m"

ANSI underlines

ANSI underlines

Inherited from
AnsiColor
Source
AnsiColor.scala

color-yellow

final val YELLOW: "\033[33m"

Foreground color for ANSI yellow

Foreground color for ANSI yellow

Inherited from
AnsiColor
Source
AnsiColor.scala
final val YELLOW_B: "\033[43m"

Background color for ANSI yellow

Background color for ANSI yellow

Inherited from
AnsiColor
Source
AnsiColor.scala

color-white

final val WHITE: "\033[37m"

Foreground color for ANSI white

Foreground color for ANSI white

Inherited from
AnsiColor
Source
AnsiColor.scala
final val WHITE_B: "\033[47m"

Background color for ANSI white

Background color for ANSI white

Inherited from
AnsiColor
Source
AnsiColor.scala

color-black

final val BLACK: "\033[30m"

Foreground color for ANSI black

Foreground color for ANSI black

Inherited from
AnsiColor
Source
AnsiColor.scala
final val BLACK_B: "\033[40m"

Background color for ANSI black

Background color for ANSI black

Inherited from
AnsiColor
Source
AnsiColor.scala

color-green

final val GREEN: "\033[32m"

Foreground color for ANSI green

Foreground color for ANSI green

Inherited from
AnsiColor
Source
AnsiColor.scala
final val GREEN_B: "\033[42m"

Background color for ANSI green

Background color for ANSI green

Inherited from
AnsiColor
Source
AnsiColor.scala