public void SetQuery(string query) { Query = query; if (string.IsNullOrEmpty(Query)) { throw new ArgumentException("You must provide a query.", "query"); } if (!Query.StartsWith("/")) { throw new ArgumentException("The query must begin with a \"/\".", "query"); } Tokens.Clear(); CurrentTokenIndex = -1; var escapingChar = false; TagQueryToken token = null; var sbToken = new StringBuilder(); for (var idx = 0; idx < query.Length; idx++) { if (escapingChar) { sbToken.Append(query[idx]); escapingChar = false; continue; } if (query[idx] == '/') { if (token != null) { token.Name = sbToken.ToString(); Tokens.Add(token); } token = new TagQueryToken { Query = this }; sbToken.Length = 0; continue; } if (query[idx] == '\\') { escapingChar = true; continue; } sbToken.Append(query[idx]); } if (token != null) { token.Name = sbToken.ToString(); Tokens.Add(token); } }
public void SetQuery(string query) { Query = query; if (string.IsNullOrEmpty(Query)) { throw new ArgumentException("You must provide a query.", "query"); } if (!Query.StartsWith("/")) { throw new ArgumentException("The query must begin with a \"/\".", "query"); } Tokens.Clear(); CurrentTokenIndex = -1; var escapingChar = false; TagQueryToken token = null; var sbToken = new StringBuilder(); for (var idx = 0; idx < query.Length; idx++) { if (escapingChar) { sbToken.Append(query[idx]); escapingChar = false; continue; } if (query[idx] == '/') { if (token != null) { token.Name = sbToken.ToString(); Tokens.Add(token); } token = new TagQueryToken {Query = this}; sbToken.Length = 0; continue; } if (query[idx] == '\\') { escapingChar = true; continue; } sbToken.Append(query[idx]); } if (token != null) { token.Name = sbToken.ToString(); Tokens.Add(token); } }