Exemplo n.º 1
0
        public static ConditionMatchResult TestConditionMatches(IConditionsProperties rule, Replacements replacements, out Match lastConditionMatch)
        {
            var conditionMatchResult = new ConditionMatchResult();
            bool conditionMatches;
            lastConditionMatch = null;

            var conditionLogicalGrouping = rule.ConditionLogicalGrouping.HasValue
                ? rule.ConditionLogicalGrouping.Value
                : LogicalGrouping.MatchAll;

            conditionMatchResult.LogincalGrouping = conditionLogicalGrouping;

            if (conditionLogicalGrouping == LogicalGrouping.MatchAll)
            {
                foreach (var condition in rule.Conditions)
                {
                    var conditionMatched = TestConditionMatch(replacements, condition, lastConditionMatch);
                    var conditionMatch = conditionMatched.Match;
                    var conditionInput = conditionMatched.ConditionInput;

                    conditionMatches = conditionMatch.Success;

                    if (condition.CheckIfInputString != null && condition.CheckIfInputString.Value == CheckIfInputString.DoesNotMatchThePattern)
                    {
                        conditionMatches = !conditionMatches;
                    }

                    if (conditionMatches)
                    {
                        lastConditionMatch = conditionMatch;
                        conditionMatchResult.MatchedConditions.Add(new MatchedCondition(condition, conditionInput));
                        conditionMatchResult.Matched = true;
                    }
                }
            }
            else
            {
                foreach (var condition in rule.Conditions)
                {
                    var conditionMatched = TestConditionMatch(replacements, condition);
                    var conditionMatch = conditionMatched.Match;
                    var conditionInput = conditionMatched.ConditionInput;

                    conditionMatches = conditionMatch.Success;

                    if (condition.CheckIfInputString != null && condition.CheckIfInputString.Value == CheckIfInputString.DoesNotMatchThePattern)
                    {
                        conditionMatches = !conditionMatches;
                    }

                    if (!conditionMatches) continue;

                    conditionMatchResult.MatchedConditions.Add(new MatchedCondition(condition, conditionInput));
                    lastConditionMatch = conditionMatch;
                    conditionMatchResult.Matched = true;

                    break;
                }
            }

            return conditionMatchResult;
        }
Exemplo n.º 2
0
        public static ConditionMatchResult TestConditionMatches(IConditionsProperties rule, Replacements replacements, out Match lastConditionMatch)
        {
            var  conditionMatchResult = new ConditionMatchResult();
            bool conditionMatches;

            lastConditionMatch = null;

            var conditionLogicalGrouping = rule.ConditionLogicalGrouping.HasValue
                ? rule.ConditionLogicalGrouping.Value
                : LogicalGrouping.MatchAll;

            conditionMatchResult.LogincalGrouping = conditionLogicalGrouping;

            if (conditionLogicalGrouping == LogicalGrouping.MatchAll)
            {
                foreach (var condition in rule.Conditions)
                {
                    var conditionMatched = TestConditionMatch(replacements, condition, lastConditionMatch);
                    var conditionMatch   = conditionMatched.Match;
                    var conditionInput   = conditionMatched.ConditionInput;

                    conditionMatches = conditionMatch.Success;

                    if (condition.CheckIfInputString != null && condition.CheckIfInputString.Value == CheckIfInputString.DoesNotMatchThePattern)
                    {
                        conditionMatches = !conditionMatches;
                    }

                    if (conditionMatches)
                    {
                        lastConditionMatch = conditionMatch;
                        conditionMatchResult.MatchedConditions.Add(new MatchedCondition(condition, conditionInput));
                        conditionMatchResult.Matched = true;
                    }
                    else
                    {
                        conditionMatchResult.Matched = false;
                        break;
                    }
                }
            }
            else
            {
                foreach (var condition in rule.Conditions)
                {
                    var conditionMatched = TestConditionMatch(replacements, condition);
                    var conditionMatch   = conditionMatched.Match;
                    var conditionInput   = conditionMatched.ConditionInput;

                    conditionMatches = conditionMatch.Success;

                    if (condition.CheckIfInputString != null && condition.CheckIfInputString.Value == CheckIfInputString.DoesNotMatchThePattern)
                    {
                        conditionMatches = !conditionMatches;
                    }

                    if (!conditionMatches)
                    {
                        continue;
                    }

                    conditionMatchResult.MatchedConditions.Add(new MatchedCondition(condition, conditionInput));
                    lastConditionMatch           = conditionMatch;
                    conditionMatchResult.Matched = true;

                    break;
                }
            }

            return(conditionMatchResult);
        }