System.Net.ShellExpression.Parse C# (CSharp) Method

Parse() private method

private Parse ( string patString ) : void
patString string
return void
        private void Parse(string patString)
        {
            pattern = new ShExpTokens[patString.Length + 2];  // 2 for the start, end
            match = null;
            int i = 0;

            pattern[i++] = ShExpTokens.Start;
            for (int j = 0; j < patString.Length; j++)
            {
                switch (patString[j])
                {
                    case '?':
                        pattern[i++] = ShExpTokens.Question;
                        break;

                    case '*':
                        pattern[i++] = ShExpTokens.Asterisk;
                        break;

                    case '^':
                        if (j < patString.Length - 1)
                        {
                            j++;
                        }
                        else
                        {
                            pattern = null;
                            if (Logging.On) Logging.PrintWarning(Logging.Web, SR.GetString(SR.net_log_shell_expression_pattern_format_warning, patString));
                            throw new FormatException(SR.GetString(SR.net_format_shexp, patString));
                        }
                        switch (patString[j])
                        {
                            case '.':
                                pattern[i++] = ShExpTokens.AugmentedDot;
                                break;

                            case '?':
                                pattern[i++] = ShExpTokens.AugmentedQuestion;
                                break;

                            case '*':
                                pattern[i++] = ShExpTokens.AugmentedAsterisk;
                                break;

                            default:
                                pattern = null;
                                if (Logging.On) Logging.PrintWarning(Logging.Web, SR.GetString(SR.net_log_shell_expression_pattern_format_warning, patString));
                                throw new FormatException(SR.GetString(SR.net_format_shexp, patString));
                        }
                        break;

                    default:
                        pattern[i++] = (ShExpTokens) (int) char.ToLowerInvariant(patString[j]);
                        break;
                }
            }

            pattern[i++] = ShExpTokens.End;
            match = new int[i];
        }
    }