Console

scala.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)

Attributes

Authors:

Matthias Zenger

Since

1.0

Graph
Supertypes
trait AnsiColor
class Object
trait Matchable
class Any
Self type
Console.type

Members list

Grouped members

Console Output

These methods provide output via the console.

def flush(): Unit

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.

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.

Attributes

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.

Attributes

Throws
java.lang.IllegalArgumentException

if there was a problem with the format string or arguments

def println(): Unit

Prints a newline character on the default output.

Prints a newline character on the default output.

Attributes

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.

Attributes

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

Attributes

The default input, can be overridden by withIn

The default input, can be overridden by withIn

Attributes

The default output, can be overridden by withOut

The default output, can be overridden by withOut

Attributes

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

Attributes

Returns

the results of thunk

See also

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

Example
withErr(Console.out) { err.println("This goes to default _out_") }
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

Attributes

Returns

the results of thunk

See also

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

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

Attributes

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

Attributes

Returns

the results of thunk

See also

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

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

Attributes

Returns

the results of thunk

See also

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

Example
withOut(Console.err) { println("This goes to default _error_") }
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

Attributes

Returns

the results of thunk

See also

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

color-magenta

final val MAGENTA: "\u001b[35m"

Foreground color for ANSI magenta

Foreground color for ANSI magenta

Attributes

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

Background color for ANSI magenta

Background color for ANSI magenta

Attributes

Inherited from:
AnsiColor

color-blue

final val BLUE: "\u001b[34m"

Foreground color for ANSI blue

Foreground color for ANSI blue

Attributes

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

Background color for ANSI blue

Background color for ANSI blue

Attributes

Inherited from:
AnsiColor

color-red

final val RED: "\u001b[31m"

Foreground color for ANSI red

Foreground color for ANSI red

Attributes

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

Background color for ANSI red

Background color for ANSI red

Attributes

Inherited from:
AnsiColor

color-cyan

final val CYAN: "\u001b[36m"

Foreground color for ANSI cyan

Foreground color for ANSI cyan

Attributes

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

Background color for ANSI cyan

Background color for ANSI cyan

Attributes

Inherited from:
AnsiColor

style-control

final val BOLD: "\u001b[1m"

ANSI bold

ANSI bold

Attributes

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

ANSI invisible

ANSI invisible

Attributes

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

Reset ANSI styles

Reset ANSI styles

Attributes

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

ANSI reversed

ANSI reversed

Attributes

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

ANSI underlines

ANSI underlines

Attributes

Inherited from:
AnsiColor

color-green

final val GREEN: "\u001b[32m"

Foreground color for ANSI green

Foreground color for ANSI green

Attributes

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

Background color for ANSI green

Background color for ANSI green

Attributes

Inherited from:
AnsiColor

color-yellow

final val YELLOW: "\u001b[33m"

Foreground color for ANSI yellow

Foreground color for ANSI yellow

Attributes

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

Background color for ANSI yellow

Background color for ANSI yellow

Attributes

Inherited from:
AnsiColor

color-white

final val WHITE: "\u001b[37m"

Foreground color for ANSI white

Foreground color for ANSI white

Attributes

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

Background color for ANSI white

Background color for ANSI white

Attributes

Inherited from:
AnsiColor

color-black

final val BLACK: "\u001b[30m"

Foreground color for ANSI black

Foreground color for ANSI black

Attributes

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

Background color for ANSI black

Background color for ANSI black

Attributes

Inherited from:
AnsiColor