MongoDB.Bson.IO.JsonScanner.GetStringToken C# (CSharp) Метод

GetStringToken() приватный статический Метод

private static GetStringToken ( JsonBuffer buffer, char quoteCharacter ) : JsonToken
buffer JsonBuffer
quoteCharacter char
Результат JsonToken
        private static JsonToken GetStringToken(JsonBuffer buffer, char quoteCharacter)
        {
            // opening quote has already been read
            var start = buffer.Position - 1;
            var sb = new StringBuilder();
            while (true)
            {
                var c = buffer.Read();
                switch (c)
                {
                    case '\\':
                        c = buffer.Read();
                        switch (c)
                        {
                            case '\'': sb.Append('\''); break;
                            case '"': sb.Append('"'); break;
                            case '\\': sb.Append('\\'); break;
                            case '/': sb.Append('/'); break;
                            case 'b': sb.Append('\b'); break;
                            case 'f': sb.Append('\f'); break;
                            case 'n': sb.Append('\n'); break;
                            case 'r': sb.Append('\r'); break;
                            case 't': sb.Append('\t'); break;
                            case 'u':
                                var u1 = buffer.Read();
                                var u2 = buffer.Read();
                                var u3 = buffer.Read();
                                var u4 = buffer.Read();
                                if (u4 != -1)
                                {
                                    var hex = new string(new char[] { (char)u1, (char)u2, (char)u3, (char)u4 });
                                    var n = Convert.ToInt32(hex, 16);
                                    sb.Append((char)n);
                                }
                                break;
                            default:
                                if (c != -1)
                                {
                                    var message = string.Format("Invalid escape sequence in JSON string '\\{0}'.", (char)c);
                                    throw new Exception(message);
                                }
                                break;
                        }
                        break;
                    default:
                        if (c == quoteCharacter)
                        {
                            var lexeme = buffer.Substring(start, buffer.Position - start);
                            return new StringJsonToken(JsonTokenType.String, lexeme, sb.ToString());
                        }
                        if (c != -1)
                        {
                            sb.Append((char)c);
                        }
                        break;
                }
                if (c == -1)
                {
                    throw new Exception(FormatMessage("End of file in JSON string.", buffer, start));
                }
            }
        }