scala.Console

object Console extends DeprecatedConsole with AnsiColor

Implements functionality for printing Scala values on the terminal as well as reading specific values. Also defines constants for marking up text on ANSI terminals.

Value Members From scala.Console

def err: PrintStream

The default error, can be overridden by setErr

(defined at scala.Console)

def in: BufferedReader

The default input, can be overridden by setIn

(defined at scala.Console)

def out: PrintStream

The default output, can be overridden by setOut

(defined at scala.Console)

def print(obj: Any): Unit

Prints an object to out using its toString method.

  • obj
    • the object to print; may be null.

(defined at scala.Console)

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

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

  • text
    • the pattern for formatting the arguments.
  • args
    • the arguments used to instantiating the pattern.
  • Exceptions thrown
    • java.lang.IllegalArgumentException if there was a problem with the format string or arguments

(defined at scala.Console)

def println(x: Any): Unit

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

  • x
    • the object to print.

(defined at scala.Console)

def setErrDirect(err: PrintStream): Unit

  • Attributes
    • protected
  • Definition Classes
    • Console → DeprecatedConsole

(defined at scala.Console)

def setInDirect(in: BufferedReader): Unit

  • Attributes
    • protected
  • Definition Classes
    • Console → DeprecatedConsole

(defined at scala.Console)

def setOutDirect(out: PrintStream): Unit

Internal usage only.

  • Attributes
    • protected
  • Definition Classes
    • Console → DeprecatedConsole

(defined at scala.Console)

def withErr[T](err: OutputStream)(thunk: ⇒ T): T

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

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

(defined at scala.Console)

def withErr[T](err: PrintStream)(thunk: ⇒ T): T

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

  • 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) { println("This goes to default _out_") }

(defined at scala.Console)

def withIn[T](in: InputStream)(thunk: ⇒ T): T

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

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

(defined at scala.Console)

def withIn[T](reader: Reader)(thunk: ⇒ T): T

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

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

(defined at scala.Console)

def withOut[T](out: OutputStream)(thunk: ⇒ T): T

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

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

(defined at scala.Console)

def withOut[T](out: PrintStream)(thunk: ⇒ T): T

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

  • 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_") }

(defined at scala.Console)

Deprecated Value Members From scala.DeprecatedConsole

def readLine(text: String, args: Any*): String

  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use the method in scala.io.StdIn

(defined at scala.DeprecatedConsole)

def readf(format: String): List[Any]

  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use the method in scala.io.StdIn

(defined at scala.DeprecatedConsole)

def readf1(format: String): Any

  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use the method in scala.io.StdIn

(defined at scala.DeprecatedConsole)

def readf2(format: String): (Any, Any)

  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use the method in scala.io.StdIn

(defined at scala.DeprecatedConsole)

def readf3(format: String): (Any, Any, Any)

  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use the method in scala.io.StdIn

(defined at scala.DeprecatedConsole)

def setErr(err: OutputStream): Unit

Sets the default error stream.

  • err
    • the new error stream.
  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use withErr

(defined at scala.DeprecatedConsole)

def setErr(err: PrintStream): Unit

Sets the default error stream.

  • err
    • the new error stream.
  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use withErr

(defined at scala.DeprecatedConsole)

def setIn(in: InputStream): Unit

Sets the default input stream.

  • in
    • the new input stream.
  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use withIn

(defined at scala.DeprecatedConsole)

def setIn(reader: Reader): Unit

Sets the default input stream.

  • reader
    • specifies the new input stream.
  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use withIn

(defined at scala.DeprecatedConsole)

def setOut(out: OutputStream): Unit

Sets the default output stream.

  • out
    • the new output stream.
  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use withOut

(defined at scala.DeprecatedConsole)

def setOut(out: PrintStream): Unit

Sets the default output stream.

  • out
    • the new output stream.
  • Definition Classes
    • DeprecatedConsole
  • Annotations
    • @ deprecated
  • Deprecated
    • (Since version 2.11.0) Use withOut (defined at scala.DeprecatedConsole)

