Udger.Parser.PerlRegExpConverter.ParseRegexOptions C# (CSharp) Méthode

ParseRegexOptions() private static méthode

private static ParseRegexOptions ( StringBuilder pattern, int start, RegexOptions &dotNetOptions, PerlRegexOptions &extraOptions ) : void
pattern StringBuilder
start int
dotNetOptions RegexOptions
extraOptions PerlRegexOptions
Résultat void
        private static void ParseRegexOptions(StringBuilder pattern, int start,
          out RegexOptions dotNetOptions, out PerlRegexOptions extraOptions)
        {
            dotNetOptions = RegexOptions.None;
            extraOptions = PerlRegexOptions.None;

            for (int i = start; i < pattern.Length; i++)
            {
                char option = pattern[i];

                switch (option)
                {
                    case 'i': // PCRE_CASELESS
                        dotNetOptions |= RegexOptions.IgnoreCase;
                        break;

                    case 'm': // PCRE_MULTILINE
                        dotNetOptions |= RegexOptions.Multiline;
                        break;

                    case 's': // PCRE_DOTALL
                        dotNetOptions |= RegexOptions.Singleline;
                        break;

                    case 'x': // PCRE_EXTENDED
                        dotNetOptions |= RegexOptions.IgnorePatternWhitespace;
                        break;

                    case 'e': // evaluate as PHP code
                        extraOptions |= PerlRegexOptions.Evaluate;
                        break;

                    case 'A': // PCRE_ANCHORED
                        extraOptions |= PerlRegexOptions.Anchored;
                        break;

                    case 'D': // PCRE_DOLLAR_ENDONLY
                        extraOptions |= PerlRegexOptions.DollarMatchesEndOfStringOnly;
                        break;

                    case 'S': // spend more time studythe pattern - ignore
                        break;

                    case 'U': // PCRE_UNGREEDY
                        extraOptions |= PerlRegexOptions.Ungreedy;
                        break;

                    case 'u': // PCRE_UTF8
                        extraOptions |= PerlRegexOptions.UTF8;
                        break;
                    /*
                    case 'X': // PCRE_EXTRA
                        throw new Exception("Modifier not supported");
                       
            
                    default:
                        throw new Exception("Modifier unknown");
                    */   
                }
            }

            // inconsistent options check:
            if
            (
              (dotNetOptions & RegexOptions.Multiline) != 0 &&
              (extraOptions & PerlRegexOptions.DollarMatchesEndOfStringOnly) != 0
            )
            {
                throw new Exception("Modifier inconsistent");
            }
        }