public LegacyFilter(string name, IEnumerable <IFilterExpression> includeRules, IEnumerable <IFilterExpression> excludeRules) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (String.IsNullOrWhiteSpace(name)) { throw new ArgumentException("Value must not be null or whitespace", nameof(name)); } Name = name; m_IncludeRules = includeRules?.ToImmutableList() ?? throw new ArgumentNullException(nameof(includeRules)); m_ExcludeRules = excludeRules?.ToImmutableList() ?? throw new ArgumentNullException(nameof(excludeRules)); var rootExpression = new AndFilterExpression( new OrFilterExpression(includeRules), new NotFilterExpression(new OrFilterExpression(excludeRules))); m_Evaluator = new ExpressionEvaluationVisitor(rootExpression); }
public bool Visit(AndFilterExpression expression, IFileItem parameter) { return(expression.Expressions.All(ex => ex.Accept(this, parameter))); }