String ParseQuotedString()

in edge-util/src/jsoncanonicalizer/JsonCanonicalizer.cs [307:366]


        String ParseQuotedString()
        {
            StringBuilder result = new StringBuilder();
            while (true)
            {
                char c = NextChar();
                if (c < ' ')
                {
                    throw new IOException(c == '\n' ? "Unterminated string literal" :
                        "Unescaped control character: 0x" + ((int)c).ToString("x02"));
                }
                if (c == DOUBLE_QUOTE)
                {
                    break;
                }
                if (c == BACK_SLASH)
                {
                    switch (c = NextChar())
                    {
                        case '"':
                        case '\\':
                        case '/':
                            break;

                        case 'b':
                            c = '\b';
                            break;

                        case 'f':
                            c = '\f';
                            break;

                        case 'n':
                            c = '\n';
                            break;

                        case 'r':
                            c = '\r';
                            break;

                        case 't':
                            c = '\t';
                            break;

                        case 'u':
                            c = (char)0;
                            for (int i = 0; i < 4; i++)
                            {
                                c = (char)((c << 4) + GetHexChar());
                            }
                            break;

                        default:
                            throw new IOException("Unsupported escape:" + c);
                    }
                }
                result.Append(c);
            }
            return result.ToString();
        }