Esempio n. 1
0
        internal static string Extract(string q, ValueToken val, bool stripQuotes = false)
        {
            switch (val.Type)
            {
            case ValueTokenType.False:
                return("false");

            case ValueTokenType.Null:
                return("null");

            case ValueTokenType.True:
                return("true");
            }
            if (stripQuotes && val.Type == ValueTokenType.String)
            {
                return(Extract(q, val.TokenStart + 1, val.TokenLength - 2, val.EscapeChars));
            }

            return(Extract(q, val.TokenStart, val.TokenLength, val.EscapeChars));
        }
Esempio n. 2
0
        private static void WriteSimpleOperatorJavaScript(string query, TextWriter writer, string fieldName, string alias, OperatorType type, ValueToken value)
        {
            if (alias != null)
            {
                writer.Write(alias);
                writer.Write(".");
            }
            writer.Write(fieldName);
            switch (type)
            {
            case OperatorType.Equal:
                writer.Write(" == ");
                break;

            case OperatorType.NotEqual:
                writer.Write(" != ");
                break;

            case OperatorType.LessThan:
                writer.Write(" < ");
                break;

            case OperatorType.GreaterThan:
                writer.Write(" > ");
                break;

            case OperatorType.LessThanEqual:
                writer.Write(" <= ");
                break;

            case OperatorType.GreaterThanEqual:
                writer.Write(" >= ");
                break;

            default:
                ThrowInvalidType(type);
                break;
            }
            writer.Write(Extract(query, value));
        }
Esempio n. 3
0
        private bool Value(out ValueToken val)
        {
            var numberToken = Scanner.TryNumber();

            if (numberToken != null)
            {
                val = new ValueToken
                {
                    TokenStart  = Scanner.TokenStart,
                    TokenLength = Scanner.TokenLength,
                    Type        = numberToken.Value == NumberToken.Long ? ValueTokenType.Long : ValueTokenType.Double
                };
                return(true);
            }
            if (Scanner.String())
            {
                val = new ValueToken
                {
                    TokenStart  = Scanner.TokenStart,
                    TokenLength = Scanner.TokenLength,
                    Type        = ValueTokenType.String,
                    EscapeChars = Scanner.EscapeChars
                };
                return(true);
            }
            if (Scanner.TryScan(StaticValues, out var match))
            {
                val = new ValueToken
                {
                    TokenStart  = Scanner.TokenStart,
                    TokenLength = Scanner.TokenLength
                };
                switch (match)
                {
                case "true":
                    val.Type = ValueTokenType.True;
                    break;

                case "false":
                    val.Type = ValueTokenType.False;
                    break;

                case "null":
                    val.Type = ValueTokenType.Null;
                    break;
                }

                return(true);
            }

            if (Parameter(out int tokenStart, out int tokenLength))
            {
                val = new ValueToken
                {
                    TokenStart  = tokenStart,
                    TokenLength = tokenLength,
                    Type        = ValueTokenType.Parameter
                };
                return(true);
            }
            val = null;
            return(false);
        }