diff options
Diffstat (limited to 'src/scalevalapokalypsi/UI/StdinLineReader.scala')
-rw-r--r-- | src/scalevalapokalypsi/UI/StdinLineReader.scala | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/scalevalapokalypsi/UI/StdinLineReader.scala b/src/scalevalapokalypsi/UI/StdinLineReader.scala index 4d0f778..1509f75 100644 --- a/src/scalevalapokalypsi/UI/StdinLineReader.scala +++ b/src/scalevalapokalypsi/UI/StdinLineReader.scala @@ -12,18 +12,22 @@ class StdinLineReader: private var nextLine: Future[String] = Future.failed(Exception()) - /** Returns a new line of input if there are any. */ - def newLine(): Option[String] = + /** Returns a new line of input as a Right when there are any. + * If there is no new line due to EOF, returns Left(true), + * if there is no new line due to some other error, returns Left(false) + */ + def newLine(): Either[Boolean, String] = this.nextLine.value match case Some(Success(s)) => - if s.contains("\u0000") then - println("End of stream!") - this.startReading() - Some(s) + if s == null then + Left(true) + else + this.startReading() + Right(s) case Some(Failure(e)) => this.startReading() - None - case None => None + Left(false) + case None => Left(false) /** Discards the line that is currently being read and restarts reading */ def startReading(): Unit = |