public static IEnumerable <Violation> SubstringIndexValidationDelegate(CST.OAT.Rule rule, Clause clause)
 {
     if (clause.Data?.Count == null || clause.Data?.Count == 0)
     {
         yield return(new Violation(string.Format(Strings.Get("Err_ClauseNoData"), rule.Name, clause.Label ?? rule.Clauses.IndexOf(clause).ToString(CultureInfo.InvariantCulture)), rule, clause));
     }
     if (clause.DictData != null && clause.DictData?.Count > 0)
     {
         yield return(new Violation(string.Format(Strings.Get("Err_ClauseDictDataUnexpected"), rule.Name, clause.Label ?? rule.Clauses.IndexOf(clause).ToString(CultureInfo.InvariantCulture), clause.Operation.ToString()), rule, clause));
     }
 }
示例#2
0
        public IEnumerable <Violation> ScopedRegexValidationDelegate(CST.OAT.Rule rule, Clause clause)
        {
            if (rule is null)
            {
                yield return(new Violation($"Rule is null", new CST.OAT.Rule("RuleWasNull")));

                yield break;
            }
            if (clause is null)
            {
                yield return(new Violation($"Rule {rule.Name} has a null clause", rule));

                yield break;
            }
            if (Analyzer is null)
            {
                yield return(new Violation($"Rule {rule.Name} Clause {clause.Label ?? rule.Clauses.IndexOf(clause).ToString(CultureInfo.InvariantCulture)} ScopedRegexClause requires Analyzer be set.", rule, clause));
            }
            if (clause is ScopedRegexClause src)
            {
                if (!src.Data?.Any() ?? true)
                {
                    yield return(new Violation($"Rule {rule.Name} Clause {clause.Label ?? rule.Clauses.IndexOf(clause).ToString(CultureInfo.InvariantCulture)} Must provide some regexes as data.", rule, clause));

                    yield break;
                }
                foreach (var datum in src.Data ?? new List <string>())
                {
                    if (regexEngine.StringToRegex(datum, RegexOptions.None) is null)
                    {
                        yield return(new Violation($"Regex {datum} in Rule {rule.Name} Clause {clause.Label ?? rule.Clauses.IndexOf(clause).ToString(CultureInfo.InvariantCulture)} is not a valid regex.", rule, clause));
                    }
                }
            }
            else
            {
                yield return(new Violation($"Rule {rule.Name ?? "Null Rule Name"} clause {clause.Label ?? rule.Clauses.IndexOf(clause).ToString(CultureInfo.InvariantCulture)} is not a ScopedRegexClause", rule, clause));
            }
        }