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); }
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); }