Ejemplo n.º 1
0
        private static bool ParseJObjectOperationTokenExpression(string query, out IJObjectTokenExpression expression)
        {
            expression = null;

            //only worth checking if string length > 3 (ie 1=1)
            if (query.Length <= 2)
            {
                return(false);
            }
            for (var i = 0; i < query.Length - 1; i++)
            {
                if (Comparators.Contains(query.Substring(i, 2))) //check current and next char
                {
                    {
                        expression = new JObjectOperationTokenExpression(query.Substring(0, i), query.Substring(i, 2), query.Substring(i + 2));
                        return(true);
                    }
                }

                if (Comparators.Contains(query.Substring(i, 1))) //check current and next char
                {
                    {
                        expression = new JObjectOperationTokenExpression(query.Substring(0, i), query.Substring(i, 1), query.Substring(i + 1));
                        return(true);
                    }
                }
            }

            return(false);
        }
Ejemplo n.º 2
0
        private static bool ParseJObjectMethodTokenExpression(string query, out IJObjectTokenExpression expression)
        {
            expression = null;
            //if it ends with a round bracket we know these have been trimmed from both ends so it must be an array method
            if (!query.EndsWith(")"))
            {
                return(false);
            }

            var queryStart = query.IndexOf('(');

            if (queryStart > -1)
            {
                var method   = query[new Range(0, queryStart)];
                var argument = query[new Range(queryStart, query.Length)];
                {
                    expression = new JObjectMethodTokenExpression(method, argument);
                    return(true);
                }
            }

            return(false);
        }
 public JObjectMethodTokenExpression(string method, string argument)
 {
     _method         = method;
     _argument       = argument;
     _rightSideLogic = JObjectTokenExpressionBuilder.GetOperatorLogic(_argument);
 }
Ejemplo n.º 4
0
        private static bool ParseJObjectLogicalOperationTokenExpression(string query, out IJObjectTokenExpression expression)
        {
            expression = null;

            //need to on finding a bracket keep going until we find the end bracket then set that as a value logic
            //the value logic can then be used and evaluated in the same way
            var bracketCount  = 0;
            var inArrayAction = 0;

            //split & | operators
            for (var i = 0; i < query.Length; i++)
            {
                var charValue = query[i];

                //handle brackets to ignore nested &|
                bracketCount  += charValue == '(' ? 1 : 0;
                bracketCount  -= charValue == ')' ? 1 : 0;
                inArrayAction += charValue == '[' ? 1 : 0;
                inArrayAction -= charValue == ']' ? 1 : 0;

                //if its not a logic operator outside of brackets carry on
                if (!Operators.Contains(charValue) || bracketCount != 0 || inArrayAction != 0)
                {
                    continue;
                }

                var l = query[new Range(0, i)];
                var o = charValue.ToString();
                var r = query[new Range(i + 1, query.Length)];
                {
                    expression = new JObjectOperationTokenExpression(l, o, r);
                    return(true);
                }
            }

            return(false);
        }
Ejemplo n.º 5
0
 public JObjectOperationTokenExpression(string leftSide, string operation, string rightSide)
 {
     _leftSideLogic  = JObjectTokenExpressionBuilder.GetOperatorLogic(leftSide);
     _operation      = operation;
     _rightSideLogic = JObjectTokenExpressionBuilder.GetOperatorLogic(rightSide);
 }