Exemple #1
0
 public Query(string input)
 {
     OriginalInput     = input;
     OriginalInputTrim = OriginalInput.Trim();
     IsHelp            = input == "?" || string.Equals(input, "help", StringComparison.OrdinalIgnoreCase);
     Structure         = StructureParser.Parse(input);
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }