visitFilterExpressionAsync method

  1. @override
Future visitFilterExpressionAsync(
  1. FilteredExpression node
)

Implementation

@override
Future<dynamic> visitFilterExpressionAsync(FilteredExpression node) async {
  dynamic value;
  if (node.expression is Assignment) {
    await (node.expression as Assignment).value.acceptAsync(this);
    if ((node.expression as Assignment).value is Literal) {
      value = ((node.expression as Assignment).value as Literal).value;
    } else if ((node.expression as Assignment).value is Identifier) {
      value = context.getVariable(
          ((node.expression as Assignment).value as Identifier).name);
    } else {
      value = await (node.expression as Assignment).value.acceptAsync(this);
    }
  } else {
    value = await node.expression.acceptAsync(this);
  }

  for (final filter in node.filters) {
    final filterFunction = await filter.acceptAsync(this);
    value = filterFunction(value);
  }
  return value;
}