diff --git a/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala b/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala index 6db2729fc..94ff8c532 100644 --- a/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala +++ b/src/main/scala/org/camunda/feel/impl/builtin/StringBuiltinFunctions.scala @@ -45,7 +45,8 @@ object StringBuiltinFunctions { "extract" -> List(extractFunction), "trim" -> List(trimFunction), "uuid" -> List(uuidFunction), - "to base64" -> List(toBase64Function) + "to base64" -> List(toBase64Function), + "is blank" -> List(isBlankFunction) ) private def substringFunction = builtinFunction( @@ -287,4 +288,11 @@ object StringBuiltinFunctions { } ) + private def isBlankFunction = builtinFunction( + params = List("string"), + invoke = {case List(ValString(string)) => + ValBoolean(string.isBlank) + } + ) + } diff --git a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala index 422b18c52..42e69272f 100644 --- a/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala +++ b/src/test/scala/org/camunda/feel/impl/builtin/BuiltinStringFunctionsTest.scala @@ -195,4 +195,32 @@ class BuiltinStringFunctionsTest evaluateExpression(""" to base64(value: "Camunda") """) should returnResult("Q2FtdW5kYQ==") } + + "A is blank() function" should "return true if the string contains only whitespace" in { + evaluateExpression( + expression = """ is blank("") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank(" ") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank("\t\n\r\f") """ + ) should returnResult(true) + + evaluateExpression( + expression = """ is blank(string: "") """ + ) should returnResult(true) + } + + it should "return false if the string contains only non-whitespace characters" in { + evaluateExpression( + expression = """ is blank("hello world") """ + ) should returnResult(false) + + evaluateExpression( + expression = """ is blank(" hello world ") """ + ) should returnResult(false) + } }