executeScript static method
dynamic
executeScript(])
Thực thi script với context và params
script - Script string cần thực thi (format: "functionName(param1,param2)")
context - Context hiện tại (TreeNode, state, etc.)
params - Tham số bổ sung
Trả về kết quả của function hoặc throw error nếu không tìm thấy
Implementation
static dynamic executeScript(String script, Map<String, dynamic> context, [Map<String, dynamic>? params]) {
if (script.contains('?') && script.contains(':')) {
return _evaluateCondition(script, context);
}
final match = RegExp(r'^(\w+)\((.*)\)$').firstMatch(script);
if (match == null) {
throw BaseError('Invalid script format: $script');
}
String functionName = match.group(1)!;
String paramString = match.group(2)!;
if (!_functionRegistry.containsKey(functionName)) {
throw BaseError('Function not found: $functionName');
}
Function function = _functionRegistry[functionName]!;
// Parse parameters
List<String> parameters = [];
if (paramString.isNotEmpty) {
parameters = paramString.split(',').map((p) => p.trim().replaceAll('"', '')).toList();
}
// Thực thi function với context và parameters
try {
return Function.apply(function, [context, parameters, params]);
} catch (e) {
throw BaseError('Script execution error: $e', script);
}
}