visitFilter method

  1. @override
dynamic visitFilter(
  1. Filter node
)

Implementation

@override
dynamic visitFilter(Filter node) {
  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] = arg.value.accept(this);
    } else {
      args.add(arg.accept(this));
    }
  }

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