visitFilterExpression method

  1. @override
dynamic visitFilterExpression(
  1. FilteredExpression node
)

Implementation

@override
dynamic visitFilterExpression(FilteredExpression node) {
  dynamic value;
  if (node.expression is Assignment) {
    (node.expression as Assignment).value.accept(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 = (node.expression as Assignment).value.accept(this);
    }
  } else {
    value = node.expression.accept(this);
  }

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