Browse Source

ifEsle node add regex match (#8007)

tags/0.8.0
Charlie.Wei 1 year ago
parent
commit
01858e1caf
No account linked to committer's email address

+ 1
- 1
api/core/workflow/nodes/if_else/entities.py View File

variable_selector: list[str] variable_selector: list[str]
comparison_operator: Literal[ comparison_operator: Literal[
# for string or array # 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 # for number
"=", "≠", ">", "<", "≥", "≤", "null", "not null" "=", "≠", ">", "<", "≥", "≤", "null", "not null"
] ]

+ 18
- 0
api/core/workflow/nodes/if_else/if_else_node.py View File

import re
from collections.abc import Sequence from collections.abc import Sequence
from typing import Optional, cast from typing import Optional, cast


return self._assert_null(actual_value) return self._assert_null(actual_value)
elif comparison_operator == "not null": elif comparison_operator == "not null":
return self._assert_not_null(actual_value) return self._assert_not_null(actual_value)
elif comparison_operator == "regex match":
return self._assert_regex_match(actual_value, expected_value)
else: else:
raise ValueError(f"Invalid comparison operator: {comparison_operator}") raise ValueError(f"Invalid comparison operator: {comparison_operator}")


return True return True
return False 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: def _assert_not_empty(self, actual_value: Optional[str]) -> bool:
""" """
Assert not empty Assert not empty

+ 0
- 1
web/app/components/app/configuration/config-var/index.tsx View File

} as InputVar } as InputVar
})() })()
const updatePromptVariableItem = (payload: InputVar) => { const updatePromptVariableItem = (payload: InputVar) => {
console.log(payload)
const newPromptVariables = produce(promptVariables, (draft) => { const newPromptVariables = produce(promptVariables, (draft) => {
const { variable, label, type, ...rest } = payload const { variable, label, type, ...rest } = payload
draft[currIndex] = { draft[currIndex] = {

+ 1
- 0
web/app/components/workflow/nodes/if-else/types.ts View File

lessThanOrEqual = '≤', lessThanOrEqual = '≤',
isNull = 'is null', isNull = 'is null',
isNotNull = 'is not null', isNotNull = 'is not null',
regexMatch = 'regex match',
} }


export type Condition = { export type Condition = {

+ 1
- 0
web/app/components/workflow/nodes/if-else/utils.ts View File

ComparisonOperator.isNot, ComparisonOperator.isNot,
ComparisonOperator.empty, ComparisonOperator.empty,
ComparisonOperator.notEmpty, ComparisonOperator.notEmpty,
ComparisonOperator.regexMatch,
] ]
case VarType.number: case VarType.number:
return [ return [

+ 1
- 0
web/i18n/en-US/workflow.ts View File

'not empty': 'is not empty', 'not empty': 'is not empty',
'null': 'is null', 'null': 'is null',
'not null': 'is not null', 'not null': 'is not null',
'regex match': 'regex match',
}, },
enterValue: 'Enter value', enterValue: 'Enter value',
addCondition: 'Add Condition', addCondition: 'Add Condition',

+ 1
- 0
web/i18n/zh-Hans/workflow.ts View File

'not empty': '不为空', 'not empty': '不为空',
'null': '空', 'null': '空',
'not null': '不为空', 'not null': '不为空',
'regex match': '正则匹配',
}, },
enterValue: '输入值', enterValue: '输入值',
addCondition: '添加条件', addCondition: '添加条件',

Loading…
Cancel
Save