execute method

Future<bool> execute(
  1. Observable? observable
)

Implementation

Future<bool> execute(Observable? observable) async
{
  bool ok = true;
  if (observable == null) return ok;

  // get expression
  String? expression = (observable.isEval) ? observable.value : (observable.signature ?? observable.value);
  if (S.isNullOrEmpty(expression)) return ok;

  // replace 'this' pointer with the parent model id
  if (expression!.contains(thisDot)) expression = expression.replaceAll(thisDot, "${model.id}.");

  // get variables from observable
  Map<String?, dynamic> variables = observable.getVariables();

  // evaluate the expression
  expression = await evaluate(expression, variables);

  // get event strings
  List<String> events = getEvents(expression);

  // process each event
  for (String event in events)
  {
    dynamic ok = await executeEvent(event, variables: variables);
    if (ok == false) break;
  }

  return ok;
}