ifEsle node add regex match (#8007)

This commit is contained in:
Charlie.Wei
2024-09-06 17:44:09 +08:00
committed by GitHub
parent 2060db8e11
commit 01858e1caf
7 changed files with 23 additions and 2 deletions

View File

@@ -12,7 +12,7 @@ class Condition(BaseModel):
variable_selector: list[str]
comparison_operator: Literal[
# for string or array
"contains", "not contains", "start with", "end with", "is", "is not", "empty", "not empty",
"contains", "not contains", "start with", "end with", "is", "is not", "empty", "not empty", "regex match",
# for number
"=", "", ">", "<", "", "", "null", "not null"
]

View File

@@ -1,3 +1,4 @@
import re
from collections.abc import Sequence
from typing import Optional, cast
@@ -136,6 +137,8 @@ class IfElseNode(BaseNode):
return self._assert_null(actual_value)
elif comparison_operator == "not null":
return self._assert_not_null(actual_value)
elif comparison_operator == "regex match":
return self._assert_regex_match(actual_value, expected_value)
else:
raise ValueError(f"Invalid comparison operator: {comparison_operator}")
@@ -285,6 +288,21 @@ class IfElseNode(BaseNode):
return True
return False
def _assert_regex_match(self, actual_value: Optional[str], expected_value: str) -> bool:
"""
Assert empty
:param actual_value: actual value
:return:
"""
if actual_value is None:
return False
pattern = re.compile(expected_value)
regex_result = pattern.findall(actual_value)
if len(regex_result) > 0:
return True
return False
def _assert_not_empty(self, actual_value: Optional[str]) -> bool:
"""
Assert not empty