private static List <object> GetStrings(RSqlQueryParser.ArgumentsContext argumentsContext) { var items = new List <object>(); foreach (var valueContext in argumentsContext.value()) { if (valueContext.single_quote() != null || valueContext.double_quote() != null) { var replace = valueContext.single_quote() != null ? "'" : "\""; var value = valueContext.GetText(); if (value.Length == 2) { items.Add(string.Empty); } items.Add(value.Substring(1, value.Length - 2).Replace("\\" + replace, replace)); } else { items.Add(valueContext.GetText()); } } return(items); }
public static List <object> GetNumericValues(Type type, RSqlQueryParser.ArgumentsContext argumentsContext) { if (IsByte(type)) { return(GetBytes(argumentsContext)); } if (IsShort(type)) { return(GetShorts(argumentsContext)); } if (IsLong(type)) { return(GetLongs(argumentsContext)); } if (IsFloat(type)) { return(GetFloats(argumentsContext)); } if (IsDouble(type)) { return(GetDoubles(argumentsContext)); } if (IsDecimal(type)) { return(GetDecimals(argumentsContext)); } return(GetInts(argumentsContext)); }
public static List <object> GetValues(Type type, RSqlQueryParser.ArgumentsContext argumentsContext) { if (argumentsContext?.value() == null || argumentsContext.value().Length == 0) { return(new List <object>()); } if (IsNumeric(type)) { return(GetNumericValues(type, argumentsContext)); } if (IsAlphabetic(type)) { return(GetAlphabeticValues(type, argumentsContext)); } if (IsTemporal(type)) { return(GetTemporalValues(type, argumentsContext)); } if (IsBool(type)) { return(GetBooleans(argumentsContext)); } if (IsGuid(type)) { return(GetGuids(argumentsContext)); } return(IsEnum(type) ? GetEnums(argumentsContext, type) : new List <object>()); }
public static List <object> GetAlphabeticValues(Type type, RSqlQueryParser.ArgumentsContext argumentsContext) { if (IsChar(type)) { return(GetChars(argumentsContext)); } return(GetStrings(argumentsContext)); }
public static List <object> GetTemporalValues(Type type, RSqlQueryParser.ArgumentsContext argumentsContext) { if (IsDateTimeOffset(type)) { return(GetDateTimeOffsets(argumentsContext)); } return(GetDateTimes(argumentsContext)); }
private static List <object> GetBytes(RSqlQueryParser.ArgumentsContext argumentsContext) { var items = new List <object>(); foreach (var valueContext in argumentsContext.value()) { items.Add(byte.Parse(valueContext.GetText())); } return(items); }
private static List <object> GetDecimals(RSqlQueryParser.ArgumentsContext argumentsContext) { var items = new List <object>(); foreach (var valueContext in argumentsContext.value()) { items.Add(decimal.Parse(valueContext.GetText(), CultureInfo.InvariantCulture)); } return(items); }
private static List <object> GetDateTimeOffsets(RSqlQueryParser.ArgumentsContext argumentsContext) { var items = new List <object>(); foreach (var valueContext in argumentsContext.value()) { items.Add(DateTimeOffset.Parse(valueContext.GetText(), CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)); } return(items); }
private static List <object> GetDoubles(RSqlQueryParser.ArgumentsContext argumentsContext) { var items = new List <object>(); foreach (var valueContext in argumentsContext.value()) { items.Add(double.Parse( valueContext.GetText().Replace('.', DecimalSeparator).Replace(',', DecimalSeparator), CultureInfo.InvariantCulture)); } return(items); }
private static List <object> GetEnums(RSqlQueryParser.ArgumentsContext argumentsContext, Type type) { var enumType = type.IsGenericType ? type.GetGenericArguments()[0] : type; return(argumentsContext.value() .Select(valueContext => { try { return Enum.Parse(enumType, valueContext.GetText(), true); } catch (Exception e) { throw new InvalidConversionException(valueContext, enumType, e); } } ) .ToList()); }
/// <summary> /// Visit a parse tree produced by <see cref="RSqlQueryParser.arguments"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitArguments([NotNull] RSqlQueryParser.ArgumentsContext context) { return(VisitChildren(context)); }
/// <summary> /// Exit a parse tree produced by <see cref="RSqlQueryParser.arguments"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitArguments([NotNull] RSqlQueryParser.ArgumentsContext context) { }