From c633560dbd8b9703cd5eb8308def4b45efda0b7b Mon Sep 17 00:00:00 2001 From: Philipp Ossler Date: Tue, 3 Sep 2024 13:12:37 +0200 Subject: [PATCH] refactor: Simplify value comparator (cherry picked from commit 4f78808156a506b7bb63a7339298f480f6a0f4f5) --- .../feel/impl/interpreter/ValComparator.scala | 38 ++++--------------- 1 file changed, 8 insertions(+), 30 deletions(-) diff --git a/src/main/scala/org/camunda/feel/impl/interpreter/ValComparator.scala b/src/main/scala/org/camunda/feel/impl/interpreter/ValComparator.scala index 50900f53e..6d9e3b75e 100644 --- a/src/main/scala/org/camunda/feel/impl/interpreter/ValComparator.scala +++ b/src/main/scala/org/camunda/feel/impl/interpreter/ValComparator.scala @@ -49,43 +49,21 @@ class ValComparator(private val valueMapper: ValueMapper) { } private def compare(x: List[Val], y: List[Val]): ValBoolean = { - if (x.size != y.size) { - ValBoolean(false) - - } else { - val itemsAreEqual = x.zip(y).foldRight(true) { case ((x, y), listIsEqual) => - listIsEqual && { - compare(x, y) match { - case ValBoolean(itemIsEqual) => itemIsEqual - case _ => false - } - } - } - ValBoolean(itemsAreEqual) - } + ValBoolean( + x.size == y.size && x.zip(y).forall { case (itemX, itemY) => equals(itemX, itemY) } + ) } private def compare(x: Context, y: Context): ValBoolean = { val xVars = x.variableProvider.getVariables val yVars = y.variableProvider.getVariables - if (xVars.keys != yVars.keys) { - ValBoolean(false) - - } else { - val itemsAreEqual = xVars.keys.foldRight(true) { case (key, contextIsEqual) => - contextIsEqual && { - val xVal = valueMapper.toVal(xVars(key)) - val yVal = valueMapper.toVal(yVars(key)) + ValBoolean(xVars.keys == yVars.keys && xVars.keys.forall { key => + val xVal = valueMapper.toVal(xVars(key)) + val yVal = valueMapper.toVal(yVars(key)) - compare(xVal, yVal) match { - case ValBoolean(entryIsEqual) => entryIsEqual - case _ => false - } - } - } - ValBoolean(itemsAreEqual) - } + equals(xVal, yVal) + }) } }