public void AddFilterSymbolToCurrentExpression(FilterSymbol filter) { _liquidExpressionStack.Peek().Data.AddFilterSymbol(filter); }
public void AddFilterSymbolToLastExpression(FilterSymbol filter) { _lastExpression.Data.AddFilterSymbol(filter); }
private static IFilterExpression InstantiateFilter(ITemplateContext templateContext, FilterSymbol filterSymbol) { var filterType = templateContext.SymbolTableStack.LookupFilterType(filterSymbol.Name); if (filterType == null) { //TODO: make this return an error filter or something? //throw new Exception("Invalid filter: " + filterSymbol.Name); //return new Tuple<String, IFilterExpression>(filterSymbol.Name, null); return null; } var expressionConstants = filterSymbol.Args.Select(x => LiquidExpressionEvaluator.Eval(x, templateContext)).ToList(); //var expressionConstants = filterSymbol.Args.Select(x => x.Eval(templateContext, new List<Option<IExpressionConstant>>())).ToList(); // TODO: Handle the error if any //return FilterFactory.InstantiateFilter(filterSymbol.Name, filterType, expressionConstants.Select(x => x.IsSuccess? x.SuccessResult)); if (expressionConstants.Any(x => x.IsError)) { //return null; // eval-ing a constant failed. throw new Exception(String.Join("," ,expressionConstants.Where(x => x.IsError).Select(x => x.ErrorResult.Message))); } return FilterFactory.InstantiateFilter(filterSymbol.Name, filterType, expressionConstants.Select(x => x.SuccessResult)); }
public void AddFilterSymbol(FilterSymbol filterSymbol) { _filterSymbols.Add(filterSymbol); }
public void AddFilterSymbol(FilterSymbol filterSymbol) { _filterSymbols.Add(filterSymbol); }