add support for a masked readline

This commit is contained in:
softprops
2011-10-13 20:42:39 -04:00
parent dbe7eb8d24
commit 762bac2975
+8 -5
View File
@@ -10,9 +10,12 @@ package sbt
abstract class JLine extends LineReader
{
protected[this] val reader: ConsoleReader
def readLine(prompt: String) = JLine.withJLine { unsynchronizedReadLine(prompt) }
private[this] def unsynchronizedReadLine(prompt: String) =
reader.readLine(prompt) match
def readLine(prompt: String, mask: Option[Char] = None) = JLine.withJLine { unsynchronizedReadLine(prompt, mask) }
private[this] def unsynchronizedReadLine(prompt: String, mask: Option[Char]) =
(mask match {
case Some(m) => reader.readLine(prompt, m)
case None => reader.readLine(prompt)
}) match
{
case null => None
case x => Some(x.trim)
@@ -59,7 +62,7 @@ private object JLine
trait LineReader
{
def readLine(prompt: String): Option[String]
def readLine(prompt: String, mask: Option[Char] = None): Option[String]
}
final class FullReader(historyPath: Option[File], complete: Parser[_]) extends JLine
{
@@ -81,4 +84,4 @@ class SimpleReader private[sbt] (historyPath: Option[File]) extends JLine
object SimpleReader extends JLine
{
protected[this] val reader = JLine.createReader()
}
}