Kaynağa Gözat

ifEsle node add regex match (#8007)

tags/0.8.0
Charlie.Wei 1 yıl önce
ebeveyn
işleme
01858e1caf
No account linked to committer's email address

+ 1
- 1
api/core/workflow/nodes/if_else/entities.py Dosyayı Görüntüle

@@ -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"
]

+ 18
- 0
api/core/workflow/nodes/if_else/if_else_node.py Dosyayı Görüntüle

@@ -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

+ 0
- 1
web/app/components/app/configuration/config-var/index.tsx Dosyayı Görüntüle

@@ -88,7 +88,6 @@ const ConfigVar: FC<IConfigVarProps> = ({ promptVariables, readonly, onPromptVar
} as InputVar
})()
const updatePromptVariableItem = (payload: InputVar) => {
console.log(payload)
const newPromptVariables = produce(promptVariables, (draft) => {
const { variable, label, type, ...rest } = payload
draft[currIndex] = {

+ 1
- 0
web/app/components/workflow/nodes/if-else/types.ts Dosyayı Görüntüle

@@ -28,6 +28,7 @@ export enum ComparisonOperator {
lessThanOrEqual = '≤',
isNull = 'is null',
isNotNull = 'is not null',
regexMatch = 'regex match',
}

export type Condition = {

+ 1
- 0
web/app/components/workflow/nodes/if-else/utils.ts Dosyayı Görüntüle

@@ -30,6 +30,7 @@ export const getOperators = (type?: VarType) => {
ComparisonOperator.isNot,
ComparisonOperator.empty,
ComparisonOperator.notEmpty,
ComparisonOperator.regexMatch,
]
case VarType.number:
return [

+ 1
- 0
web/i18n/en-US/workflow.ts Dosyayı Görüntüle

@@ -412,6 +412,7 @@ const translation = {
'not empty': 'is not empty',
'null': 'is null',
'not null': 'is not null',
'regex match': 'regex match',
},
enterValue: 'Enter value',
addCondition: 'Add Condition',

+ 1
- 0
web/i18n/zh-Hans/workflow.ts Dosyayı Görüntüle

@@ -412,6 +412,7 @@ const translation = {
'not empty': '不为空',
'null': '空',
'not null': '不为空',
'regex match': '正则匹配',
},
enterValue: '输入值',
addCondition: '添加条件',

Loading…
İptal
Kaydet