Full Source:

/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2003-2013, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |    http://scala-lang.org/               **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */

package scala

import java.io.{ BufferedReader, InputStream, InputStreamReader, OutputStream, PrintStream, Reader }
import scala.io.{ AnsiColor, StdIn }
import scala.util.DynamicVariable

/** Implements functionality for
 *  printing Scala values on the terminal as well as reading specific values.
 *  Also defines constants for marking up text on ANSI terminals.
 *
 *  @author  Matthias Zenger
 *  @version 1.0, 03/09/2003
 */
object Console extends DeprecatedConsole with AnsiColor {
  private val outVar = new DynamicVariable[PrintStream](java.lang.System.out)
  private val errVar = new DynamicVariable[PrintStream](java.lang.System.err)
  private val inVar  = new DynamicVariable[BufferedReader](
    new BufferedReader(new InputStreamReader(java.lang.System.in)))

  protected def setOutDirect(out: PrintStream): Unit  = outVar.value = out
  protected def setErrDirect(err: PrintStream): Unit  = errVar.value = err
  protected def setInDirect(in: BufferedReader): Unit = inVar.value = in

  /** The default output, can be overridden by `setOut` */
  def out = outVar.value
  /** The default error, can be overridden by `setErr` */
  def err = errVar.value
  /** The default input, can be overridden by `setIn` */
  def in = inVar.value

  /** Sets the default output stream for the duration
   *  of execution of one thunk.
   *
   *  @example {{{
   *  withOut(Console.err) { println("This goes to default _error_") }
   *  }}}
   *
   *  @param out the new output stream.
   *  @param thunk the code to execute with
   *               the new output stream active
   *  @return the results of `thunk`
   *  @see `withOut[T](out:OutputStream)(thunk: => T)`
   */
  def withOut[T](out: PrintStream)(thunk: =>T): T =
    outVar.withValue(out)(thunk)

  /** Sets the default output stream for the duration
   *  of execution of one thunk.
   *
   *  @param out the new output stream.
   *  @param thunk the code to execute with
   *               the new output stream active
   *  @return the results of `thunk`
   *  @see `withOut[T](out:PrintStream)(thunk: => T)`
   */
  def withOut[T](out: OutputStream)(thunk: =>T): T =
    withOut(new PrintStream(out))(thunk)

  /** Set the default error stream for the duration
   *  of execution of one thunk.
   *  @example {{{
   *  withErr(Console.out) { println("This goes to default _out_") }
   *  }}}
   *
   *  @param err the new error stream.
   *  @param thunk the code to execute with
   *               the new error stream active
   *  @return the results of `thunk`
   *  @see `withErr[T](err:OutputStream)(thunk: =>T)`
   */
  def withErr[T](err: PrintStream)(thunk: =>T): T =
    errVar.withValue(err)(thunk)

  /** Sets the default error stream for the duration
   *  of execution of one thunk.
   *
   *  @param err the new error stream.
   *  @param thunk the code to execute with
   *               the new error stream active
   *  @return the results of `thunk`
   *  @see `withErr[T](err:PrintStream)(thunk: =>T)`
   */
  def withErr[T](err: OutputStream)(thunk: =>T): T =
    withErr(new PrintStream(err))(thunk)

  /** Sets the default input stream for the duration
   *  of execution of one thunk.
   *
   *  @example {{{
   *  val someFile:Reader = openFile("file.txt")
   *  withIn(someFile) {
   *    // Reads a line from file.txt instead of default input
   *    println(readLine)
   *  }
   *  }}}
   *
   *  @param thunk the code to execute with
   *               the new input stream active
   *
   * @return the results of `thunk`
   * @see `withIn[T](in:InputStream)(thunk: =>T)`
   */
  def withIn[T](reader: Reader)(thunk: =>T): T =
    inVar.withValue(new BufferedReader(reader))(thunk)

