diff --git a/core/src/main/scala/simpleivr/Ivr.scala b/core/src/main/scala/simpleivr/Ivr.scala index 34c0fe6..b8982c2 100644 --- a/core/src/main/scala/simpleivr/Ivr.scala +++ b/core/src/main/scala/simpleivr/Ivr.scala @@ -62,7 +62,7 @@ class Ivr(sayables: Sayables) { case (acc, x) => def sayDigitOrDigits(n: Int) = numberWords(n) & (if (n == 1) `digit` else `digits`) - val str = acc + x.filter(_ != '#').mkString + val str = acc + x.filter(_ != DTMF.`#`).mkString val validated = if ((min == max) && (str.length != min)) Left(`You must enter ` & sayDigitOrDigits(min)) else if (str.length < min) Left(`You must enter at least` & sayDigitOrDigits(min)) diff --git a/core/src/main/scala/simpleivr/Sayables.scala b/core/src/main/scala/simpleivr/Sayables.scala index 3c0017c..19eb71e 100644 --- a/core/src/main/scala/simpleivr/Sayables.scala +++ b/core/src/main/scala/simpleivr/Sayables.scala @@ -101,7 +101,13 @@ abstract class Sayables(val audioFileBackend: AudioFileBackend) extends Speaks { } } - def digitWords(s: String): Sayable = Sayable.Many(s.toSeq.map(c => numberWords(c - '0'))) + def digitWords(digitString: String): Sayable = + Sayable.Many( + digitString + .map(_ - '0') + .filter(d => d >= 0 && d <= 9) + .map(numberWords) + ) def dtmfWord(c: DTMF): Sayable = c match { case DTMF.`#` => `pound` diff --git a/version.sbt b/version.sbt index 01120e3..b6bfa82 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -ThisBuild / version := "0.5.2" +ThisBuild / version := "0.5.2.1"