visitFilterAsync method

  1. @override
Future visitFilterAsync(
  1. Filter node
)

Implementation

@override
Future<dynamic> visitFilterAsync(Filter node) async {
  final filterFunction = context.getFilter(node.name.name);
  if (filterFunction == null) {
    throw Exception('Undefined filter: ${node.name.name}');
  }
  final args = <dynamic>[];
  final namedArgs = <String, dynamic>{};

  for (final arg in node.arguments) {
    if (arg is NamedArgument) {
      namedArgs[arg.identifier.name] = await arg.value.acceptAsync(this);
    } else {
      args.add(await arg.acceptAsync(this));
    }
  }

  return (value) => filterFunction(value, args, namedArgs);
}