YamlUtility.Grammar.YamlParser.ParseEscapeSequence C# (CSharp) Method

ParseEscapeSequence() private method

private ParseEscapeSequence ( bool &success ) : char
success bool
return char
        private char ParseEscapeSequence(out bool success)
        {
            int errorCount = Errors.Count;
            char ch = default(char);

            MatchTerminalString("\\\\", out success);
            if (success) { return '\\'; }

            MatchTerminalString("\\'", out success);
            if (success) { return '\''; }

            MatchTerminalString("\\\"", out success);
            if (success) { return '\"'; }

            MatchTerminalString("\\r", out success);
            if (success) { return '\r'; }

            MatchTerminalString("\\n", out success);
            if (success) { return '\n'; }

            MatchTerminalString("\\t", out success);
            if (success) { return '\t'; }

            MatchTerminalString("\\v", out success);
            if (success) { return '\v'; }

            MatchTerminalString("\\a", out success);
            if (success) { return '\a'; }

            MatchTerminalString("\\b", out success);
            if (success) { return '\b'; }

            MatchTerminalString("\\f", out success);
            if (success) { return '\f'; }

            MatchTerminalString("\\0", out success);
            if (success) { return '\0'; }

            MatchTerminalString("\\/", out success);
            if (success) { return '/'; }

            MatchTerminalString("\\ ", out success);
            if (success) { return ' '; }

            MatchTerminalString("\\\t", out success);
            if (success) { return '	'; }

            MatchTerminalString("\\_", out success);
            if (success) { return '\u00A0'; }

            MatchTerminalString("\\e", out success);
            if (success) { return '\u001B'; }

            MatchTerminalString("\\N", out success);
            if (success) { return '\u0085'; }

            MatchTerminalString("\\L", out success);
            if (success) { return '\u2028'; }

            MatchTerminalString("\\P", out success);
            if (success) { return '\u2029'; }

            while (true)
            {
                int seq_start_position1 = position;
                MatchTerminalString("\\x", out success);
                if (!success)
                {
                    Error("Failed to parse '\\\\x' of EscapeSequence.");
                    break;
                }

                char char1 = ParseHexDigit(out success);
                if (!success)
                {
                    Error("Failed to parse char1 of EscapeSequence.");
                    position = seq_start_position1;
                    break;
                }

                char char2 = ParseHexDigit(out success);
                if (success) { return Convert.ToChar(int.Parse(String.Format("{0}{1}", char1, char2), System.Globalization.NumberStyles.HexNumber)); }
                else
                {
                    Error("Failed to parse char2 of EscapeSequence.");
                    position = seq_start_position1;
                }
                break;
            }
            if (success) { ClearError(errorCount); return ch; }

            while (true)
            {
                int seq_start_position2 = position;
                MatchTerminalString("\\u", out success);
                if (!success)
                {
                    Error("Failed to parse '\\\\u' of EscapeSequence.");
                    break;
                }

                char char1 = ParseHexDigit(out success);
                if (!success)
                {
                    Error("Failed to parse char1 of EscapeSequence.");
                    position = seq_start_position2;
                    break;
                }

                char char2 = ParseHexDigit(out success);
                if (!success)
                {
                    Error("Failed to parse char2 of EscapeSequence.");
                    position = seq_start_position2;
                    break;
                }

                char char3 = ParseHexDigit(out success);
                if (!success)
                {
                    Error("Failed to parse char3 of EscapeSequence.");
                    position = seq_start_position2;
                    break;
                }

                char char4 = ParseHexDigit(out success);
                if (success) { return Convert.ToChar(int.Parse(String.Format("{0}{1}{2}{3}", char1, char2, char3, char4), System.Globalization.NumberStyles.HexNumber)); }
                else
                {
                    Error("Failed to parse char4 of EscapeSequence.");
                    position = seq_start_position2;
                }
                break;
            }
            if (success) { ClearError(errorCount); return ch; }

            return ch;
        }
YamlParser