Exemple #1
0
        static int GetMaxRating(NodeRegexFlag currentReFlags)
        {
            int maxRating;

            if ((currentReFlags & NodeRegexFlag.PreceededByNotSpecific) != 0)
            {
                maxRating = RateReFlags(NodeRegexFlag.Mandatory | NodeRegexFlag.Duplicated);
            }
            else
            {
                maxRating = RateReFlags(NodeRegexFlag.Interesting | NodeRegexFlag.Conditional | NodeRegexFlag.Duplicated);
            }
            return(maxRating);
        }
Exemple #2
0
        static int RateReFlags(NodeRegexFlag flags)
        {
            var indexedFlags       = flags & (NodeRegexFlag.InterestMask | NodeRegexFlag.Conditional | NodeRegexFlag.Duplicated);
            var ratingsLookupTable = new NodeRegexFlag[] {
                NodeRegexFlag.Mandatory,
                NodeRegexFlag.Interesting,
                NodeRegexFlag.Mandatory | NodeRegexFlag.Conditional,
                NodeRegexFlag.Interesting | NodeRegexFlag.Conditional,
                NodeRegexFlag.Mandatory | NodeRegexFlag.Duplicated,
                NodeRegexFlag.Interesting | NodeRegexFlag.Duplicated,
                NodeRegexFlag.Mandatory | NodeRegexFlag.Conditional | NodeRegexFlag.Duplicated,
                NodeRegexFlag.Interesting | NodeRegexFlag.Conditional | NodeRegexFlag.Duplicated,
            };

            return(ratingsLookupTable.Select((f, i) => new { f, i }).Where(x => x.f == indexedFlags).Select(x => x.i)
                   .DefaultIfEmpty(ratingsLookupTable.Length).First());
        }