visitFilterExpressionAsync method
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;
}