executeScript static method

dynamic executeScript(
  1. String script,
  2. Map<String, dynamic> context, [
  3. Map<String, dynamic>? params
])

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);
  }
}