From 4e28521ec0fd53c88622948d840f5a59939d5e00 Mon Sep 17 00:00:00 2001 From: sadellie Date: Thu, 20 Jul 2023 22:25:15 +0300 Subject: [PATCH] Decimal percentages closes #68 --- .../src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt | 4 ++-- .../test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt index 9c45dc4d..03da1154 100644 --- a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt +++ b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt @@ -197,7 +197,7 @@ class Tokenizer(private val streamOfTokens: String) { } private fun List.getNumberOrExpressionBefore(pos: Int): List { - val digits = Token.Digit.all.map { it[0] } + val digits = Token.Digit.allWithDot.map { it[0] } val tokenInFront = this[pos - 1] @@ -205,7 +205,7 @@ class Tokenizer(private val streamOfTokens: String) { if (tokenInFront.all { it in digits }) return listOf(tokenInFront) // Not just a number. Probably expression in brackets. - if (tokenInFront != Token.Operator.rightBracket) throw Exception("Unexpected token before the percentage") + if (tokenInFront != Token.Operator.rightBracket) throw Exception("Unexpected token before percentage") // Start walking left until we get balanced brackets var cursor = pos - 1 diff --git a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt index 4a3f3ffa..fd8f8331 100644 --- a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt +++ b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt @@ -120,5 +120,9 @@ class FixLexiconTest { ) assertLex("(80÷100)×(80÷100)", "80%80%") + + assertLex("10+(2.0÷100×(10))", "10+2.0%") + + assertLex("10+(2.÷100×(10))", "10+2.%") } }