public ReformatBetweenNonConstantParamsForge(IList<ExprNode> parameters) { _start = parameters[0]; _startCoercer = DatetimeLongCoercerFactory.GetCoercer(_start.Forge.EvaluationType); _end = parameters[1]; _secondCoercer = DatetimeLongCoercerFactory.GetCoercer(_end.Forge.EvaluationType); if (parameters.Count == 2) { _includeBoth = true; _includeLow = true; _includeHigh = true; } else { if (parameters[2].Forge.ForgeConstantType.IsCompileTimeConstant) { _includeLow = GetBooleanValue(parameters[2]); } else { _forgeIncludeLow = parameters[2].Forge; } if (parameters[3].Forge.ForgeConstantType.IsCompileTimeConstant) { _includeHigh = GetBooleanValue(parameters[3]); } else { _forgeIncludeHigh = parameters[3].Forge; } if (_includeLow.GetValueOrDefault(false) && _includeHigh.GetValueOrDefault(false)) { _includeBoth = true; } } }
private long GetLongValue(ExprNode exprNode) { var value = exprNode.ExprEvaluator.Evaluate(new EvaluateParams(null, true, null)); if (value == null) { throw new ExprValidationException("Date-time method 'between' requires non-null parameter values"); } return(DatetimeLongCoercerFactory.GetCoercer(value.GetType(), _timeZone).Coerce(value)); }
public ReformatOpBetweenNonConstantParams(IList <ExprNode> parameters, TimeZoneInfo timeZone) { _timeZone = timeZone; _start = parameters[0]; _startEval = _start.ExprEvaluator; _startCoercer = DatetimeLongCoercerFactory.GetCoercer(_startEval.ReturnType, timeZone); _end = parameters[1]; _endEval = _end.ExprEvaluator; _secondCoercer = DatetimeLongCoercerFactory.GetCoercer(_endEval.ReturnType, timeZone); if (parameters.Count == 2) { _includeBoth = true; _includeLow = true; _includeHigh = true; } else { if (parameters[2].IsConstantResult) { _includeLow = GetBooleanValue(parameters[2]); } else { _evalIncludeLow = parameters[2].ExprEvaluator; } if (parameters[3].IsConstantResult) { _includeHigh = GetBooleanValue(parameters[3]); } else { _evalIncludeHigh = parameters[3].ExprEvaluator; } if (_includeLow != null && _includeHigh != null && _includeLow.Value && _includeHigh.Value) { _includeBoth = true; } } }