scala.tools.nsc.interpreter.SimpleReader.scala Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scala-compiler Show documentation
Show all versions of scala-compiler Show documentation
Compiler for the SubScript extension of the Scala Programming Language
The newest version!
/* NSC -- new Scala compiler
* Copyright 2005-2013 LAMP/EPFL
* @author Stepan Koltsov
*/
package scala
package tools.nsc
package interpreter
import java.io.{ BufferedReader }
import session.NoHistory
/** Reads using standard JDK API */
class SimpleReader(
in: BufferedReader,
out: JPrintWriter,
val interactive: Boolean)
extends InteractiveReader
{
val history = NoHistory
val completion = NoCompletion
def reset() = ()
def redrawLine() = ()
// InteractiveReader internals
protected def readOneLine(prompt: String): String = {
echo(prompt)
readOneLine()
}
protected def readOneKey(prompt: String) = sys.error("No char-based input in SimpleReader")
protected def readOneLine(): String = in.readLine()
protected def echo(s: String): Unit = if (interactive) {
out.print(s)
out.flush()
}
}
object SimpleReader {
def defaultIn = Console.in
def defaultOut = new JPrintWriter(Console.out)
def apply(in: BufferedReader = defaultIn, out: JPrintWriter = defaultOut, interactive: Boolean = true): SimpleReader =
new SimpleReader(in, out, interactive)
}
// pretend we are a console for verbose purposes
trait EchoReader extends SimpleReader {
// if there is more input, then maybe echo the prompt and the input
override def readOneLine(prompt: String) = {
val input = readOneLine()
if (input != null) echo(f"$prompt$input%n")
input
}
}