  /** Sets the default input stream for the duration
   *  of execution of one thunk.
   *
   *  @param in the new input stream.
   *  @param thunk the code to execute with
   *               the new input stream active
   * @return the results of `thunk`
   * @see `withIn[T](reader:Reader)(thunk: =>T)`
   */
  def withIn[T](in: InputStream)(thunk: =>T): T =
    withIn(new InputStreamReader(in))(thunk)

  /** Prints an object to `out` using its `toString` method.
   *
   *  @param obj the object to print; may be null.
   */
  def print(obj: Any) {
    out.print(if (null == obj) "null" else obj.toString())
  }

  /** 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.
   */
  def flush() { out.flush() }

  /** Prints a newline character on the default output.
   */
  def println() { out.println() }

  /** Prints out an object to the default output, followed by a newline character.
   *
   *  @param x the object to print.
   */
  def println(x: Any) { out.println(x) }

  /** 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
   *  <a href="" target="contentFrame" class="java/util/Formatter">
   *  `java.util.Formatter`</a>.
   *
   *  @param text the pattern for formatting the arguments.
   *  @param args the arguments used to instantiating the pattern.
   *  @throws java.lang.IllegalArgumentException if there was a problem with the format string or arguments
   */
  def printf(text: String, args: Any*) { out.print(text format (args : _*)) }
}

private[scala] abstract class DeprecatedConsole {
  self: Console.type =>

  /** Internal usage only. */
  protected def setOutDirect(out: PrintStream): Unit
  protected def setErrDirect(err: PrintStream): Unit
  protected def setInDirect(in: BufferedReader): Unit

  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readBoolean(): Boolean                     = StdIn.readBoolean()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readByte(): Byte                           = StdIn.readByte()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readChar(): Char                           = StdIn.readChar()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readDouble(): Double                       = StdIn.readDouble()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readFloat(): Float                         = StdIn.readFloat()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readInt(): Int                             = StdIn.readInt()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readLine(): String                         = StdIn.readLine()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readLine(text: String, args: Any*): String = StdIn.readLine(text, args: _*)
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readLong(): Long                           = StdIn.readLong()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readShort(): Short                         = StdIn.readShort()
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readf(format: String): List[Any]           = StdIn.readf(format)
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readf1(format: String): Any                = StdIn.readf1(format)
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readf2(format: String): (Any, Any)         = StdIn.readf2(format)
  @deprecated("Use the method in scala.io.StdIn", "2.11.0") def readf3(format: String): (Any, Any, Any)    = StdIn.readf3(format)

  /** Sets the default output stream.
   *
   *  @param out the new output stream.
   */
  @deprecated("Use withOut", "2.11.0") def setOut(out: PrintStream): Unit = setOutDirect(out)

  /** Sets the default output stream.
   *
   *  @param out the new output stream.
   */
  @deprecated("Use withOut", "2.11.0") def setOut(out: OutputStream): Unit = setOutDirect(new PrintStream(out))

  /** Sets the default error stream.
   *
   *  @param err the new error stream.
   */
  @deprecated("Use withErr", "2.11.0") def setErr(err: PrintStream): Unit = setErrDirect(err)

  /** Sets the default error stream.
   *
   *  @param err the new error stream.
   */
  @deprecated("Use withErr", "2.11.0") def setErr(err: OutputStream): Unit = setErrDirect(new PrintStream(err))

  /** Sets the default input stream.
   *
   *  @param reader specifies the new input stream.
   */
  @deprecated("Use withIn", "2.11.0") def setIn(reader: Reader): Unit = setInDirect(new BufferedReader(reader))

  /** Sets the default input stream.
   *
   *  @param in the new input stream.
   */
  @deprecated("Use withIn", "2.11.0") def setIn(in: InputStream): Unit = setInDirect(new BufferedReader(new InputStreamReader(in)))
}