From 98407b35ff477f372baa92bf582b90a961d4ad16 Mon Sep 17 00:00:00 2001 From: Joel Kronqvist Date: Wed, 27 Nov 2024 12:29:43 +0200 Subject: Added part of story & improved singing with multiple verses & hemingway distance --- src/scalevalapokalypsi/UI/StdinLineReader.scala | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/scalevalapokalypsi/UI/StdinLineReader.scala') 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 = -- cgit v1.2.3