run method

Future<ASTValue?> run(
  1. String command,
  2. List parameters, {
  3. Map<String, dynamic>? fields,
})

Runs a formula command with parameters.

Implementation

Future<ASTValue?> run(String command, List parameters,
    {Map<String, dynamic>? fields}) async {
  var vm = (await getVM())!;

  var runner = _createRunner(vm);

  var className = await getFormulaClassName();

  if (className.isEmpty) {
    throw StateError("A formula needs a class ending with 'Formula'.");
  }

  var classInstanceFields = _toClassInstanceFields(fields);

  FutureOr<ASTValue>? result;

  if ((await runner.getClassMethod('', className, command, parameters)) !=
      null) {
    result = runner.executeClassMethod('', className, command,
        positionalParameters: parameters,
        classInstanceFields: classInstanceFields);
  } else if ((await runner.getClassMethod('', className, command)) != null) {
    result = runner.executeClassMethod('', className, command,
        classInstanceFields: classInstanceFields);
  }

  if (result == null) return null;

  var resultValue = await result;
  return resultValue;
}