Ejemplo n.º 1
0
        private Rule FindRule(StringBuilder data)
        {
            switch (RuleSelectionPolicy)
            {
            case RuleSelectionPolicies.Ascending:
                foreach (Rule rule in Rules)
                {
                    if (data.ToString().IndexOf(rule.Original, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        return(rule);
                    }
                }

                break;

            case RuleSelectionPolicies.Descending:
                foreach (Rule rule in Rules.AsEnumerable().Reverse())
                {
                    if (data.ToString().IndexOf(rule.Original, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        return(rule);
                    }
                }
                break;

            case RuleSelectionPolicies.Random:
            {
                List <Rule> matchingRules = new List <Rule>();
                foreach (Rule rule in Rules)
                {
                    if (data.ToString().IndexOf(rule.Original, StringComparison.InvariantCultureIgnoreCase) >= 0)
                    {
                        matchingRules.Add(rule);
                    }
                }
                if (matchingRules.Count > 0)
                {
                    return(matchingRules[Rng.Next(matchingRules.Count)]);
                }
                break;
            }
            }

            return(null);
        }