internal static SearchExpression ImplicitStringParser(SearchExpressionParserArgs args) { if (!args.HasOption(SearchExpressionParserFlags.ImplicitLiterals)) { return(null); } var text = args.text; if (text.Length > 2) { if (ParserUtils.IsQuote(text[0])) { if (text[0] == text[text.Length - 1]) { return(null); } } if (ParserUtils.IsOpener(text[0]) && ParserUtils.IsCloser(text[text.Length - 1])) { return(null); } } return(new SearchExpression(SearchExpressionType.Text, text, text, ConstantEvaluator)); }
internal static SearchExpression KeywordParser(SearchExpressionParserArgs args) { if (args.text.Equals(nameof(SearchExpressionKeyword.asc), System.StringComparison.OrdinalIgnoreCase) || args.text.Equals(nameof(SearchExpressionKeyword.desc), System.StringComparison.OrdinalIgnoreCase)) { return(new SearchExpression(SearchExpressionType.Keyword, args.text, ConstantEvaluator)); } return(null); }
internal static SearchExpression ExpandParser(SearchExpressionParserArgs args) { var outerText = args.text; var text = ParserUtils.SimplifyExpression(outerText); if (!text.StartsWith("...", System.StringComparison.Ordinal)) { return(null); } var expression = ParserManager.Parse(args.With(text.Substring(3))); return(new SearchExpression(expression, expression.types | SearchExpressionType.Expandable, outerText, expression.innerText)); }
internal static SearchExpression ExplicitStringParser(SearchExpressionParserArgs args) { var outerText = args.text; var text = ParserUtils.SimplifyExpression(outerText); if (text.Length < 2 || !ParserUtils.HasQuotes(text)) { return(null); } // Check for any string, since enclosed strings are not allowed, if we find a string token that means there are multiple strings in the text for (int i = 1; i < text.Length - 2; ++i) { if (ParserUtils.IsQuote(text[i])) { return(null); } } return(new SearchExpression(SearchExpressionType.Text, outerText, text.Substring(1, text.Length - 2), ConstantEvaluator)); }