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 parameters:
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 parameters:
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 parameters:
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 parameters:
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 parameters:
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 parameters:
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 parameters:
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 parameters:
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: "\u001b[35m"

Foreground color for ANSI magenta

Foreground color for ANSI magenta

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

Background color for ANSI magenta

Background color for ANSI magenta

Inherited from:
AnsiColor
Source:
AnsiColor.scala

color-blue

final val BLUE: "\u001b[34m"

Foreground color for ANSI blue

Foreground color for ANSI blue

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

Background color for ANSI blue

Background color for ANSI blue

Inherited from:
AnsiColor
Source:
AnsiColor.scala

color-red

final val RED: "\u001b[31m"

Foreground color for ANSI red

Foreground color for ANSI red

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

Background color for ANSI red

Background color for ANSI red

Inherited from:
AnsiColor
Source:
AnsiColor.scala

color-cyan

final val CYAN: "\u001b[36m"

Foreground color for ANSI cyan

Foreground color for ANSI cyan

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

Background color for ANSI cyan

Background color for ANSI cyan

Inherited from:
AnsiColor
Source:
AnsiColor.scala

style-control

final val BOLD: "\u001b[1m"

ANSI bold

ANSI bold

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

ANSI invisible

ANSI invisible

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

Reset ANSI styles

Reset ANSI styles

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

ANSI reversed

ANSI reversed

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

ANSI underlines

ANSI underlines

Inherited from:
AnsiColor
Source:
AnsiColor.scala

color-yellow

final val YELLOW: "\u001b[33m"

Foreground color for ANSI yellow

Foreground color for ANSI yellow

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

Background color for ANSI yellow

Background color for ANSI yellow

Inherited from:
AnsiColor
Source:
AnsiColor.scala

color-white

final val WHITE: "\u001b[37m"

Foreground color for ANSI white

Foreground color for ANSI white

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

Background color for ANSI white

Background color for ANSI white

Inherited from:
AnsiColor
Source:
AnsiColor.scala

color-black

final val BLACK: "\u001b[30m"

Foreground color for ANSI black

Foreground color for ANSI black

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

Background color for ANSI black

Background color for ANSI black

Inherited from:
AnsiColor
Source:
AnsiColor.scala

color-green

final val GREEN: "\u001b[32m"

Foreground color for ANSI green

Foreground color for ANSI green

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

Background color for ANSI green

Background color for ANSI green

Inherited from:
AnsiColor
Source:
AnsiColor.scala