示例#1
0
            public StringLookupComparer(StringEval se)
                : base(se)
            {

                _value = se.StringValue;
            }
 /**
  * uses the relevant flags to decode the StringEval
  * @param eval
  */
 private ValueEval XlateRefStringEval(StringEval sve)
 {
     if ((flags & REF_STRING_IS_PARSED) > 0)
     {
         String s = sve.StringValue;
         double d = OperandResolver.ParseDouble(s);
         if (double.IsNaN(d))
         {
             return ErrorEval.VALUE_INVALID;
         }
         return new NumberEval(d);
     }
     // strings are blanks
     return BlankEval.instance;
 }
示例#3
0
        /**
	 * When the second argument is a string, many things are possible
	 */
        private static I_MatchPredicate CreateGeneralMatchPredicate(StringEval stringEval)
        {
            String value = stringEval.StringValue;
            CmpOp operator1 = CmpOp.GetOperator(value);
            value = value.Substring(operator1.Length);

            bool? booleanVal = ParseBoolean(value);
            if (booleanVal != null)
            {
                return new BooleanMatcher(booleanVal.Value, operator1);
            }

            Double doubleVal = OperandResolver.ParseDouble(value);
            if (!double.IsNaN(doubleVal))
            {
                return new NumberMatcher(doubleVal, operator1);
            }
            ErrorEval ee = ParseError(value);
            if (ee != null)
            {
                return new ErrorMatcher(ee.ErrorCode, operator1);
            }

            //else - just a plain string with no interpretation.
            return new StringMatcher(value, operator1);
        }
        /**
         * uses the relevant flags to decode the StringEval
         * @param eval
         */
        private ValueEval XlateStringEval(StringEval eval)
        {

            if ((flags & STRING_IS_PARSED) > 0)
            {
                String s = eval.StringValue;
                double d = OperandResolver.ParseDouble(s);
                if (double.IsNaN(d))
                {
                    return ErrorEval.VALUE_INVALID;
                }
                return new NumberEval(d);
            }
            // strings are errors?
            if ((flags & STRING_IS_INVALID_VALUE) > 0)
            {
                return ErrorEval.VALUE_INVALID;
            }

            // ignore strings
            return XlateBlankEval(BLANK_IS_PARSED);
        }