Exemplo n.º 1
0
        private static bool ParsePath(ParserState state)
        {
            string        part = state.remaining;
            StringBuilder sb   = new StringBuilder();

            int index;

            for (index = 0; index < part.Length; index++)
            {
                char ch = part [index];

                var supportsQuery = UriHelper.SupportsQuery(state.elements.scheme);

                if (ch == '#' || (supportsQuery && ch == '?'))
                {
                    break;
                }

                sb.Append(ch);
            }

            if (index <= part.Length)
            {
                state.remaining = part.Substring(index);
            }

            state.elements.path = sb.ToString();

            return(state.remaining.Length > 0);
        }
Exemplo n.º 2
0
        private static bool ParseQuery(ParserState state)
        {
            string part = state.remaining;

            if (!UriHelper.SupportsQuery(state.elements.scheme))
            {
                return(part.Length > 0);
            }

            if (part.Length == 0 || part [0] != '?')
            {
                return(part.Length > 0);
            }

            StringBuilder sb = new StringBuilder();

            int index;

            for (index = 1; index < part.Length; index++)
            {
                char ch = part [index];

                if (ch == '#')
                {
                    break;
                }

                sb.Append(ch);
            }

            if (index <= part.Length)
            {
                state.remaining = part.Substring(index);
            }

            state.elements.query = sb.ToString();

            return(state.remaining.Length > 0);
        }