Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #4
0
        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));
        }