public Query(string input) { OriginalInput = input; OriginalInputTrim = OriginalInput.Trim(); IsHelp = input == "?" || string.Equals(input, "help", StringComparison.OrdinalIgnoreCase); Structure = StructureParser.Parse(input); }
private Prefix TryMatch(string query, string prefix) { if (query.Length > prefix.Length && query.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) { var remainderString = query.Substring(prefix.Length); var parsedRemainder = StructureParser.Parse(remainderString); return(new Prefix(PrefixKind, prefix, remainderString, parsedRemainder)); } return(null); }
private static Double TryParseUnitValue(string query, int start, int length) { var parsed = StructureParser.Parse(query.Substring(start, length)); var number = StructureParser.TryGetStructure <Double>(parsed); if (number != null) { if (StructureParser.TryGetStructure <Integer>(parsed) is Integer i && i.Kind == IntegerKind.Hexadecimal) { // don't allow hex numbers with units return(null); } } return(number); }
public object TryParse(string query) { if (query.IndexOf(separatorCharArray[0]) != -1) { var parts = query.Split(separatorCharArray, StringSplitOptions.RemoveEmptyEntries); if (parts.Length == 0) { return(null); } var parsed = parts.Select(p => StructureParser.Parse(p)).ToArray(); if (parsed.Any(p => p == null)) { return(null); } return(new SeparatedList(parsed, SeparatorChar)); } return(null); }